我试图在我的serverless.yml文件中引用在我的jenkinsfile中设置的变量。
在jenkinsfile中,我有这个
nameof
在serverless.yml文件中,我有这个
rnD.NewIfNull(nameof(RnD.A)).A.NewIfNull(nameof(A.B)).B.NewIfNull(nameof(B.C));
运行jenkins管道时出现此错误
environment {
HELLO = 'hello-world'
}
这是我要求的完整jenkins文件,最终目标是我想使用val1和val2和env变量,但如果我能弄清楚如何与hello world在一起,那就是同一件事。
custom:
secret: ${env:HELLO}
答案 0 :(得分:1)
如果可以使jenkin作业始终在Linux从站上执行,则可以使用sed
替换占位符:${env:HELLO}
为实际值。
stage('Pull Secrets From Vault'){
withAWS(credentials:'aws-cred'){
def secret = vaultPullSecrets(app:"sls-auxiliary-service",appenv:"nonprod",runtime:'nonprod',keys:'["saslusername","saslpassword"]')
def val1 = new groovy.json.JsonSlurper().parseText(secret)[0].SASLUSERNAME
sh """
sed -i 's/\${env:HELLO}/${val1}/' <relative path to>/serverless.yml
"""
我使用简单的管道进行了快速练习,如下所示,我很好地执行了sed
命令。
node('docker') {
stage('A') {
sh '''
set +x
echo 'custom:' > serverless.yml
echo ' secret: ${env:HELLO}' >> serverless.yml
echo '### Before replace ###'
cat serverless.yml
'''
def val1 = 'hello'
sh """
set +x
sed -i 's/\${env:HELLO}/${val1}/' ./serverless.yml
echo '### After replace ###'
cat serverless.yml
"""
}
}
工作成果输出
[script-pipeline-practice] Running shell script
+ set +x
### Before replace ###
custom:
secret: ${env:HELLO}
[Pipeline] sh
[script-pipeline-practice] Running shell script
+ set +x
### After replace ###
custom:
secret: hello