国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

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

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

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

文章前言

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

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

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

類(lèi)似于這種功能性腳本, 一般習(xí)慣使用 Python 來(lái)編寫(xiě), 通過(guò) 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)目的來(lái)源分支以及目標(biāo)分支 驗(yàn)證 GitLab 對(duì)應(yīng)的 Token 是否正確 進(jìn)行合并請(qǐng)求, 失敗會(huì)刪除對(duì)應(yīng)的合并請(qǐng)求

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

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

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

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

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

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

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

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

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

import urllib.requestimport gitlab# ========================================配置開(kāi)始=================================================# ⚠️ 項(xiàng)目名, 無(wú)實(shí)際意義project_name = 'xxxx'# ⚠️ 代表多個(gè)項(xiàng)目 ID, 平常一個(gè)項(xiàng)目即可, 多個(gè)項(xiàng)目需要保證 source_branch、target_branches 保持一致project_id_list = [’xxxx’]# ⚠️ 生成 gitlab 對(duì)象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)目名稱(chēng) :: [%s] ’ % (str(project.id), project_name)) for target in target_branches: print(' >>> 正在合并項(xiàng)目 :: [%s] 的 [%s] 分支到 [%s] 分支' % (project_name, source_branch, target)) # mr合并請(qǐng)求的對(duì)象 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) }) # 接受合并請(qǐng)求 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)目訪問(wèn)令牌, 添加至請(qǐ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] 分支并沒(méi)有更新, 異常信息:: rn' % source_branch, str(e)) # 把創(chuàng)建的 merge 請(qǐng)求刪除 mr.delete()if __name__ == '__main__': main()

總結(jié)

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

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 99九九99九九九视频精品 | 久久国产免费观看精品3 | 久久99精品久久久久久青青91 | 午夜宅男在线永久免费观看网 | 久久99久久精品视频 | 成人18免费网站在线观看 | 大伊香蕉精品视频在线观看 | 国产真实乱系列2孕妇 | 一区二区三区免费视频 www | 久久草在线精品 | 欧美极品大肚孕妇孕交 | 99视频国产精品 | 久久亚洲精品中文字幕三区 | 在线视频久久 | 草草视频在线免费观看 | 九九热爱视频精品视频高清 | 久久精品国产午夜伦班片 | 狠狠色丁香九九婷婷综合五月 | 国产一区亚洲二区三区 | 亚洲欧洲国产精品 | 成人免费午夜性视频 | 免费久草视频 | 女人让男人桶的小视频 | 免费人成在线观看网站视频 | 中文字幕视频网 | 99aiav国产精品视频 | 国产高清在线免费视频 | 特黄特黄 | 一级a爰片久久毛片 | 最新国产精品亚洲 | 午夜性爽视频男人的天堂在线 | 黄色成人在线网站 | 99在线视频网站 | 久草免费在线观看视频 | 国产精品亚洲午夜不卡 | 亚洲精品高清视频 | 中文字幕亚洲一区二区三区 | 欧美日韩免费做爰视频 | 久久99国产一区二区三区 | 瑟瑟网站在线观看 | 久久久久亚洲视频 |