devlog

Github Actions でファイルを作成し環境変数を埋め込む

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 - run: | cat <<'EOF' > note.md aaa bbb EOF

知らなかったですが、bash でヒアドキュメントを書くとき echo ではなく cat を使うんですね。zsh でも動くようです

ファイルを作成し環境変数を埋め込む

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