一、参数处理¶
声明式流水线支持很多开箱即用的参数,可以让流水线接收不同的参数以达到不同的构建 效果,在 Directives 小节讲解的参数均可用在流水线中。
在 Jenkinsfile 中指定的 parameters 会在 Jenkins Web UI 自动生成对应的参数列表,此时可以 在 Jenkins 页面点击 Build With Parameters 来指定参数的值,这些参数可以通过 params 变量被成 员访问。
假设在 Jenkinsfile 中配置了名为 Greeting 的字符串参数,可以通过${params.Greeting}访问 该参数,比如:
// Jenkinsfile (Declarative Pipeline)
pipeline {
agent any
parameters {
string(name: 'Greeting', defaultValue: 'Hello', description: 'How should I greet the world?')
}
stages {
stage('Example') {
steps {
echo "${params.Greeting} World!"
}
}
}
}
对应的脚本式流水线如下:
// Jenkinsfile (Scripted Pipeline)
properties([
parameters([
string(defaultValue: 'Hello', description: 'How should I greet the world?', name: 'Greeting')
])
])
node {
echo "${params.Greeting} World!"
}
二、使用多个代理¶
流水线允许在 Jenkins 环境中使用多个代理,这有助于更高级的用例,例如跨多个平台执行 构建、测试等。
比如,在 Linux 和 Windows 系统的不同 agent 上进行测试:
// Jenkinsfile (Declarative Pipeline)
pipeline {
agent none
stages {
stage('Build') {
agent any
steps {
checkout scm
sh 'make'
stash includes: '**/target/*.jar', name: 'app'
}
}
stage('Test on Linux') {
agent {
label 'linux'
}
steps {
unstash 'app'
sh 'make check'
}
post {
always {
junit '**/target/*.xml'
}
}
}
stage('Test on Windows') {
agent {
label 'windows'
}
steps {
unstash 'app'
bat 'make check'
}
post {
always {
junit '**/target/*.xml'
}
}
}
}
}