簡體   English   中英

如何在 jenkins 構建管道腳本中傳遞 AWS 密鑰和 ID?

[英]How to pass AWS secret key and id in jenkins build pipeline script?

我正在嘗試將 AWS 密鑰和密碼傳遞給 jenkins 腳本(它創建 env 文件)

我的代碼:

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,我寧願在此處注入憑據。 我怎樣才能實現它? 我在這里閱讀了整個說明但無法弄清楚。

我知道如何使用憑據綁定插件,但不確定如何將 user_name 和密碼憑據變量添加到我的代碼中。

這些說明的想法是首先將這些憑據存儲在Jenkins Credential Biding 插件中Jenkins 憑據部分中,如下所示

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')
}

解決方案:存儲憑據、api 令牌和密鑰的最佳做法是將其存儲在 jenkins 中的全局憑據上(這適用於項目/項目/對象中的所有憑據范圍)並獲取管道代碼。 這種方法可以防止用戶在其代碼/項目中不安全地以純文本形式存儲敏感數據。

我將用簡短的例子來演示它:在這個例子中,我將我的應用程序的 api 令牌存儲在 Jenkins 憑證中,在我的管道步驟中獲取它並卷曲它以在我的服務器上執行一些 rest api HTTP 操作。

首先存儲它:

Jenkins -> Credentials -> Global -> Add Credentials -> 選擇你的類型並填寫詳細信息

在此處輸入圖片說明 在我的示例中,我使用秘密 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/
      """
  }
}

有關更多信息,請查看文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM