如果分支条件不起作用,则詹金斯声明性单管道

时间:2018-09-06 15:13:00

标签: jenkins jenkins-pipeline jenkins-declarative-pipeline

使用单个声明性管道(而不是多分支管道)

有没有一种方法可以仅在主分支的情况下触发某个阶段?

我在以下方面失败了:

Stage('Deploy') {
    steps {
        script {
            if (env.BRANCH_ENV == 'master') {
                sh "mvn deploy"
            } else {
                echo 'Ignoring'
            }
        }
    }
}

无论我部署的是哪个分支,一切都会被忽略

任何帮助或建议都很好

2 个答案:

答案 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)

这里有一些方法:

使用return命令过早完成阶段

https://stackoverflow.com/a/51406870/3957754

在when指令时使用

何时指令允许管道根据给定条件确定是否应执行该阶段

内置条件:分支,表达式,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

相关问题