jenkins-pipeline - Jenkinsfile - 一种跳过整个管道的方法?
问题描述
我使用声明性语法来开发(多分支)管道脚本,并且我正在寻找一种方法来根据某些条件跳过整个管道,而不必when
在每个阶段都修改。
当前用例:我正在设置一个cron
在晚上触发构建,但我只想说分支release/v1
并develop
在晚上通过管道,而不是其他十几个分支。
triggers {
cron('H 21 * * 1-5')
}
// SKIP PIPELINE if triggered by timer AND branch not 'release/v1' OR 'develop'
stages {
stage('build') {
when { ... }
}
stage('UT') {
when { ... }
}
etc...
}
任何提示将不胜感激。
解决方案
如果您有 pipeline-definition-plugin 1.3 或更高版本 ( changelog ),您可以嵌套阶段。
使用它,您可以将整个作业嵌套在父阶段,并在父阶段使用 when 指令。如果跳过父阶段,则将跳过所有子阶段。这是一个例子:
pipeline {
agent any
stages {
stage('Parent') {
when {
//...
}
stages {
stage('build') {
steps {
//..
}
}
stage('UT') {
steps {
//...
}
}
}
}
}
}
推荐阅读
- ios - 应用程序调试启动非常慢,可能与“lldb-rpc-server”有关?
- android - Facebook Login dialog disappears after clicking on Facebook sign in button
- go - file not found / unable to import package
- python - Flask form TypeError: object of type 'int' has no len()
- c# - Trying to create a highest bidder WPF program in C# using Visual Studio
- django - 网站说在没有 www 的情况下打开时连接不安全,但使用 www 可以正常工作。我正在使用 https
- cplex - CPLEX/OPL model for transshipment (network flow)
- c# - Get last saved row in my database every fixed time period and update view
- typescript - Can I somehow define what can be the indexed name in the interface based on another interface in TypeScript?
- javascript - Want to incorporate progress bar when uploading file using Google.Apis.Drive.v3 with C# MVC 5