groovy 在Jenkins管道中跳过提交阶段而不是PR阶段

g52tjvyc  于 2022-11-01  发布在  Jenkins
关注(0)|答案(2)|浏览(178)

我们目前正在使用Jenkins/Groovy管道方法进行CI。
我试图创建一个单独的管道,用于构建包和在分支上运行单元测试(如果这是一个不好的做法,请告诉我)。
问题出在一个提交上,我不想执行我的测试步骤(由于大量的提交和时间来执行整个管道),但我仍然希望运行打包阶段,以便我们的手动测试人员能够在示例上拉取和安装。
是否有任何方法可以区分管道步骤或作业配置中的PR运行与提交?

rm5edbpk

rm5edbpk1#

使用(假设是github,但也有位桶等价物)
https://wiki.jenkins.io/display/JENKINS/GitHub+Branch+Source+Plugin来发现存储库以构建分支,而PR将允许您依赖Jenkins ENV变量。
这允许简单的if语句来确定构建是针对分支还是针对PR,因为PR是在PR-n的“分支”上构建的。然而,一旦PR打开,所有的提交都将被构建。
https://go.cloudbees.com/docs/cloudbees-documentation/cje-user-guide/index.html#github-branch-source

w6mmgewl

w6mmgewl2#

您可以使用Jenkins提供的changeRequest内置条件。
如果当前构建是针对“更改请求”(也称为GitHub和Bitbucket上的拉取请求、GitLab上的合并请求、Gerrit中的更改等),则执行阶段。如果未传递任何参数,则阶段将针对每个更改请求运行,例如:当{变更请求()}时。

stage('Run only for pull requests to master branch or at the master branch') {
    when {
        anyOf {
            branch 'master'
            changeRequest target: 'master'
        }
    }
    steps {
        // this is a very long step for integration test that we don't want to execute often, but we need to execute before to merge to master
        sh "${mvn} " +
            "clean " +
            "test-compile " +
            "failsafe:integration-test failsafe:verify"
    }
}

相关问题