文章目錄
Git webhook 如何驅動 Jenkins 的參數化建置 (Build with Parameters)
之前文章 Jenkins 2 將其他 job 名稱變成可選擇的參數、Jenkins 2 如何建立 Pipeline job 曾經簡單地介紹過模組化 build flow 的想法,透過參數化建置 (Build with Parameters) 達成使用相同 job 執行不同 project 的建置
但這樣的做法在設定 webhook 執行 Continuous integration - CI build 時需要額外在 Git Server 的 Repository 上動些手腳,就來看看該如何設定
Jenkins Job 基本設定
有個名為
JobName
的 String Parameter記得設定 Source Code Management
Build Triggers 有 Trigger builds remotely (e.g., from scripts)
簡單的印出上述參數
Jenkins 2 上的 webhook 設定
這邊就不重複贅述,請大家直接參考之前文章 遠端 Git Repository 有 merge 時自動通知 Jenkins 2 進行編譯建置 (webhook)
需要留意的是 Jenkins 上關於 webhook 的說明
Use the following URL to trigger build remotely: JENKINS_URL/job/A01-TestDev/build?token=TOKEN_NAME or /buildWithParameters?token=TOKEN_NAME Optionally append &cause=Cause+Text to provide text that will be included in the recorded build cause.
Git Server 的 webhook 設定
今天會使用 gitlab 做為範例
Git Repository –> Setting –> Integrations
URL
pattern
http://{jenkins_Url}/job/{job_name}/buildWithParameters?token={token}&{ParameterName}={ParameterValue}
範例
http://127.0.0.1/job/A02-TestQA/buildWithParameters?token=39296d67-6750-45ab&JobName=fromGitLab
如果執行 webhook 時有 Jenkins 權限上問題請試試使用 API TOKEN
- Jenkins People –> User Id
- Configure –> API Token
用法
http://{user_id}:{token}@{jenkins_Url}/job/{job_name}/buildWithParameters?token={token}&{ParameterName}={ParameterValue}
實測下 URL 中的 token 如果太長無法正確執行
Trigger
請依實際使用的 trigger 來挑選
SSL verification
預設啟用 SSL,沒有 SSL 記得取消
設定完成後可以測試執行
執行測試
成功發出 webhook
Jenkins 執行 build
建置結果
心得
原本需要參數的 job 會直接使用參數預設值來進行建置而造成結果不如預期,但透過 webhook 的 url 設定就可以傳遞參數給本需要參數才能建置的 job 直接進行 build 這樣一來就不用為了 webhook 修改原本的 build job,讓模組化 CI 更往前了一步
參考資訊
文章作者 Yowko Tsai
上次更新 2021-10-08
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。