从jenkinsfile引用Serverless.yml文件中的环境变量

时间:2019-08-15 14:45:44

标签: amazon-web-services jenkins lambda environment-variables serverless

我试图在我的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}

1 个答案:

答案 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