簡體   English   中英

jenkins 管道中的以下 git 檢出行為有什么區別?

[英]What is the difference between the following git checkout behaviours in a jenkins pipeline?

我在我的組織中進行一個新項目。 在兩個不同的 jenkins 管道中,我有以下結帳行為,我想了解兩者之間的區別以及何時使用哪一個。 第一個是:

                    $class: 'GitSCM',
                    branches: [[name: '*/master']],
                    userRemoteConfigs: [[credentialsId: GIT_CRED_ID, url: REPO_URL]]
                ])

GIT_CRED_ID 和 REPO_URL 是管道環境中定義的變量。

第二個是:

checkout([$class: 'GitSCM', branches: [[name: '*/develop']], doGenerateSubmoduleConfigurations: false,
extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'xxx-key', url: 'https://github.com/xxx']]])

除了他們正在檢查的分支之外,我不明白何時使用哪個分支。

tl;博士不,沒有區別。 使用較短的以使您的代碼更緊湊/可讀,或使用較長的以顯示所有可能的 class 參數

更長

步驟檢出語法基本上是要使用的 class ( GitSCM ),后跟 class 構造函數的參數。 您提到的兩個調用之間的區別在於,在第一個調用中您只提供兩個參數(存儲庫和遠程配置),而在第二個調用中,您提供了更多參數。

但你問的是:這有什么不同嗎?

不幸的是,Jenkins 插件中的文檔有點像。 或者更好地說,文檔就是源代碼本身。 如果你用谷歌搜索GitSCM github ,你得到的第一個鏈接是 class 的源代碼,你可以看看所有這些 class 參數的含義:

https://github.com/jenkinsci/git-plugin/blob/master/src/main/java/hudson/plugins/git/GitSCM.java

因此,如果您查看構造函數參數,您會注意到您提到的第二個調用只是給出了默認輸入參數值

我認為兩者都是一樣的。 在第一種方法中,看起來您缺少起始片段。 了解此方法的最佳方法是了解 Jenkins 中安裝的插件。 您可以查看管道的日志並嘗試了解這些管道是僅簽出您想要的單個分支,還是克隆所有分支,然后再簽出所需的分支。 如果兩者都在做同樣的事情而沒有任何問題,您可以選擇其中任何一個。 您可以更喜歡穩定的插件代碼。

看起來,您正在使用 SCM 步驟插件。 一旦與團隊核實,誰安裝了插件。https://www.jenkins.io/doc/pipeline/steps/workflow-scm-step/

暫無
暫無

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

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