GitHub ActionsでRepository内のJson fileをパースする
こんにちは、CX事業本部 IoT事業部の若槻です。
以前のエントリで次のようなことを試しました。
しかしその後、このRepository内に作成したJson fileをGitHub Actionsでパースして使用する処理が必要となったため、方法を確認してみました。
確認してみた
パース対象として、Repository(PushしたBranch)上に次のJson fileを作成しておきます。
{ "title": "データ取得APIを実装する", "createdAt": "2022/05/22T23:25:44" }
方法その1
Jsonの内容をContextに指定し、fromJsonというBuilt-inのFunctionでパースする方法です。
on: push jobs: parse_config_json: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Set json content to context id: set_json_content run: | content=`cat ./config.json` //複数行の場合は特殊文字をパース可能な文字に置き換える content="${content//'%'/'%25'}" content="${content//$'\n'/'%0A'}" content="${content//$'\r'/'%0D'}" echo "::set-output name=configJson::$content" - name: Echo run: | echo "Title is \"$TITLE\"." env: TITLE: ${{fromJson(steps.set_json_content.outputs.configJson).title}}
Json fileの値がパースできて、title
の値が取得できています!
参考
方法その2
Jsonの内容をjqコマンドでパースする方法です。パースして取得した値をGITHUB_ENV
にセットして、他のStepでも使えるようにしています。
on: push jobs: parse_config_json: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Set title to GITHUB_ENV run: | title=$(cat ./${ISSUE_NUMBER}/config.json | jq -r .title) echo "TITLE=${title}" >> $GITHUB_ENV - name: Echo run: | echo "Title is \"$TITLE\"."
Json fileの値がパースできて、title
の値が取得できています!
おわりに
GitHub ActionsでRepository内のJson fileをパースしてみました。
jqコマンドが使えない環境でばければ、記述がよりシンプルとなる方法2で良いかと思います。
参考
以上