如何将变量传递到bitbucket-pipelines中的credentials.json?

2023-12-03

我正在使用 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

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

例如,如果我在 bitbucket-pipelines 控制台 PRIVATE_KEY 中添加一个 Secret 变量 我想让 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 命令编辑步骤脚本文件,该命令有效,但这似乎使用起来有点愚蠢。


本质上你想跑

cat credentials.json | base64

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将变量传递到bitbucket-pipelines中的credentials.json? 的相关文章

随机推荐