使用单个声明性管道(而不是多分支管道)
有没有一种方法可以仅在主分支的情况下触发某个阶段?
我在以下方面失败了:
Stage('Deploy') {
steps {
script {
if (env.BRANCH_ENV == 'master') {
sh "mvn deploy"
} else {
echo 'Ignoring'
}
}
}
}
无论我部署的是哪个分支,一切都会被忽略
任何帮助或建议都很好
答案 0 :(得分:0)
我之前遇到过同样的问题,并且发现env.BRANCH_ENV无法返回我期望的结果。您可以在管道中回显env.BRANCH_ENV进行确认。
我的解决方案是手动获取git分支:
scmVars = checkout scm
gitBranch = sh(
script: "echo ${scmVars.GIT_BRANCH} | cut -d '/' -f2",
returnStdout: true
).trim()
答案 1 :(得分:0)
这里有一些方法:
https://stackoverflow.com/a/51406870/3957754
何时指令允许管道根据给定条件确定是否应执行该阶段
内置条件:分支,表达式,allOf,anyOf,不是等。
var oldItems = JSON.parse(localStorage.getItem('itemsArray')) || [];
var newItem = {
'id' : $('#itemId').val(),
'name': $('#productName').val(),
'quantity': $('#quantity').val(),
'price': $('#productPrice').val(),
};
oldItems.push(newItem);
localStorage.setItem('itemsArray', JSON.stringify(oldItems));
完整样本:
https://gist.github.com/HarshadRanganathan/97feed7f91b7ae542c994393447f3db4