jenkins的pipeline的stage之间怎么传递参数
时间: 2023-09-25 19:15:32 浏览: 128
在Jenkins的Pipeline中,可以通过环境变量、参数化构建和全局变量等方式在不同的stage之间传递参数。以下是一些示例:
1. 环境变量
在stage中定义一个环境变量,可以通过${env.VARIABLE_NAME}在其他stage中引用。例如:
```
pipeline {
agent any
stages {
stage('Build') {
environment {
IMAGE_TAG = '1.0.0'
}
steps {
sh 'echo "Building image with tag ${IMAGE_TAG}"'
}
}
stage('Deploy') {
steps {
sh 'echo "Deploying image with tag ${IMAGE_TAG}"'
}
}
}
}
```
2. 参数化构建
通过参数化构建,可以在Pipeline执行之前让用户输入参数值,并将这些参数传递给不同的stage。例如:
```
pipeline {
agent any
parameters {
string(name: 'ENVIRONMENT', defaultValue: 'dev', description: 'Environment to deploy to')
booleanParam(name: 'ENABLE_CACHE', defaultValue: true, description: 'Enable caching?')
}
stages {
stage('Build') {
steps {
sh 'echo "Building application for ${params.ENVIRONMENT}"'
}
}
stage('Deploy') {
steps {
sh 'echo "Deploying application to ${params.ENVIRONMENT}"'
if (params.ENABLE_CACHE) {
sh 'echo "Caching enabled"'
} else {
sh 'echo "Caching disabled"'
}
}
}
}
}
```
3. 全局变量
可以在Pipeline中定义全局变量,并在不同的stage中引用。例如:
```
pipeline {
agent any
options {
// Define global variable
envVars([
// Use Jenkins built-in variable for current build number
// and assign to MY_BUILD_NUMBER
envVar('MY_BUILD_NUMBER', "${BUILD_NUMBER}")
])
}
stages {
stage('Build') {
steps {
sh 'echo "Building application for build ${MY_BUILD_NUMBER}"'
}
}
stage('Deploy') {
steps {
sh 'echo "Deploying application for build ${MY_BUILD_NUMBER}"'
}
}
}
}
```