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

您的位置:首頁技術文章
文章詳情頁

Python3使用 GitLab API 進行批量合并分支

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

Python3使用 GitLab API 進行批量合并分支

文章前言

每周五上午十二點前需要將項目上各組開發分支合并軟集倉庫分支, 需要在十個項目上進行 merge

程序員一般都是 很討厭麻煩, 所以編寫此腳本進行 批量 merge, 統一進行合并

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

類似于這種功能性腳本, 一般習慣使用 Python 來編寫, 通過 GitLab 提供的 REST API 進行調用

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

腳本思路

參考了網上大家提供的一部分腳本, 結合項目本身提供了此思路

在 GitLab 中獲取個人令牌 Token 獲取需要合并的項目 ID 獲取需要合并項目的來源分支以及目標分支 驗證 GitLab 對應的 Token 是否正確 進行合并請求, 失敗會刪除對應的合并請求

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

運行前準備

首先, 電腦上需要 安裝 python3 運行環境, 將對應的 import 包依賴進行下載, 最重要的就是 獲取令牌 Token

登陸進 GitLab 設置頁面, 點擊訪問令牌

我設置了中文, 不過差別不大, Token 還是很好認的

Python3使用 GitLab API 進行批量合并分支

依次輸入 Token名稱、Token有效期、以及對應的權限范圍, 將對應的 Token 復制到對應的腳本就好了

Python3使用 GitLab API 進行批量合并分支

具體實現代碼

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] 成功, 結束... rn' % target) else: mr.delete() except Exception as e: print(' >>> 合并出錯, 可能有沖突未解決或者 [%s] 分支并沒有更新, 異常信息:: rn' % source_branch, str(e)) # 把創建的 merge 請求刪除 mr.delete()if __name__ == '__main__': main()

總結

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

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 香蕉人精品视频多人免费永久视频 | 国产色婷婷精品综合在线观看 | 国产黄色片在线免费观看 | 亚洲人人视频 | 九九精| 91在线|亚洲 | 青草视频在线免费观看 | 91免费在线视频 | 国产精品免费久久 | 国产福利一区二区麻豆 | 高清一级做a爱过程免费视频 | 日韩爱爱网 | 欧美一区综合 | 91久久精一区二区三区大全 | 久久99精品久久久久久秒播放器 | 免费的污污网站 | 欧美日韩亚洲国产一区二区综合 | 亚洲成人国产精品 | 99re5精品视频在线观看 | 亚洲小说春色综合另类网蜜桃 | 日本黄色网址免费 | 久久er国产精品免费观看1 | japanese日本护士xx亚洲 | 高清无遮挡在线观看 | 国产精品成人嫩妇 | 尤物视频免费观看 | 久久综合九色综合国产 | 亚洲国产成人综合精品2020 | 九九亚洲精品 | 国产欧美日韩综合精品二区 | 国产一区二区三区欧美精品 | 免费看色片网站 | 日韩高清性爽一级毛片免费 | 麻豆成人在线 | 999久久狠狠免费精品 | 西瓜影音理论片 | 黄色一级片免费网站 | 青草视频免费观看 | 色婷婷婷丁香亚洲综合不卡 | 欧美一级做一a做片性视频 欧美一级做一级爱a做片性 | 日本二区在线观看 |