
GitHub ActionsでRepository内のJson fileをパースする
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、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で良いかと思います。
参考
以上