Instiq
第1章 · ワークフローの作成と管理·v1.0.0·更新 2026/6/14·読了目安 約16分

変更要約: GH-200 第1章を新規作成(トリガーとイベント=push/pull_request/schedule/workflow_dispatch/repository_dispatch/workflow_call・inputs/secrets、ワークフロー構造=jobs/steps/needs/if・env/$GITHUB_ENV・サービスコンテナ・strategy.matrix・コンテキスト/${{ }}式・YAMLアンカー、実行管理=アーティファクト/$GITHUB_OUTPUT/キャッシュ/$GITHUB_STEP_SUMMARY/バッジ/環境保護/retention REST API)

1.3実行結果の管理 — キャッシュ・アーティファクト・出力・ジョブサマリー

この節の要点

ジョブ間・ステップ間でデータを受け渡す方法(アーティファクト、$GITHUB_OUTPUT、$GITHUB_ENV、再利用可能ワークフローの outputs)、依存のキャッシュ、$GITHUB_STEP_SUMMARY による Markdown のジョブサマリー、ステータスバッジ、環境(environment)の保護、そして REST API によるログ・アーティファクト・実行の保持(retention)管理を理解します。

第2節で見たとおりジョブは独立環境で動くため、結果を明示的に受け渡す仕組みが要ります。GH-200 では、用途に応じて 3 つの経路を使い分けます——ファイル/成果物を渡す アーティファクト短い値をステップ/ジョブ間で渡す $GITHUB_OUTPUT(と環境変数の $GITHUB_ENV)、そして再利用可能ワークフローが呼び出し側へ返す outputs です。さらに、ビルドを速くする キャッシュ、結果を見やすく示す ジョブサマリー、状態を可視化する ステータスバッジ を組み合わせます。

1.3.1アーティファクト — ファイル/成果物の受け渡し

ビルド成果物・テストレポート・ログなどファイルを後続ジョブや実行後のダウンロードに残すには、actions/upload-artifact でアップロードし、actions/download-artifact で取得します。アーティファクトは実行(run)に紐づいて保存され、既定の 保持期間(retention) を過ぎると自動削除されます(リポジトリ/組織の設定や upload 時の retention-days で調整)。ジョブ間でファイルを渡す典型手段がこれで、後続ジョブは依存(needs)の後でダウンロードして使います。

1.3.2値の受け渡し — $GITHUB_OUTPUT とジョブ outputs

短い値(バージョン番号・判定結果など)を渡すには、ステップで echo "name=value" >> "$GITHUB_OUTPUT" と書いて ステップ出力 を作り、同じジョブ内では steps.<id>.outputs.<name> で参照します。別ジョブへ渡すには、ジョブの outputs: マップにステップ出力を割り当て、後続ジョブが needs.<job>.outputs.<name> で読みます。アーティファクトが「ファイル向け」なのに対し、こちらは「小さな値向け」と覚えると選択を誤りません。再利用可能ワークフローも同様に outputs を定義して呼び出し側へ結果を返します。

渡したいもの手段参照方法
ファイル/成果物アーティファクト(upload/download)download-artifact(needs 後)
短い値(同一ジョブ内)$GITHUB_OUTPUTsteps.<id>.outputs.<name>
短い値(別ジョブへ)ジョブ outputsneeds.<job>.outputs.<name>
環境変数(後続ステップ)$GITHUB_ENVenv.<NAME> / $NAME

1.3.3キャッシュで高速化

依存パッケージ(npm・pip・Maven など)の再ダウンロードは時間とコストの無駄です。actions/cache は、ロックファイルのハッシュなどから作った キー で依存ディレクトリを保存・復元し、次回以降のジョブを高速化します。完全一致がなくても restore-keys で部分一致の古いキャッシュを復元できます。キャッシュ(再現できる中間生成物)とアーティファクト(残したい成果物)は目的が違う点に注意——キャッシュはあくまで高速化のためで、消えても再生成できるものに使います。

