我在用Jenkins的一个任务触发另一个任务,都是通过Jenkins档案。
stage("Trigger another job")
{
build([job:"Job2", wait:true, propagate:true, parameters: [string(name:'branch_my',value:"${env.ghprbActualCommit}")]])
}
注意,参数branch_my
被发送到Job2
,但是即使branch_my
没有被定义,例如当它被手动触发时,管道Job2
也需要工作。Job2
的Jenkinsfile看起来像:
pipeline
{
// ...
steps
{
customBranches()
// etc...
}
}
def customBranches()
{
if ( env.branch_my != null)
{
sh "shitch_to ${env.branch_my}"
}
}
但是,customBranches()
if语句的计算结果永远不会是true
。sh "echo 'Env branch_my is: ${env.branch_my} '"
我得到了Env branch_my is: some_value
,这是可以的,if语句应该计算为true
-但它没有。
我试着像这样添加${}
:if ( ${env.branch_my} != null)
,但完全失败:No such DSL method "$" found
.
我的customBranches()
有什么问题?
1条答案
按热度按时间qnakjoqk1#
问题不在于Jenkinsfile语法,而在于Jenkins作业配置:必须在GUI中将其标记为“parametrized”,并且需要定义字符串参数
branch_my
: