Jenkins声明式管道在后阶段获取环境变量



我在构建阶段阶段获得运行时值,我存储在一个环境变量中。我把它保存到WORKSPACE下的env.cfg文件中。

现在我正试图在邮政管道步骤中获得该值,以用于电子邮件通信。我尝试加载方法,但它没有工作

有什么帮助吗?

{后总是{echo $SNAPSHOT//this总是返回null}}

这是您可以跨管道访问环境变量的方式

pipeline {
agent any;
environment {
MESSAGE="Hello World"
}
stages {
stage('one') {
steps {
echo "${env.MESSAGE}"
sh "echo $MESSAGE"
script {
print env.MESSAGE
}
}
}
}
post {
success {
echo "${env.MESSAGE}"
script {
print env.MESSAGE
}
}
failure {
echo "${env.MESSAGE}"
script {
print env.MESSAGE
}
}
}
}

但是根据您的场景,假设我在当前Jenkins作业WORKSPACE中有一个名为.env的文件,其内容如下,我想在管道中读取并创建这个env变量。

.env

export SNAPSHOT=1.0.0
export MESSAGE='Hello World'
export MESSAGE_FROM_ENV_FILE='Hello From .env file'
你的管道应该看起来像 <<p>脚本管道/strong>
node {
stage('one') {
sh """
source $WORKSPACE/.env

echo $SNAPSHOT
echo $MESSAGE
echo $MESSAGE_FROM_ENV_FILE
"""

}
}
<<p>声明式管道/strong>
pipeline {
agent any;
stages {
stage('build') {
steps {
sh """
source $WORKSPACE/.env

echo $SNAPSHOT
echo $MESSAGE
echo $MESSAGE_FROM_ENV_FILE
"""
}
}
}
post {
success {
sh """
source $WORKSPACE/.env

echo $SNAPSHOT
echo $MESSAGE
echo $MESSAGE_FROM_ENV_FILE
"""
}
}

}

你需要一个全局变量:

SNAPSHOT = ""
println "SNAPSHOT is ${SNAPSHOT}"
pipeline {
agent any
stages {
stage('Build') {
steps {
script {
println "SNAPSHOT is ${SNAPSHOT}"
SNAPSHOT = "Modified"
println "SNAPSHOT is now ${SNAPSHOT}"
}
}
}
}
post {
always {
echo "${SNAPSHOT}"
}
}
}

最新更新