1.3.4ジョブサマリーとステータスバッジ

実行結果を分かりやすく見せるには、$GITHUB_STEP_SUMMARY に Markdown を追記します——テスト結果の表・カバレッジ・関連リンクなどを書くと、実行ページに リッチなジョブサマリー として表示されます。リポジトリ全体の状態は ステータスバッジ(README に貼る SVG バッジ)で可視化でき、特定ブランチ/イベントの最新結果(成功/失敗)を一目で示せます。

1.3.5環境(environment)の保護と保持期間(retention)

デプロイ先などを表す 環境(environment) には 保護ルール を設定できます——必須レビュアー(required reviewers) による承認待ち、待機タイマー、デプロイを許可する ブランチの制限、そして環境スコープのシークレット/変数です。これにより「本番デプロイは承認後のみ」を強制できます。運用面では、ログ・アーティファクト・ワークフロー実行の 保持期間(retention) をリポジトリ/組織レベルで設定し、不要になった古いデータを自動削除します。これらの保持設定や成果物の取得・削除は REST API からも操作でき、棚卸しやコンプライアンス対応を自動化できます。

試験ポイント

頻出:
ファイルをジョブ間で渡す=アーティファクト(upload/download-artifact)。
短い値=$GITHUB_OUTPUT→steps/needs.<job>.outputs。
環境変数を後続へ=$GITHUB_ENV。
依存の高速化=actions/cache(key+restore-keys)。
リッチな実行サマリー=$GITHUB_STEP_SUMMARY(Markdown)。
本番デプロイを承認制に=environment の required reviewers/wait timer/branch 制限。
⑦保持期間(retention)と成果物は REST API で管理可能。

注意

混同・注意:
アーティファクト(残す成果物)とキャッシュ(高速化用の再生成可能データ)は別物——テストレポートはアーティファクト、node_modules はキャッシュ。
②$GITHUB_OUTPUT(値)と upload-artifact(ファイル)を取り違えない。
③環境(environment)の保護とブランチ保護ルールは別レイヤー。
④保持期間を過ぎたアーティファクトは消える——長期保管が要るものは外部ストレージへ。
⑤set-output 等の古いコマンドは非推奨——$GITHUB_OUTPUT を使う。

アーティファクト・$GITHUB_OUTPUT・キャッシュ・environment を並べた図。
ファイルは成果物・値は outputs

1.3.6この節のまとめ

  • ファイルはアーティファクト(upload/download-artifact)、短い値は $GITHUB_OUTPUT→steps/needs.<job>.outputs、環境変数は $GITHUB_ENV
  • actions/cache(key+restore-keys)で依存を高速化。キャッシュ≠アーティファクト
  • $GITHUB_STEP_SUMMARY で Markdown のジョブサマリー、README にステータスバッジ
  • environment の保護(必須レビュアー/待機/ブランチ制限)で承認制デプロイ。retention と成果物は REST API で管理

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. ビルドジョブが生成した実行ファイルを、後続のデプロイジョブで使いたいです。ジョブ間でファイルを渡す標準的な方法はどれですか?

Q2. あるジョブで計算したバージョン文字列を、別のジョブで参照したいです。最も適した方法はどれですか?

Q3. 毎回 npm の依存を再ダウンロードしてビルドが遅いです。再現可能な依存を保存・復元して高速化する仕組みはどれですか?

Q4. 本番(production)環境へのデプロイを、特定の担当者の承認後にだけ実行するよう強制したいです。どこで設定しますか?

Q5. テスト結果の表とカバレッジを、実行ページに見やすく表示したいです。どこに書き込みますか?

Q6. 古いアーティファクトやログを自動削除し、棚卸しを自動化したいです。これらの保持期間(retention)や成果物の管理に使えるのはどれですか?

理解度を確認第1章「ワークフローの作成と管理」の問題を解く