在jenkins管道中以下git checkout行为之间有什么区别?

问题描述

我正在组织中的一个新项目。在两个不同的詹金斯管道中,我具有以下签出行为,我想了解两者之间的区别以及何时使用哪个。 第一个是:

                    $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']]])

除了要检查的分支外,我不知道何时使用哪个分支。

解决方法

我认为两者都一样。在第一种方法中,您似乎缺少起始代码段。最好的理解方法是了解Jenkins中安装的用于此方法的插件。 您可以查看管道的日志,并尝试了解这些管道是否仅签出所需的Single Branch,或克隆所有分支并随后签出所需的分支。如果两者都执行相同而没有任何问题,则可以选择其中任何一个。您可以选择稳定的插件代码。

看起来像,您正在使用SCM步骤插件。与团队确认后,谁会安装插件。 https://www.jenkins.io/doc/pipeline/steps/workflow-scm-step/

,

tl; dr 不,没有区别。使用较短的代码可以使代码更紧凑/可读,而较长的代码可以显示所有可能的类参数

更长

步骤 checkout 语法基本上是要使用的类( GitSCM ),其后是类构造函数的参数。您提到的两个调用之间的区别是,在第一个调用中,您仅提供了两个参数(存储库和远程配置),而在第二个调用中,您提供了更多的参数。

但是您问的是:有什么不同吗?

不幸的是,Jenkins插件中的文档有点类似。更好的说法是,文档 是源代码本身。如果您通过Google搜索 GitSCM github ,则获得的第一个链接是该类的源代码,您可以查看所有这些类参数的含义:

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

因此,如果您查看构造函数的参数,您会发现提到的第二个调用只是给出了默认的输入参数值