GitHubActionsで複数行文字列の環境変数をGITHUB_ENVに書き込む
はじめに
GitHubActionsでワークフローを組んでいる際に、以下のようにしてJSONの中身を保存していたシークレットを環境変数に設定したい場面があった。
echo 'HOGE_JSON=${{ secrets.FUGA_JSON }}' >> $GITHUB_ENV
そうすると以下のようなエラーが出た。
Error: Invalid format ' ***'
調べてみると、複数行の文字列を環境変数$GITHUB_ENV
に書き込む際は専用の構文を使う必要があるらしいので残しておく。
方法
複数行の文字列を環境変数$GITHUB_ENV
に書き込む際は、以下の構文で区切り文字を使えるようだ。
{name}<<{delimiter}
{value}
{delimiter}
これを使うと、上で書いた処理は以下のように書き直すことができる。区切り文字としてEOF
を使用している。
{
echo 'HOGE_JSON<<EOF'
echo "${{ secrets.FUGA_JSON }}"
echo 'EOF'
} >> $GITHUB_ENV
ちなみに{}
はシェルコマンドをまとめて行うための記法。上の処理は以下のようにも書ける。
echo 'HOGE_JSON<<EOF' >> $GITHUB_ENV
echo "${{ secrets.FUGA_JSON }}" >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
おわり
これで複数行の文字列を$GITHUB_ENV
に書き込むことができた。
GitHubActionsはドキュメントがしっかりしているので本当にありがたい。