在Jenkins Docker Pipeline中,Artifactory rtBuildInfo插件默认不会收集环境变量。要解决这个问题,可以使用Jenkins的envInject插件来手动收集环境变量,并将其传递给Artifactory rtBuildInfo。
以下是一个示例的解决方法:
pipeline {
agent {
docker {
image 'your-docker-image'
args '-v /var/run/docker.sock:/var/run/docker.sock'
}
}
stages {
stage('Build') {
steps {
// 构建步骤
// 收集环境变量
script {
def envVars = input message: 'Please provide environment variables', parameters: [
[$class: 'TextParameterDefinition', defaultValue: 'your-default-value', description: 'ENV_VAR_NAME', name: 'ENV_VAR_NAME'],
// 添加其他环境变量
]
// 将环境变量传递给Artifactory rtBuildInfo
envVars.each { key, value ->
env."ENV_VAR_NAME" = value
}
}
}
}
}
post {
always {
// 上传构建信息到Artifactory
rtBuildInfo()
}
}
}
在上述示例中,我们使用envInject插件手动收集环境变量。在构建步骤中,我们使用input步骤来提示用户提供环境变量的值,并将其保存在envVars变量中。然后,我们使用每个环境变量的键值对更新env对象,以便在整个Pipeline中使用。
最后,在post块中,我们使用rtBuildInfo步骤将构建信息上传到Artifactory。这将包括收集的环境变量。
请注意,你需要在Jenkins中安装envInject和Artifactory插件,以便使用上述示例。