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

tet*_*nne 2 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'
              }
            }
        }
Run Code Online (Sandbox Code Playgroud)

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

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

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

tet*_*nne 7

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

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