欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2020年10月15日 11:33:36   作者:麻花不是花花  
這篇文章主要介紹了Python3使用 GitLab API 進(jìn)行批量合并分支的思路詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

在這里插入圖片描述

文章前言

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

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

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

類似于這種功能性腳本, 一般習(xí)慣使用 Python 來(lái)編寫, 通過(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 包依賴進(jìn)行下載, 最重要的就是 獲取令牌 Token

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

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

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

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

import urllib.request
import gitlab

# ========================================配置開始=================================================

# ⚠️ 項(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'
# ⚠️ 需要生成自己的令牌 token
token = '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合并請(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é)束... \r\n" % target)
    else:
     mr.delete()
   except Exception as e:
    print(" >>> 合并出錯(cuò), 可能有沖突未解決或者 [%s] 分支并沒有更新, 異常信息:: \r\n" % 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)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)貪吃蛇雙人大戰(zhàn)

    python實(shí)現(xiàn)貪吃蛇雙人大戰(zhàn)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)貪吃蛇雙人大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • Python Pandas實(shí)現(xiàn)數(shù)據(jù)分組求平均值并填充nan的示例

    Python Pandas實(shí)現(xiàn)數(shù)據(jù)分組求平均值并填充nan的示例

    今天小編就為大家分享一篇Python Pandas實(shí)現(xiàn)數(shù)據(jù)分組求平均值并填充nan的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • Python的函數(shù)使用示例詳解

    Python的函數(shù)使用示例詳解

    在Python的函數(shù)中,我們將其分為內(nèi)置函數(shù)、自定義函數(shù)、main函數(shù)三個(gè)模塊,當(dāng)然,使用的過(guò)程中會(huì)涉及到變量以及參數(shù),這些都會(huì)舉例進(jìn)行說(shuō)明,對(duì)Python函數(shù)使用相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • Python中字節(jié)數(shù)組和16進(jìn)制字符串轉(zhuǎn)換方式

    Python中字節(jié)數(shù)組和16進(jìn)制字符串轉(zhuǎn)換方式

    這篇文章主要介紹了Python中字節(jié)數(shù)組和16進(jìn)制字符串轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Python學(xué)習(xí)筆記之函數(shù)的參數(shù)和返回值的使用

    Python學(xué)習(xí)筆記之函數(shù)的參數(shù)和返回值的使用

    這篇文章主要介紹了Python學(xué)習(xí)筆記之函數(shù)的參數(shù)和返回值的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 使用qt quick-ListView仿微信好友列表和聊天列表的示例代碼

    使用qt quick-ListView仿微信好友列表和聊天列表的示例代碼

    本文以微信好友列表為例給大家學(xué)習(xí)listview的相關(guān)知識(shí),通過(guò)實(shí)例demo給大家詳解qt quick-ListView仿微信好友列表和聊天列表的實(shí)現(xiàn)方法,需要的朋友參考下吧
    2021-06-06
  • python第三方庫(kù)subprocess執(zhí)行cmd同時(shí)輸入密碼獲取參數(shù)

    python第三方庫(kù)subprocess執(zhí)行cmd同時(shí)輸入密碼獲取參數(shù)

    本文給大家介紹python subprocess執(zhí)行cmd同時(shí)輸入密碼獲取參數(shù),手動(dòng)輸入cmd命令,本文給大家逐一介紹這個(gè)命令的使用方法,感興趣的朋友跟隨小編一起看看吧
    2024-01-01
  • Python實(shí)現(xiàn)矩陣運(yùn)算的方法代碼實(shí)例

    Python實(shí)現(xiàn)矩陣運(yùn)算的方法代碼實(shí)例

    這篇文章主要介紹了Python實(shí)現(xiàn)矩陣運(yùn)算的方法代碼實(shí)例,想用python實(shí)現(xiàn)一個(gè)矩陣類,它可以像matlab或者numpy中的矩陣一樣進(jìn)行運(yùn)算,生成一個(gè)矩陣類Matrix之后,他接收一個(gè)二維列表作為輸入,然后將對(duì)應(yīng)的值寫到矩陣對(duì)應(yīng)的位置,需要的朋友可以參考下
    2023-08-08
  • Python+OpenCV實(shí)現(xiàn)分水嶺分割算法的示例代碼

    Python+OpenCV實(shí)現(xiàn)分水嶺分割算法的示例代碼

    分水嶺算法是用于分割的經(jīng)典算法,在提取圖像中粘連或重疊的對(duì)象時(shí)特別有用。本文將用Python+OpenCV實(shí)現(xiàn)這一算法,需要的可以參考一下
    2022-08-08
  • pytorch dataloader 取batch_size時(shí)候出現(xiàn)bug的解決方式

    pytorch dataloader 取batch_size時(shí)候出現(xiàn)bug的解決方式

    今天小編就為大家分享一篇pytorch dataloader 取batch_size時(shí)候出現(xiàn)bug的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02

最新評(píng)論