3天學會Jenkins_11_gitlab or github程式碼提交後自動構建2
- 2019 年 12 月 23 日
- 筆記
轉載註明出處
上一節「gitlab or github程式碼提交後自動構建1」中簡單使用了Pipeline script
的方式去構建Pipeline流程,這一節使用Pipeline script from SCM
的方式去實現自動構建,即將Jenkinsfile與源碼一同進行版本管理。
1 準備
根據上一節「gitlab or github程式碼提交後自動構建1」中安裝好Gitlab插件並配置好Webhook,最後我們在Gitlab項目倉庫根目錄中新建Jenkinsfile
文件,這次演示Jenkinsfile文件主要做的功能就是編譯和執行一個shell腳本。
同樣的也是新建一個Pipeline項目,其他設置保持默認,需要配置的有:
- Build Triggers
- Build when a change is pushed to GitLab(保持與上一節一致,配置好Webhook)
- Pipeline
^(?!origin/master$|origin/develop$).*
【配置除了master和develop分支外所有分支】*/${gitlabSourceBranch}
【利用Gitlab插件環境變數,匹配所觸發hook的提交分支】- 選擇
Pipeline script from SCM
- SCM 選擇Git
- 配置好倉庫地址和認證方式
- Branches to build(這裡需要注意配置,因為我們可以配置成編譯多個分支處理或者單個分支)
- Additional Behaviours 無需添加
- Lightweight checkout 去掉勾選
⚠️這裡出現一個很奇怪的問題,儘管
Branches to build
里配置了除master和develop分支外build所有分支,但是總是無法獲取後面最新提交的程式碼,勾選或者不勾選Lightweight checkout
也沒啥用,最後還是依靠Gitlab插件的環境變數gitlabSourceBranch
來解決的。

2 Jenkinsfile
將Jenkinsfile
放入項目根目錄,然後另外新建auto_test.sh
腳本文件。當提交程式碼到gitlab遠程倉庫時,會通過配置的hook自動觸發Pipeline構建,執行Jenkensfile
文件。
pipeline { agent any stages { stage('Build') { steps { sh 'bash auto_test.sh' } } } }
auto_test.sh:
#!/bin/bash test() { echo "start to test" # do something... } test
自此就配置完成,在自動執行腳本里可以做你任何想要做的事情,後面進一步可以對Jenkinsfile
進行編輯,包括測試、發布等。
3 參考
- https://github.com/jenkinsci/gitlab-plugin#defined-variables
- https://stackoverflow.com/questions/25774895/jenkins-git-plugin-not-pulling-latest-changes-before-building-job