Jenkins透過 Generic Webhook Trigger 指定特定的 git branch push 才會run job , 以 Bitbucket 為例

每次 git push Jenkins Job 都會重新執行

對於之前小的項目,或是開發中的code,不想每次都deploy,
所以就想要透過 git branch去控制,那個branch push 才去run job

git 先建立新的branch

我們先創建一個git branch,這個新的branch,就是用來trigger Jenkins JOB的,
那我這邊就用 release/prod 為例

先去安裝 Generic Webhook Trigger

  1. 到Jenkins首頁
  2. 到 manage (管理 Jenkins) 頁
  3. pluginManager(外掛程式管理) 頁
  4. 選擇可用的 tab
  5. 搜尋Generic Webhook Trigger
  6. 安裝

在bitbucket git project 設定

  1. 打開git project 的 web 頁面
  2. 到Repository settings頁面 (ex : https://bitbucket.org/xxxxxxx/admin)
  3. 選擇 webhooks 設定
  4. 點擊 Add webhook
  5. Title --> 隨便取 , URL :http://{username}:{usertoken}@{JenkinsHost}/generic-webhook-trigger/invoke usertoken 請參考:https://ddtwork.blogspot.com/2020/07/jenkins-git-cdwebhooks-bitbucket.html
  6. Request History :Enable request history collection
  7. Save

先來push 一個新的commit 到新的branch

  1. push完後
  2. 一樣到bitbucket webhooks 的頁面
  3. 點選剛才設定的 webhook 的 View requests
  4. 點選剛最新的event的View details (這是剛才push所發的event)
  5. 點開 Body > Show request body
  6. 可以看到以下內容
{
  ...
  "push": {
    "changes": [
      {
        "new": {
            ....
          "name": "release/prod"
          ...
        }
      }
    ]
  },
  ....
  "repository": {
  
  ....
    "name": "P2CCloud"
  }
} 
我們之後就要透過 bitbucket的這兩個值,來判斷 branch和repository

創建Job

  1. 創建一個新的或使編輯一個Job
  2. 到該Job configure(組態)頁面
  3. 建置觸發程序(trigger)的章節
  4. 新增兩組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
  1. 到Optional filter的章節
    5.1 Expression 的值 : {你的branch名稱}__{你的repository名稱} Ex:(release\/prod__P2CCloud)
    5.2 Text 輸入 : $branch__$repository

大功告成

後面就可以照之前寫需要的Job setting,
之後只有這個branch push 的event 才會被 run!!!



md code :

留言

這個網誌中的熱門文章

Google Map 單車路徑計算坡度和角度小工具

angular 如何Http 如何設定 CORS (Cross-Origin Resource Sharing)