Skip to content

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 から参照してもよい。

Terminal window
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 ActionsMultiline strings に説明がある。