bbrun を使用して、パイプラインの実行をローカルでシミュレートしています。基本的に私が必要としているのは (問題ではありません)、GCP 上のインフラストラクチャのテラグラント デプロイを自動化することです。したがって、タグでプッシュされるたびに、特定の環境がデプロイされます。
これは私の 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 に secrete 変数を追加すると、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 コマンドを使用してステップ スクリプトのファイルを編集しようとしましたが、これは使用するのがちょっとばかげているようです。