亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

Python3使用 GitLab API 進(jìn)行批量合并分支

瀏覽:5日期:2022-07-08 10:39:12

Python3使用 GitLab API 進(jìn)行批量合并分支

文章前言

每周五上午十二點(diǎn)前需要將項(xiàng)目上各組開發(fā)分支合并軟集倉庫分支, 需要在十個(gè)項(xiàng)目上進(jìn)行 merge

程序員一般都是 很討厭麻煩, 所以編寫此腳本進(jìn)行 批量 merge, 統(tǒng)一進(jìn)行合并

另外, 如果項(xiàng)目經(jīng)歷上線或者修復(fù) bug 等情況, 需要合并分支至 uat、release、master 等分支, 也是能夠滿足此腳本使用情況

類似于這種功能性腳本, 一般習(xí)慣使用 Python 來編寫, 通過 GitLab 提供的 REST API 進(jìn)行調(diào)用

GitLab 提供了非常豐富的 REST API 操作, 大家可以搜索官方網(wǎng)址查看

腳本思路

參考了網(wǎng)上大家提供的一部分腳本, 結(jié)合項(xiàng)目本身提供了此思路

在 GitLab 中獲取個(gè)人令牌 Token 獲取需要合并的項(xiàng)目 ID 獲取需要合并項(xiàng)目的來源分支以及目標(biāo)分支 驗(yàn)證 GitLab 對應(yīng)的 Token 是否正確 進(jìn)行合并請求, 失敗會(huì)刪除對應(yīng)的合并請求

在網(wǎng)上找到的大部分執(zhí)行不成功, 可能在之前是可以成功的, 但是隨著 GitLab 的 API 3->4 升級, 網(wǎng)上大部分腳本都執(zhí)行失敗了

運(yùn)行前準(zhǔn)備

首先, 電腦上需要 安裝 python3 運(yùn)行環(huán)境, 將對應(yīng)的 import 包依賴進(jìn)行下載, 最重要的就是 獲取令牌 Token

登陸進(jìn) GitLab 設(shè)置頁面, 點(diǎn)擊訪問令牌

我設(shè)置了中文, 不過差別不大, Token 還是很好認(rèn)的

Python3使用 GitLab API 進(jìn)行批量合并分支

依次輸入 Token名稱、Token有效期、以及對應(yīng)的權(quán)限范圍, 將對應(yīng)的 Token 復(fù)制到對應(yīng)的腳本就好了

Python3使用 GitLab API 進(jìn)行批量合并分支

具體實(shí)現(xiàn)代碼

import urllib.requestimport gitlab# ========================================配置開始=================================================# ⚠️ 項(xiàng)目名, 無實(shí)際意義project_name = 'xxxx'# ⚠️ 代表多個(gè)項(xiàng)目 ID, 平常一個(gè)項(xiàng)目即可, 多個(gè)項(xiàng)目需要保證 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’]# =========================================配置結(jié)束================================================# 驗(yàn)證登錄gl = gitlab.Gitlab(gitlab_url, token)def main(): for project_id in project_id_list: project = gl.projects.get(project_id) print(’ >>> 項(xiàng)目ID :: [%s], 項(xiàng)目名稱 :: [%s] ’ % (str(project.id), project_name)) for target in target_branches: print(' >>> 正在合并項(xiàng)目 :: [%s] 的 [%s] 分支到 [%s] 分支' % (project_name, source_branch, target)) # mr合并請求的對象 mr = None try: # 創(chuàng)建 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)) # 個(gè)人/項(xiàng)目訪問令牌, 添加至請求頭 headers = {'PRIVATE-TOKEN': token} req = urllib.request.Request(url=url, headers=headers, method='PUT') resp = urllib.request.urlopen(req) if resp.code == 200: print(' >>> 合并到目標(biāo)分支 [%s] 成功, 結(jié)束... rn' % target) else: mr.delete() except Exception as e: print(' >>> 合并出錯(cuò), 可能有沖突未解決或者 [%s] 分支并沒有更新, 異常信息:: rn' % source_branch, str(e)) # 把創(chuàng)建的 merge 請求刪除 mr.delete()if __name__ == '__main__': main()

總結(jié)

到此這篇關(guān)于Python3使用 GitLab API 進(jìn)行批量合并分支的文章就介紹到這了,更多相關(guān)Python合并分支內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 99精品久久秒播无毒不卡 | 91免费看视频 | 成人精品一区二区激情 | 成人三级在线播放线观看 | 在线亚洲精品自拍 | 在线观看一级毛片免费 | 成人在线观看国产 | 伊人久久大香线焦综合四虎 | 国产成人精品免费视频大全五级 | 免费播放国产性色生活片 | 极品销魂一区二区三区 | 免费国产成人 | 欧美成人免费网在线观看 | 久久精品国产99精品国产2021 | 欧美色成人tv在线播放 | 亚洲欧美一区二区久久 | 慈禧级淫片a级中文在线 | 99视频精品全国免费 | 久久中文字幕网站篠田优 | 狠狠色狠狠色综合婷婷tag | 国内一级特黄女人精品毛片 | 久久在线国产 | 国产网红主播chinese | 日本黄色一级 | 九草视频在线 | 成 人 黄 色 大 片全部 | 国产欧美精品专区一区二区 | 在线观看免费视频黄 | 黄色片三 | 日本无吗中文字幕免费婷婷 | 大尺度一级毛片波多野结衣 | 成人高清毛片a | 成人亚洲精品777777 | 国产美女久久久久久久久久久 | 亚洲色图日韩 | 久久在线免费观看视频 | 亚洲欧美日韩国产 | 国产在线观看的 | 能免费观看的韩剧 | 激情三级hd中文字幕 | 国产乱码精品一区二区三区四川 |