2023-09-29
Github Actions で、テンプレートを render したい時がありました。
テンプレートエンジンを使いたいところですが、横着し envsubst コマンドで変数展開してみました。
ファイルを作成する
まず Github Actions でファイルを作成する方法です。ここでは note.md を作成します
name: ci on: workflow_dispatch: ci: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 # note.md を作成 - run: | cat <<'EOF' > note.md aaa bbb EOF
ファイルの中身が長いのでヒアドキュメントを用います
ファイルを作成し環境変数を埋め込む
envsubst で変数展開をします
name: ci on: workflow_dispatch: ci: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 # 環境変数 SOMETHING_VAR をセット - run: echo "SOMETHING_VAR=ccc" >> $GITHUB_ENV - run: | cat <<'EOF' | envsubst > note.md aaa bbb ${SOMETHING_VAR} EOF
なお、EOF の前後にシングルクォーテーションを書いている (cat <<'EOF'
) ため cat では変数展開されません。
envsubst を使わず cat で変数展開をする手もありますが、書き込む内容次第でコマンドが実行されてしまいます。
例えば、下記のように書くとdateコマンドが実行されます
$ cat << EOF ∙ $(date) ∙ EOF 2023年 9月29日 金曜日 18時21分46秒 JST
そのため、わざと envsubst を用いてます
作成日
2023-09-29
更新日
2023-10-22