运行前准备
首先, 电脑上需要 安装 python3 运行环境, 将对应的 import 包依赖进行下载, 最重要的就是 获取令牌 Token
登陆进 GitLab 设置页面, 点击访问令牌
我设置了中文, 不过差别不大, Token 还是很好认的

依次输入 Token名称、Token有效期、以及对应的权限范围, 将对应的 Token 复制到对应的脚本就好了

具体实现代码
import urllib.request
import gitlab
# ========================================配置开始=================================================
# ⚠️ 项目名, 无实际意义
project_name = "xxxx"
# ⚠️ 代表多个项目 ID, 平常一个项目即可, 多个项目需要保证 source_branch、target_branches 保持一致
project_id_list = ['xxxx']
# ⚠️ 生成 gitlab 对象
gitlab_url = 'xxxx'
# ⚠️ 需要生成自己的令牌 token
token = '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()