我在构建阶段阶段获得运行时值,我存储在一个环境变量中。我把它保存到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}"
}
}
}