仅在构建标签时执行 Jenkins Pipeline 步骤
Execute Jenkins Pipeline step only when building a tag
我有特定的构建逻辑,例如发布,我希望 Jenkins 仅在构建 Git 标记时执行。我如何使用 Jenkin 的声明式管道完成此操作?
换句话说,我正在尝试构建等同于 Travis CI 的标签部署功能的功能:
deploy:
[...]
on:
tags: true
有一个 built-in condition to check the branch,但我没有看到表示标签的。
更新: 从 Pipeline Model Definition Plugin you can now use buldingTag()
的 1.2.8 版本开始:
stage('Deploy') {
when {
buildingTag()
}
steps {
echo 'Replace this with your actual deployment steps'
}
}
使用时Multibranch Pipeline configuration you can use the expression
condition along with the TAG_NAME
environment variable provided by the underlying 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。
我有一个类似的情况,我通过获取分支名称来处理,如果是标签,它就像 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 :)
声明式管道
仅在为标签构建时执行 STAGE
对于整个阶段,@vossad01 已经提供了在 when
like
中使用 buildingTag()
的答案
stage('Deploy') {
when {
buildingTag()
beforeAgent true
}
steps {
echo 'deploy something when triggered by tag
}
}
beforeAgent true
是可选的,确保在代理上执行之前检查条件。
仅在为标签构建时执行 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 that enables to trigger builds when pushing tags (which is not enabled per default). See here 了解如何使用它感兴趣。您可以通过 Manage Jenkins
-> Manage Plugins
-> Available tab
安装它,然后使用搜索栏。
我有特定的构建逻辑,例如发布,我希望 Jenkins 仅在构建 Git 标记时执行。我如何使用 Jenkin 的声明式管道完成此操作?
换句话说,我正在尝试构建等同于 Travis CI 的标签部署功能的功能:
deploy:
[...]
on:
tags: true
有一个 built-in condition to check the branch,但我没有看到表示标签的。
更新: 从 Pipeline Model Definition Plugin you can now use buldingTag()
的 1.2.8 版本开始:
stage('Deploy') {
when {
buildingTag()
}
steps {
echo 'Replace this with your actual deployment steps'
}
}
使用时Multibranch Pipeline configuration you can use the expression
condition along with the TAG_NAME
environment variable provided by the underlying 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。
我有一个类似的情况,我通过获取分支名称来处理,如果是标签,它就像 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 :)
声明式管道
仅在为标签构建时执行 STAGE
对于整个阶段,@vossad01 已经提供了在 when
like
buildingTag()
的答案
stage('Deploy') {
when {
buildingTag()
beforeAgent true
}
steps {
echo 'deploy something when triggered by tag
}
}
beforeAgent true
是可选的,确保在代理上执行之前检查条件。
仅在为标签构建时执行 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 that enables to trigger builds when pushing tags (which is not enabled per default). See here 了解如何使用它感兴趣。您可以通过 Manage Jenkins
-> Manage Plugins
-> Available tab
安装它,然后使用搜索栏。