簡體   English   中英

Jenkins git scm 觸發構建上的分支選擇

[英]Jenkins git branch selection on scm triggered builds

我已經閱讀了 git 插件文檔以及這里的幾個問題,但並沒有真正了解 git 中分支選擇的基本概念。

設置

Jenkins 作業

具有以下階段的管道腳本

stage('Clone Repo') {
   steps {
      checkout([$class: 'GitSCM',
                branches: [[name: "**"]],                            
                extensions: [[$class: 'CleanCheckout']],
                userRemoteConfigs: [[url: 'ssh://git@git.server/project/repo.git', credentialsId: 'secret']]
              ]);
      }
}

Bitbucket 服務器

每次推送的 Webhook 指向: http://jenkins.url/git/notifyCommit?url=ssh://git@git.server/project/repo.git

問題

我通過嘗試和錯誤理解了以下內容:

  • Bitbucket 在每個分支的每次推送時觸發
  • Jenkins 檢查每個分支並嘗試構建一個尚未構建的分支
  • Jenkins 的分支可能不一樣,尤其是在新創建的工作上
  • 手動觸發作業后,Jenkins 已在每個分支上工作。 因此,來自 bitbucket 的每個新推送通知都將導致在 jenkins 中構建正確的分支

這個對嗎? 我想知道這個隱式分支定義是否會導致意外行為。

范圍

此外,我已將管道腳本更改為具有手動構建的分支選擇參數:

    parameters {
        gitParameter(name: 'branch',
                        defaultValue: 'master',
                        type: 'PT_BRANCH',
                        selectedValue: 'DEFAULT',
                        quickFilterEnabled: true,
                        sortMode: 'ASCENDING_SMART',
                        branchFilter: 'origin/(.*)',
                        description: 'Branch to run the job')
    }

和結帳階段:

stage('Clone Repo') {
   steps {
      checkout([$class: 'GitSCM',
                branches: [[name: "*/${branch}"]],                       
                extensions: [[$class: 'CleanCheckout']],
                userRemoteConfigs: [[url: 'ssh://git@git.server/project/repo.git', credentialsId: 'secret']]
              ]);
      }
}

手動運行作業可以正常工作。 如何通過 webhook 為正確的分支觸發此作業(例如覆蓋參數)?

提前致謝

如果我正確理解了您的問題,您想要完成一個多分支管道。

下面的鏈接是jenkins多分支流水線初學者教程。

https://devopscube.com/jenkins-multibranch-pipeline-tutorial/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM