我如何在我的Jenkinsfile中指定类似下面的内容?
- 当分支不是x*
我知道如何指定分支特定的任务,例如:
stage('Master Branch Tasks') {
when {
branch "master"
}
steps {
sh '''#!/bin/bash -l
Do some stuff here
'''
}
}
字符串
但是,我想指定一个阶段,当分支不是master或staging时,如下所示:
stage('Example') {
if (env.BRANCH_NAME != 'master' && env.BRANCH_NAME != 'staging') {
echo 'This is not master or staging'
} else {
echo 'things and stuff'
}
}
型
但是,上面的操作不起作用,并且失败,并出现以下错误:
WorkflowScript: 62: Not a valid stage section definition: "if
WorkflowScript: 62: Nothing to execute within stage "Example"
型
注意我失败尝试的来源:https://jenkins.io/doc/book/pipeline/syntax/#flow-control
4条答案
按热度按时间4smxwvx51#
解决了这个issue问题后,您现在可以执行以下操作:
字符串
vc9ivgsu2#
您还可以使用
anyOf
指定多个条件(在本例中为分支名称):字符串
在这种情况下,
do-non-master-nor-staging.sh
将在所有分支上运行**,除了**在 master 和 staging 上。您可以阅读有关内置条件和通用管道语法here的内容。
nue99wik3#
您的帖子中的链接显示了一个脚本化管道语法的示例。您的代码使用声明性管道语法。要在声明中使用脚本化管道,可以使用脚本步骤。
字符串
falq053o4#
对于那些想要使用env值的人,如果是声明式管道,并且你有动态分支提取,那么你可以全局定义自己的变量,并像下面这样使用。[变量“deployBranch”需要在管道之前声明,并在当前阶段之前或使用评估之前更新]
字符串