LoginSignup
0
0

More than 1 year has passed since last update.

GitHub Actionsで他のジョブの環境変数を参照する

Last updated at Posted at 2023-04-22

問題点

  • あるジョブの環境変数を別のジョブで受け取り、その結果に基づいて処理を行いたいことがある
  • 例えば自動テストの結果(成功/失敗)をSlackに通知する場合など
  • しかし、GitHub Actionsではジョブ間の環境変数の受け渡しを直接行う機能は用意されていない

解決策

  • 一旦ファイルとして書き出してアップロードし、そのファイルを別のジョブからダウンロードして参照するというのが一般的な解決策となる
  • ファイルのアップロードやダウンロードを行えるアクションとしてactions/upload-artifact@v3actions/download-artifact@v3が用意されている

検証

  • 設定
.github/workflows/main.yml
name: Artifacts example

on:
  push:

jobs:
  something-job:
    runs-on:
      - ubuntu-latest

    steps:
      # 自動テストの実行等
      - name: Do something
        run: echo Something

      - name: Save job status
        # 前のステップの成功/失敗に関わらず、このステップが実行されるようにする
        # デフォルトでは前のステップが失敗した場合、後続のステップは実行されない
        if: always()
        # ジョブのステータス(成功/失敗)をファイルに書き出し
        run: echo "${{ job.status }}" > something-job-status

      - name: Upload job status
        if: always()
        # ファイルのアップロード
        uses: actions/upload-artifact@v3
        with:
          name: something-job-status
          path: something-job-status

  notify:
    # something-job の実行後にこのジョブが実行されるようにする
    needs:
      - something-job

    # 前のジョブの成功/失敗に関わらず、このジョブが実行されるようにする
    # デフォルトでは前のジョブが失敗した場合、後続のジョブは実行されない
    if: always()

    runs-on:
      - ubuntu-latest

    steps:
      # ファイルのダウンロード
      - name: Download something job status
        uses: actions/download-artifact@v3
        with:
          name: something-job-status

      # something-job のジョブのステータスを参照
      - name: Display job1 status
        run: cat something-job-status
  • 実行結果

0
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
0
0