Jenkins透過 Generic Webhook Trigger 指定特定的 git branch push 才會run job , 以 Bitbucket 為例
每次 git push Jenkins Job 都會重新執行
對於之前小的項目,或是開發中的code,不想每次都deploy,
所以就想要透過 git branch去控制,那個branch push 才去run job
所以就想要透過 git branch去控制,那個branch push 才去run job
git 先建立新的branch
我們先創建一個git branch,這個新的branch,就是用來trigger Jenkins JOB的,
那我這邊就用
那我這邊就用
release/prod
為例先去安裝 Generic Webhook Trigger
- 到Jenkins首頁
- 到 manage (管理 Jenkins) 頁
- pluginManager(外掛程式管理) 頁
- 選擇可用的 tab
- 搜尋Generic Webhook Trigger
- 安裝
在bitbucket git project 設定
- 打開git project 的 web 頁面
- 到Repository settings頁面 (ex :
https://bitbucket.org/xxxxxxx/admin
) - 選擇 webhooks 設定
- 點擊
Add webhook
- Title --> 隨便取 , URL :
http://{username}:{usertoken}@{JenkinsHost}/generic-webhook-trigger/invoke
usertoken 請參考:https://ddtwork.blogspot.com/2020/07/jenkins-git-cdwebhooks-bitbucket.html - Request History :Enable request history collection
- Save
先來push 一個新的commit 到新的branch
- push完後
- 一樣到bitbucket webhooks 的頁面
- 點選剛才設定的 webhook 的 View requests
- 點選剛最新的event的View details (這是剛才push所發的event)
- 點開 Body > Show request body
- 可以看到以下內容
{
...
"push": {
"changes": [
{
"new": {
....
"name": "release/prod"
...
}
}
]
},
....
"repository": {
....
"name": "P2CCloud"
}
}
我們之後就要透過 bitbucket的這兩個值,來判斷 branch和repository
創建Job
- 創建一個新的或使編輯一個Job
- 到該Job configure(組態)頁面
- 到
建置觸發程序(trigger)
的章節 - 新增兩組
Post content parameters
4.1 Variable :branch
Expression :$.push.changes[0].new.name
4.2 Variable :repository
Expression :$.repository.name
4.3 兩組都設定為JSONPath
Expression的規則是透過bitbucket回傳的Json,來制定的 可參考 https://github.com/jayway/JsonPath
- 到Optional filter的章節
5.1 Expression 的值 :{你的branch名稱}__{你的repository名稱}
Ex:(release\/prod__P2CCloud
)
5.2 Text 輸入 :$branch__$repository
大功告成
後面就可以照之前寫需要的Job setting,
之後只有這個branch push 的event 才會被 run!!!
之後只有這個branch push 的event 才會被 run!!!
md code :
留言
張貼留言