仅在手动启动构建时如何运行阶段

时间:2019-10-11 13:16:53

标签: jenkins jenkins-pipeline

我的团队拥有一个非回归测试项目。在这个项目中,有代码和非回归测试。像经典项目一样,我们希望使用linter或其他工具来分析代码。但是我们不想在每个分支的最后几个小时都在每个分支上运行测试。 我们要手动启动这些测试。

要专门在master上运行测试,我们在Jenkinsfile中包含以下内容:

stage("Test") {
            when {branch "master"}

            steps {

               sh 'pipenv run pytest -n5 --dist=loadscope --junitxml report.xml |
            }
            post {
              always {
                junit 'report.xml'
              }
            }
        }

但是一旦我们将分支合并到master中,就会触发master上的构建并启动测试。

为避免这种情况,我认为我必须使用when块的https://jenkins.io/doc/book/pipeline/syntax/

的TriggeredBy参数

但是我找不到哪个触发通过映射手动启动事件(当我们单击Jenkins界面中的运行按钮时发送的事件)。

2 个答案:

答案 0 :(得分:2)

谢谢您的帮助。以下代码的行为符合预期。

stage("Test") {
            when {allOf {branch "master"; triggeredBy 'UserIdCause'}}
            steps {
              sh 'pipenv run pytest -n5 --dist=loadscope --junitxml report.xml '
            }
            post {
              always {
                junit 'report.xml'
              }
            }
        }

答案 1 :(得分:0)

您可以使用此:

stage('Test') {
    when {
        expression {
            currentBuild.buildCauses.toString().contains('UserIdCause')
        }
    }
    steps {
         sh 'pipenv run pytest -n5 --dist=loadscope --junitxml report.xml
    }

}