python-gitlab实现jira流程自动化建仓并创建组加入

jira中issue状态的改变触发Jenkins构建配置请参考:

配置参考这里icon-default.png?t=LA92https://blog.csdn.net/yan1234abcd/article/details/52131223

脚本是基于python3环境,需pip安装python-gitlab,jira库

脚本比较简单,实现:获取jira流程里面仓库名字段,组字段,组成员信息字段,通过gitlab的api创建仓库,创建组,并把组成员加入到组里,项目加入到组里。请上代码:

#!/usr/bin/env python

from jira import JIRA
import gitlab, os

#登录gitlab
def login_gitlab(url, token):
    Gitlab = gitlab.Gitlab(url, token)
    return Gitlab

#登录jira
def login_jira(username, password):
    jira = JIRA("http://jira.xxxooo.com.cn", basic_auth=(username, password))
    return jira


def create_project(gl, project_name, description=None):
    # 创建项目

    if description:
        res = gl.projects.create({"name": project_name, "description": description})
    else:
        res = gl.projects.create({"name": project_name, })
        #res.project.branches.create({'branch': 'dev', 'ref': 'master'})
    return res

#创建组
def create_group(gl, group_name, project_name):
    group = gl.groups.create({'name': group_name, 'path': group_name})
    project_id = gl.projects.list(search=project_name)[0].id
    project = gl.projects.get(project_id)
    if group_name.split('_')[-1] == 'master':
        #把项目加入到组里
        project.share(group.id, gitlab.MAINTAINER_ACCESS)
        #把成员加入到组里
        for i in master_values:
            master_name = i.name
            user = gl.users.list(username=master_name)[0]
            group.members.create({'user_id': user.id,
                                            'access_level': gitlab.MAINTAINER_ACCESS})
    else:
        #把成员加入到组里
        project.share(group.id, gitlab.DEVELOPER_ACCESS)
        #把成员加入到组里
        for i in developer_values:
            developer_name = i.name
            user = gl.users.list(username=developer_name)[0]
            group.members.create({'user_id': user.id,
                                            'access_level': gitlab.DEVELOPER_ACCESS})





if __name__ == '__main__':
    url = "http://0.0.0.0/"
    token = "gitlab_token"
    gl = login_gitlab(url, token)

    username = "jira_user"
    password = "jira_passwd"
    jira = login_jira(username, password)

    #jira钩子传过来的issue的key
    scm_key = os.environ['JIRA_ISSUE_KEY']
    issue = jira.issue(scm_key)
    # 需创建的项目名
    repo_name = issue.fields.customfield_10784
    #master权限成员
    master_values = issue.fields.customfield_11106
    #开发权限成员
    developer_values = issue.fields.customfield_11107
    # 需创建的组名
    group_m = repo_name + '_master'
    group_d = repo_name + '_developer'

    print('开始创建%s' % repo_name)
    create_project(gl, repo_name)

    print('开始创建master的group,并添加到仓库。\n')
    create_group(gl, group_m, repo_name)

    print('开始创建developer的group,并添加到仓库。')
    create_group(gl, group_d, repo_name)


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值