如何将jenkins凭证导入到jenkinsfile中?

时间:2019-12-05 20:03:53

标签: jenkins jenkins-pipeline

我正在跟踪jenkinsfile documentation,并且尝试在管道中使用秘密文本,但出现错误 “ groovy.lang.MissingPropertyException:无此类属性:groovy.lang.Binding类的$ AWS_SECRET_ACCESS_KEY”

这是我的jenkinsfile。我也尝试包装像echo“ $ {AWS_SECRET_ACCESS_KEY}”这样的变量,但是都没有用。我发现一个替代解决方案是withwithCredentials行,但我想知道为什么它不起作用,因为如果将这些数据添加为变量,我会发现jenkins文件更清晰。

执行“ withCredentils”会告诉我:“ groovy.lang.MissingPropertyException:无此类属性:为类设置:groovy.lang.Binding”,我发现似乎需要降级我的安全性...

pipeline {
    agent any

    environment {
        AWS_ACCESS_KEY     = credentials('AWS_ACCESS_KEY_ID')
        AWS_SECRET_KEY = credentials('AWS_SECRET_ACCESS_KEY')
    }

    stages {
        stage('Test') {
            steps {
                echo 'Testing..'
                echo $AWS_SECRET_KEY
                echo $AWS_ACCESS_KEY

            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying....'
                sh "npx serverless --no-aws-s3-accelerate --key $AWS_ACCESS_KEY --secret $AWS_SECRET_KEY"
            }
        }
    }
}

编辑:修复凭据的第二种实现

2 个答案:

答案 0 :(得分:1)

1。您是否将ID为AWS_SECRET_ACCESS_KEY的凭据添加到您的詹金斯上?

  1. 回显$ {AWS_SECRET_ACCESS_KEY}将不起作用,因为只有凭据步骤才能将凭据内容返回到管道上下文中。

  2. withCredentils <-错字

答案 1 :(得分:0)

我建议使用'withCredentials'( https://plugins.jenkins.io/credentials-binding

在创建新的凭证(AWS类型)之后(使用“ CloudBees Aws凭证插件”: https://wiki.jenkins.io/display/JENKINS/CloudBees+AWS+Credentials+Plugin

我对声明性管道语法不是很熟悉,因此这可能不是最好的方法。

无论如何,您需要添加一个脚本块:

stage('Deploy') {
    steps {
        script {
            withCredentials([[
                class: 'AmazonWebServicesCredentialsBinding',
                credentialsId: awsCredentialId,
                accessKeyVariable: 'AWS_ACCESS_KEY',
                secretKeyVariable: 'AWS_SECRET_KEY'
            ]]) {
                    println 'Deploying....'
                    sh " npx serverless --no-aws-s3-accelerate --key $AWS_ACCESS_KEY --secret $AWS_SECRET_KEY"
                }
        }
    }
}