8
4

3 回答 3

17

更新:从管道模型定义插件的 1.2.8 版开始, 您现在可以使用buldingTag()

stage('Deploy') {
  when {
    buildingTag()
  }
  steps {
    echo 'Replace this with your actual deployment steps'
  }
}

使用Multibranch Pipeline配置时,您可以使用expression条件以及TAG_NAME底层Branch API Plugin提供的环境变量。不幸的是,您无法直接检查环境变量是否在 Groovy 级别(API 限制)定义,因此您必须在 shell 中进行测试:

stage('Deploy') {
  when { expression { sh([returnStdout: true, script: 'echo $TAG_NAME | tr -d \'\n\'']) } }
  steps {
    echo 'Replace this with your actual deployment steps'
  }
}

以上利用了 Groovy 中非空字符串的真实性。

在未来的版本中可能会引入更简单的方法。请参阅jenkinsci/pipeline-model-definition-plugin#240

于 2018-01-21T02:50:45.453 回答
1

我有一个类似的情况,我通过获取分支名称来处理,如果是标签refs/tags/v101.0.0-beta8468,那么你必须提取/解析它以检查它是否是一个标签,否则它只是分支名称pipeline。例如。

if(env.gitlabBranch.contains("tags"))
    {
        isTag = true
        echo "----------------true----------------"
        branch = env.gitlabBranch.split("/")[2]
        imageTag = branch

    }
    else
    {
        branch = "origin/$env.gitlabBranch"

    }

并在 chekout 步骤中提到分支为

 branches: [[name: "${branch}"]

如果您想从同一个项目中结帐。根据 isTag 变量,您可以选择运行某个阶段。喜欢:

if(isTag) {
stage('Deploy') {
   // your logic here
}

将您的 isTag 初始化为 false :)

于 2018-01-21T18:52:52.167 回答
0

声明性管道

仅在为 Tag 构建时执行 STAGE

对于整个阶段,@vossad01 已经提供了buildingTag()whenlike中使用的答案

stage('Deploy') {
  when {
    buildingTag()
    beforeAgent true
  }
  steps {
    echo 'deploy something when triggered by tag
  }
}

beforeAgent true是可选的,并确保在代理上执行之前检查条件。

仅在为 Tag 构建时执行 STEP

如果它只是一个阶段中的一个步骤,应该以标签为条件,您可以在script块内使用 Groovy 语法(如在脚本化管道中使用的),如下所示。

stage('myStage') {                                              
  steps {                                                       
    echo 'some steps here that should always be executed'
    script {                                                    
      if (env.TAG_NAME) {                                       
        echo "triggered by the TAG:"                                 
        echo env.TAG_NAME                                       
      } else {                                                  
        echo "triggered by branch, PR or ..."                              
      }                                                         
    }                                                           
  }                                                             
}

为标签构建的附加提示

您可能还对能够在推送标签时触发构建的basic-branch-build-strategies-plugin感兴趣(默认情况下不启用)。请参阅此处了解如何使用它。您可以通过Manage Jenkins-> Manage Plugins->安装它Available tab,然后使用搜索栏。

于 2021-10-19T07:57:18.283 回答