Skip to content
Latchkey

GitHub Actions の needs キーワードとは?

needs キーワードは、1 つ以上の他の job が成功するまで job を待たせて、依存関係グラフを構築します。

job はデフォルトでは並列に実行されますが、実際の pipeline には順序があります。deploy の前にテスト、release の前に build。needs キーワードはそうした依存関係を表現し、上流の job output を公開します。

概要

先に完了しなければならない job を列挙する job レベルのキーです。依存する job は、needs に挙げたすべての job が成功した後にのみ実行されます。

A job dependency
jobs:
  test:
    runs-on: ubuntu-latest
    steps: [{ run: npm test }]
  deploy:
    needs: test
    runs-on: ubuntu-latest
    steps: [{ run: ./deploy.sh }]

仕組み

GitHub はすべての needs エントリから有向グラフを構築し、それに従って job をスケジュールします。上流の job が失敗すると、条件で上書きしない限り、依存する job はスキップされます。

output へのアクセス

依存する job は needs コンテキストを通じて上流の job の output を読み取ります。たとえば ${{ needs.build.outputs.version }} です。これによりグラフに沿ってデータが渡されます。

なぜ重要か

needs は並列 job のフラットな一覧を、順序付けられた pipeline に変えます。テストが通った後にのみ deploy が行われることを保証し、job 間でデータを流す方法です。

関連する概念

needsneeds コンテキストを公開し、job output と連携して job 間で値を移動させます。

重要なポイント

  • needs は job を他の job の成功まで待たせます。
  • job 間の依存関係グラフを形成します。
  • 上流の値は ${{ needs.X.outputs.Y }} で読み取ります。

関連ガイド