如何在jenkins构建管道脚本中传递AWS密钥和ID?

时间:2019-06-10 23:15:02

标签: jenkins jenkins-pipeline

我正在尝试将AWS密钥和密码传递到jenkins脚本(用于创建环境文件)

我的代码:

node {

    writeFile file: 'temp_env.txt', text: """
    AWS_ACCESS_KEY= << Access Key >>
    AWS_SECRET_KEY= << password >>
  """
docker.withRegistry('https://quay.io', 'c5234316dc-dqwqwda1-415645452-b343-406bf8332edb') {

        sh 'docker pull quay.io/docker_image'
        docker.image ('quay.iodocker_image').run('-it --env-file temp_env.txt --name test quay.io/docker_image:develop ./code/test1.py test-service')
        sh 'rm temp_env.txt'
    }
}

我正在使用实际的密钥和ID,我希望在这里注入凭据。我该如何实现?我阅读了整个说明here,但无法弄清楚。

我知道如何使用凭据绑定插件,但是不确定如何将user_name和password凭据变量添加到我的代码中。

2 个答案:

答案 0 :(得分:0)

those instructions的想法是首先将Credentials section of Jenkins中的那些凭据存储为Jenkins Credential Biding pluginshown here

https://www.coveros.com/wp-content/uploads/2015/05/blog_jenkins_cred_accesskey.png

一旦安全地存储在那里,您可以在环境步骤中声明它们:

environment {
    AWS_ACCESS_KEY_ID     = credentials('jenkins-aws-secret-key-id')
    AWS_SECRET_ACCESS_KEY = credentials('jenkins-aws-secret-access-key')
}

答案 1 :(得分:0)

解决方案:存储凭据,api令牌和秘密密钥的最佳做法是将其存储在jenkins中的全局凭据上(这适用于项目/项目/对象)并获取管道代码。这种方法可防止用户在其代码/项目中以纯文本格式不安全地存储敏感数据。

  

我将通过简短示例进行演示:在此示例中,我将应用的api令牌存储在Jenkins凭据中,将其放入管道步骤中并进行卷曲以执行一些其余的api我的服务器上的HTTP操作。

首先存储:

  

Jenkins->凭据->全局->添加凭据->选择您的   输入并填写详细信息

enter image description here 在我的示例中,我创建带有秘密xxx的秘密文本,ID为MY_SECRET_TOKEN,说明将成为我的api服务的秘密令牌。 好,我将其保存,并且管道如下所示。

script{
   withCredentials([
      string(
         credentialsId: 'MY_SECRET_TOKEN',
         variable: 'TOKEN_VARIABLE')
      ]) {
      sh """#!/bin/bash
         curl -k -L -H 'Authorization: Token ${TOKEN_VARIABLE}' 
         https://myservice/api/users/someaction/
      """
  }
}

有关更多信息,请查看documentation