Jenkins 管道 - 如何 运行 基于定义参数的阶段
Jenkins pipeline - How to run a stage based on defined parameter
我有一个包含几个阶段的 jenkins 管道 - 我希望仅在 deploy 参数 == yes 的情况下 运行 copy_file 阶段。我曾尝试使用 when 但它不起作用
servers =['100.1.1.1', '100.1.1.2']
deploy = yes
pipeline {
agent { label 'server-1' }
stages {
stage('Connect to git') {
steps {
git branch: 'xxxx', credentialsId: 'yyy', url: 'https://zzzz'
}
}
stage ('Copy file') {
when { deploy == 'yes' }
steps {
dir('folder_a') {
file_copy(servers)
}
}
}
}
}
def file_copy(list) {
list.each { item ->
sh "echo Copy file"
sh "scp 11.txt user@${item}:/data/"
}
}
首先声明一个环境变量。
environment {
DEPLOY = 'YES'
}
现在在这样的when条件下使用它。
when { environment name: 'DEPLOY', value: 'YES' }
Jenkins 中有两种流水线代码。
- 声明式管道
- 脚本化管道(groovy 脚本)
您正在以声明方式编码,因此您需要遵循声明语法。
注意:还有其他方法可以实现您想要实现的目标。我的意思是说你可能会使用不同的逻辑。
另一种方法是使用参数:
parameters {
choice choices: ['YES', 'NO'], description: 'Deploy?', name: 'DEPLOY'
}
stages {
stage ('continue if DEPLOY set to YES') {
when {
expression { params.DEPLOY == 'YES' }
}
steps {
...
}
}
}
我有一个包含几个阶段的 jenkins 管道 - 我希望仅在 deploy 参数 == yes 的情况下 运行 copy_file 阶段。我曾尝试使用 when 但它不起作用
servers =['100.1.1.1', '100.1.1.2']
deploy = yes
pipeline {
agent { label 'server-1' }
stages {
stage('Connect to git') {
steps {
git branch: 'xxxx', credentialsId: 'yyy', url: 'https://zzzz'
}
}
stage ('Copy file') {
when { deploy == 'yes' }
steps {
dir('folder_a') {
file_copy(servers)
}
}
}
}
}
def file_copy(list) {
list.each { item ->
sh "echo Copy file"
sh "scp 11.txt user@${item}:/data/"
}
}
首先声明一个环境变量。
environment {
DEPLOY = 'YES'
}
现在在这样的when条件下使用它。
when { environment name: 'DEPLOY', value: 'YES' }
Jenkins 中有两种流水线代码。
- 声明式管道
- 脚本化管道(groovy 脚本)
您正在以声明方式编码,因此您需要遵循声明语法。
注意:还有其他方法可以实现您想要实现的目标。我的意思是说你可能会使用不同的逻辑。
另一种方法是使用参数:
parameters {
choice choices: ['YES', 'NO'], description: 'Deploy?', name: 'DEPLOY'
}
stages {
stage ('continue if DEPLOY set to YES') {
when {
expression { params.DEPLOY == 'YES' }
}
steps {
...
}
}
}