【问题标题】:Can i checkout code with git tag as parameter in Jenkins?我可以在 Jenkins 中使用 git 标签作为参数签出代码吗?
【发布时间】:2019-12-23 03:09:09
【问题描述】:

我想设置 Jenkins 管道,它会在我每次运行作业时询问我 git tag。我正在使用声明性管道,但找不到方法。我找到了 Jenkins 插件Git Parameter Plugin!看起来它有我需要但不完全的东西。在示例中,有带有参数 TAG 的分支定义,但值是 master,它是 git 分支,而不是一些表明它确实是 git 标签的字符串。如果我设置了管道类型的作业,我需要提取 repo 才能访问 Jenkins 文件。

另一种方法是以某种方式避免 Jenkins 的默认 git pull(这是 Jenkins 文件所必需的,因为它在 SCM 存储库中)在分支内远程查找标签,然后拉出分支,或者可能拉出分支,找到标签并进行第二次结帐。不确定解决问题的最佳方法是什么,因此欢迎提出建议。

谢谢!

【问题讨论】:

    标签: git jenkins jenkins-pipeline


    【解决方案1】:

    要签出标签,请在 Branch 参数的位置提供远程标签名称。

    【讨论】:

      【解决方案2】:

      我们基于这样的标签为 GIT 进行一次结帐,特别是参见 branches 部分,因为如果它是标签,它可以识别它是如何设置的:

                      checkout([
                              $class                           : 'GitSCM',
                              branches                         : [[name: "refs/tags/${yourTagName}"]],
                              userRemoteConfigs                : [[credentialsId: 'user', url: 'url']],
                              doGenerateSubmoduleConfigurations: false
                      ])
      

      对于声明式,您可以使用参数(选择或字符串)来选择或填写您要签出的标签。如果您选择使用选择参数,则最好使用字符串,因为如果您更改/添加/删除标签,则必须维护选择。

      parameters {
        choice choices: ['v51.0.0', 'v50.1.3'], description: 'Pick your Tag to be checked out!', name: 'yourGitTag'
        string defaultValue: '', description: 'FIll in your Tag to be checked out!', name: 'yourGitTag', trim: true
      }
      

      如果您不提供任何输入,将使用defaultValue。 在 <yourJenkinsUrl>/directive-generator/ 下可以找到更多可用于在 Jenkins 实例中生成可用脚本的选项。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-01
        • 1970-01-01
        • 2015-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-26
        相关资源
        最近更新 更多