本文告訴大家如何在 Jenkins 配置合並到 release 的內容自動合並到 gitlab 的 master 分支
首先需要兩個倉庫,一個是 gitlab 的倉庫,另一個是 Jenkins 的倉庫
先在 Jenkins 倉庫做配置,首先設置 Source Code Management 選擇自己需要的倉庫和設置好的賬號
然后在 Branches to build 添加分支,這里需要將 release 合 master 所以就填寫 release 就可以
在 Additional Behaviours 添加三個值,一個是 Clean before checkout 這樣可以清空倉庫,第二個是 Prune stale remote-tracking branches 讓本地和遠程同步。
注意,第二個 Prune stale remote-tracking branches 很重要,如果有小伙伴上傳了這樣兩個分支
t/lindexi
t/lindexi/github
那么即使小伙伴在上傳第一個分支之后,刪除了第一個分支再上傳第二個分支,可能 Jenkins 也無法加載
第三個就是 Merge before build 請看圖片,設置倉庫是哪個,設置推送的分支
為了在用戶推送的時候合並,就需要在 Build Triggers 添加 Build when a change is pushed to GitLab. 這樣就可以添加 web hook 在打鈎之后可以看到下面有一個鏈接,如下面是我的鏈接,這個鏈接會在之后設置到 gitlab 所以暫時需要記下
https://newci.gz.lindexi.cn/project/lindexi/github_merge_release_to_dev
這里可以通過很多個設置,在 Push Events
執行這個倉庫或者在 Accepted Merge Request Events
執行,可以全部打鈎
下面就是 Build 這里可以寫編譯的內容,我下面執行了一些代碼
只有在編譯成功我才可以讓 release 合並到 master 分支,如果編譯不成功就不能合並
在 Post-build Actions 添加 Git Publisher 功能,第一個是 Push Only If Build Succeeds 也就是在上面的 Build 編譯成功之后才會執行
點擊 Add Branch 添加一個新的合並分支,需要從 release 合並到 master 就可以和我下面一樣寫,如果是從 release 合並到 dev 分支就自己在下面寫 dev 就可以
點擊保存就設置完成,下面就是設置 gitlab 讓 gitlab 可以支持 Jenkins 推送
點擊設置成員,添加 Jenkins 成員
點擊 Integrations 添加 webhook 這里需要填寫剛才 Jenkins 的鏈接,我的鏈接是 https://newci.gz.lindexi.cn/project/lindexi/github_merge_release_to_dev 大家可不要沒事就來攻擊我的服務器
填寫之后需要勾選 Push events 這樣有人上傳就可以自動合並 release 到 master 而不需要自己手動合並
在添加之后可以看到有 Test 按鈕,點擊可以模擬一個 push 的測試
點擊測試看 Jenkins 是否自動執行,如果有就是設置成功
可能因為合並的 master 分支沒有推送,需要點擊 repository 設置 Protected Branches 允許 maintainers 推送,設置 Jenkins 的賬號是 maintainers 這樣就可以推送
可能這時會發現沒有 GitLab: This deploy key does not have write access to this project
可以在 repository 設置 Deploy Keys 請看下面
具體設置請看 Using GIT deploy key in Jenkins
使用jenkins+gitlab進行CI - haungtengxiao
我搭建了自己的博客 https://blog.lindexi.com/ 歡迎大家訪問,里面有很多新的博客。只有在我看到博客寫成熟之后才會放在csdn或博客園,但是一旦發布了就不再更新
如果在博客看到有任何不懂的,歡迎交流,我搭建了 dotnet 職業技術學院 歡迎大家加入
本作品采用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。歡迎轉載、使用、重新發布,但務必保留文章署名林德熙(包含鏈接:http://blog.csdn.net/lindexi_gd ),不得用於商業目的,基於本文修改后的作品務必以相同的許可發布。如有任何疑問,請與我聯系。