【问题标题】:How to pass variables to credentials.json in bitbucket-pipelines?如何将变量传递给 bitbucket-pipelines 中的 credentials.json?
【发布时间】:2021-03-07 01:48:36
【问题描述】:

我正在使用 bbrun 来模拟本地运行的管道。本质上,我需要(不是问题)是在 GCP 上自动化基础设施的 terragrunt 部署。所以每次推送一个标签时,它都会部署一个特定的环境。

这是我的 bitbucket-pipelines.yml(为 bbrun 简化):

image: alpine/terragrunt:latest

definitions:
  steps:
    - step: &terragrunt
        name: run terragrunt
        script:
            - cd ./env/dev
            - terragrunt validate-all


pipelines:
  default:
    - step: *terragrunt

当我有一个包含硬编码秘密的 credentials.json 文件(位于 /env/dev 中)时,当我使用 bbrun 运行它时,一切正常。那么如何将变量添加到 credentials.json 文件中,以便管道知道该文件中有一个变量?

例如,如果我在 bitbucket-piplines 控制台 PRIVATE_KEY 中添加一个秘密变量 我想让 terragrunt 读到这一行

"private_key": "-----BEGIN PRIVATE KEY-----\${env:PRIVATE_KEY}\n-----END PRIVATE KEY-----\n",
#I also tried $PRIVATE_KEY and ${PRIVATE_KEY} when running bbrun with -e PRIVATE_KEY=***

在 credentials.json 中作为变量的值。

我不确定 bbrun 是否在这里出错,bitbucket 管道实际上会传递变量值,但是在使用变量运行时出现此错误:

Error: Error in function call

---

Call to function "jsondecode" failed: invalid character '$' in string escape
code.

我也累加:

            variables:
              PRIVATE_KEY_ID: $PRIVATE_KEY_ID
              PRIVATE_KEY: $PRIVATE_KEY

没用。

我还尝试使用 envsubst 命令编辑步骤脚本文件,但这似乎有点愚蠢。

【问题讨论】:

  • 你可以粘贴你尝试传递private_key变量时使用的json文件吗?
  • 在整个凭证文件中通过base64解决它,然后将编码行作为变量添加到管道中,然后回显该变量并将其解码到文件中。
  • 很高兴听到 - 你能更清楚地解释你是如何解决它的(附上一些代码等) - 这将对社区非常有益。
  • 基本上你想运行 cat credentials.json | base64 并将命令的输出作为名为 CREDS 的变量的秘密值放在管道存储库中,所以在第一步管道设置命令echo $CREDS | base64 -d > ./wherever/it/is/credentials.json
  • 太棒了 :) 你能把它作为答案发布吗?

标签: docker google-cloud-platform continuous-integration bitbucket-pipelines


【解决方案1】:

基本上你想运行

cat credentials.json | base64

然后将命令的输出作为名为 CREDS 的变量的秘密值放入管道的存储库中,因此在管道的第一步中设置命令

echo $CREDS | base64 -d > ./wherever/it/is/credentials.json 

不要忘记使用工件,以便在需要时保存文件以供下一步使用。

【讨论】:

    猜你喜欢
    • 2021-08-10
    • 2022-01-01
    • 1970-01-01
    • 2021-05-25
    • 2018-12-28
    • 2011-04-12
    • 2017-01-24
    • 2018-05-17
    • 2012-04-20
    相关资源
    最近更新 更多