时间:2021-05-23
文章前言
每周五上午十二点前需要将项目上各组开发分支合并软集仓库分支,需要在十个项目上进行 merge
程序员一般都是很讨厌麻烦, 所以编写此脚本进行 批量 merge, 统一进行合并
另外, 如果项目经历上线或者修复 bug 等情况, 需要合并分支至 uat、release、master 等分支, 也是能够满足此脚本使用情况
类似于这种功能性脚本, 一般习惯使用 Python 来编写, 通过 GitLab 提供的 REST API 进行调用
GitLab 提供了非常丰富的 REST API 操作, 大家可以搜索官方网址查看
脚本思路
参考了网上大家提供的一部分脚本, 结合项目本身提供了此思路
在网上找到的大部分执行不成功,可能在之前是可以成功的, 但是随着 GitLab 的 API 3->4 升级, 网上大部分脚本都执行失败了
运行前准备
首先, 电脑上需要 安装 python3 运行环境, 将对应的 import 包依赖进行下载, 最重要的就是 获取令牌 Token
登陆进 GitLab 设置页面, 点击访问令牌
我设置了中文, 不过差别不大, Token 还是很好认的
依次输入 Token名称、Token有效期、以及对应的权限范围, 将对应的 Token 复制到对应的脚本就好了
具体实现代码
import urllib.requestimport gitlab# ========================================配置开始=================================================# ⚠️ 项目名, 无实际意义project_name = "xxxx"# ⚠️ 代表多个项目 ID, 平常一个项目即可, 多个项目需要保证 source_branch、target_branches 保持一致project_id_list = ['xxxx']# ⚠️ 生成 gitlab 对象gitlab_url = 'xxxx'# ⚠️ 需要生成自己的令牌 tokentoken = 'xxxx'# ⚠️ 将 source_branch 分支 merge target_branches 分支集上source_branch = 'test'target_branches = ['master']# =========================================配置结束================================================# 验证登录gl = gitlab.Gitlab(gitlab_url, token)def main(): for project_id in project_id_list: project = gl.projects.get(project_id) print(' >>> 项目ID :: [%s], 项目名称 :: [%s] ' % (str(project.id), project_name)) for target in target_branches: print(" >>> 正在合并项目 :: [%s] 的 [%s] 分支到 [%s] 分支" % (project_name, source_branch, target)) # mr合并请求的对象 mr = None try: # 创建 merge request mr = project.mergerequests.create({'source_branch': source_branch, 'target_branch': target, 'title': "Merge branch '%s' into '%s'" % ( source_branch, target) }) # 接受合并请求 url = '%s/api/v4/projects/%s/merge_requests/%s/merge' % (gitlab_url, project.id, mr.iid) print(' >>> Merge url :: [%s], title :: [%s] ' % (url, mr.title)) # 个人/项目访问令牌, 添加至请求头 headers = {"PRIVATE-TOKEN": token} req = urllib.request.Request(url=url, headers=headers, method="PUT") resp = urllib.request.urlopen(req) if resp.code == 200: print(" >>> 合并到目标分支 [%s] 成功, 结束... \r\n" % target) else: mr.delete() except Exception as e: print(" >>> 合并出错, 可能有冲突未解决或者 [%s] 分支并没有更新, 异常信息:: \r\n" % source_branch, str(e)) # 把创建的 merge 请求删除 mr.delete()if __name__ == "__main__": main()总结
到此这篇关于Python3使用 GitLab API 进行批量合并分支的文章就介绍到这了,更多相关Python合并分支内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
详解PythonMD5加密Python3下MD5加密#由于MD5模块在python3中被移除#在python3中使用hashlib模块进行md5操作import
由于历史原因,Python有两个大的版本分支,Python2和Python3,又由于一些库只支持某个版本分支,所以需要在电脑上同时安装Python2和Pytho
本文主要利用python的相关模块进行批量ping,测试IP连通性。下面看具体代码(python3):'''遇到问题没人解答?小编创建了一个Python学习交流
这篇文章主要介绍了Python如何使用GitlabAPI实现批量的合并分支,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
python3批量删除豆瓣分组下的好友的实现代码"""python3批量删除豆瓣分组下的好友2016年6月7日03:43:42codegay我两年前一时冲动在豆