GitHub Actionsで複数行のテキストを後続に渡す
This content is a draft and will not be included in production builds.
GitHub Actionsで、ワークフローを処理した結果のテキストを後続のステップに渡すにはいくつか方法がある。
steps:- run: echo "action_state=yellow" >> "$GITHUB_ENV" id: one- run: printf '%s\n' "$action_state" # This will output 'yellow' id: twoこのとき、GitHub Actionsでスクリプトインジェクション攻撃を防ぐ対策はしておくとよい。
上記では GITHUB_ENV を使ったが、GITHUB_OUTPUT に出力しておいて outputs から参照してもよい。
steps:- run: echo "name=value" >> "$GITHUB_OUTPUT" id: key- uses: upload with: name: steps.key.outputs.name複数行を渡したい場合、上記の方法では最初の改行で区切りと見なされてしまって動かないので、次のようにヒアドキュメントスタイルを使う必要がある。
steps:- run: | { echo 'text<<EOF' curl https://example.com echo EOF } >> "$GITHUB_ENV"- run: echo "$text"奇妙な書き方をしているが、どうやら GITHUB_ENV ファイルに次のようなテキストが書かれれば良いらしい。
{name}<<{delimiter}{text}{delimiter}これはWorkflow commands for GitHub Actionsの Multiline strings に説明がある。