LoginSignup
6
0

GitHub Actionsで複数行の文字列をstep間で受け渡す

Last updated at Posted at 2023-08-21

はじめに

GitHub Actions使ってますか?私はめっちゃ使ってます。
ずっとstep間での 複数行の文字列の受け渡し方法 に悩んでいたのですが、オフィシャルドキュメントをゆっくり読んでいたら、めちゃくちゃ普通に書いてあることに気が付きました。

複数行の文字列の場合、次の構文で区切り文字を使用できます。

{name}<<{delimiter}
{value}
{delimiter}

えぇぇ、この記述って昔からあったっけ?
なんで俺は気が付かなかったんだ・・・
なんで俺は改行文字をエスケープしたりファイルを媒介したりする苦労をしていたんだ・・・

正確な情報は常に公式ドキュメントにありますが、また忘れる可能性が高いので、自分のための備忘としてQiitaに記録しておこうと思ってこの記事を書いてます。

※ この記事は2023/08/21現在の情報に基づいて書いています。

複数行の文字列の受け渡しの実装例

公式ドキュメントでは環境変数( $GITHUB_ENV )を利用した受け渡しの例が書いてあります。
そして、公式ドキュメントに記載がありますが、同様に$GITHUB_OUTPUT を利用して受け渡しすることも可能です。
その例を以下にSnippetとして書いておきます。

この例では、Slack通知を行うActionに対して、事前のstepで処理したレポートファイルの中身を渡しています。デリミタの乱数化は公式ドキュメントの例に従ってます。

jobs:
  check-xxxxx:
    name: Check xxxxx
    runs-on: ubuntu-latest

    defaults:
      run:
        shell: bash
        working-directory: code/xxxxx-check

    env:
      REPORT_FILE: "/tmp/report-${{ github.run_id }}.txt"

            - name: "前処理をしてREPORT_FILEに出力しましょう"

      - name: Check report file
        id: check-report-file
        run: |
          if [ -s ${{ env.REPORT_FILE }} ]; then
            EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64)
            echo "report<<$EOF" >> "$GITHUB_OUTPUT"
            cat ${{ env.REPORT_FILE }} | tee -a "$GITHUB_OUTPUT"
                        cat ${{ env.REPORT_FILE }} >> "$GITHUB_STEP_SUMMARY" # Workflowの概要ページに出力したい場合の処理
            echo "$EOF" >> "$GITHUB_OUTPUT"
          fi
          exit 0

      - name: Notificate to Slack
        uses: rtCamp/action-slack-notify@v2
        env:
          SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
          SLACK_CHANNEL: "xxxxx"
          SLACK_USERNAME: GitHub Actions
          SLACK_ICON_EMOJI: ":xxxxx:"
          SLACK_COLOR: "#FF0000"
          SLACK_TITLE: "xxxxxx"
          SLACK_MESSAGE: "レポートは以下。\n```${{ steps.check-report-file.outputs.report }}```"

まとめ

公式ドキュメントをちゃんと読もう。

追記(2023/08/21 22:23)

もしかして set-output がdeprecatedになって $GITHUB_OUTPUT を使うようになったときに、この書式が増えたのかな。なるほどなー

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0