bashスクリプトを使用してYAMLファイルの変数プレースホルダをJSONファイルのネストした値に置き換える方法

bashスクリプトを使用してYAMLファイルの変数プレースホルダをJSONファイルのネストした値に置き換える方法

ネストされたJSONファイルから環境変数を取得し、YAMLファイルで一致/交換する必要がある特定のCI / CDビルド手順があります。

たとえば、私のJSONファイルでは次のようになります。

{
    "development": {
        "ENV1": "My Value"
    }
}

次に、プレースホルダを使用してYAMLファイルを定義します${development.ENV1}

env_variables:
  ENV1: ${development.ENV1}

これにより、bashスクリプトが実行されると、次のようにファイルが更新されます。

env_variables:
  ENV1: "My Value"

値をエクスポートし、環境envsubst変数を使用してこれを行う参照を見つけました。Google Community Builderこのように:

for f in $(ls ${files[*]}); do
    echo "Pre-processing ${f}..." >&2
    cat ${f} | envsubst ${shell_format:+"${shell_format}"} > ${f}.processed
    mv ${f}.processed ${f}
done

しかし、入れ子になったJSONを使ってこれと同等のことをする方法がわかりません。これはbashでの最初の「本当の」試みなので、ずっと学んでいます!

関連情報