Skip to main content

Enterprise Server 3.16 は、現在リリース候補として使用できます。

条件を使用してジョブの実行を制御する

条件が満たされない限り、ジョブが実行されないようにします。

Note

GitHub ホステッド ランナーは、現在 GitHub Enterprise Server ではサポートされていません。 GitHub public roadmap で、今後の計画的なサポートの詳細を確認できます。

概要

Note

スキップされたジョブは、その状態が "成功" として報告されます。 必要なチェックであっても、pull request のマージを妨げるものではありません。

jobs.<job_id>.if 条件文を使って、条件が満たされなければジョブを実行しないようにできます。 条件文を作成するには、サポートされている任意のコンテキストや式が使えます。 このキーでサポートされているコンテキストの詳細については、「ワークフロー実行に関するコンテキスト情報へのアクセス」を参照してください。

Note

jobs.<job_id>.if 条件は、jobs.<job_id>.strategy.matrix が適用される前に評価されます。

if 条件の中で式を使う際には、任意で式構文 ${{ }} を省略できます。これは、GitHub Actions が if 条件を式として自動的に評価するためです。 ただし、この例外はどこでも適用されるわけではありません。

! は YAML 形式で予約された表記であるため、必ず${{ }} 構文の式を使用するか、式が ! で始まる場合は ''""、または () でエスケープする必要があります。 次に例を示します。

if: ${{ ! startsWith(github.ref, 'refs/tags/') }}

詳しくは、「ワークフローとアクションで式を評価する」をご覧ください。

例: 特定のリポジトリに対してのみジョブを実行する

この例では if を使って production-deploy ジョブを実行できるタイミングを制御しています。 リポジトリが octo-repo-prod という名前で、octo-org という組織内にある場合のみ実行されます。 それ以外の場合、ジョブはスキップ済みとしてマーク されます

YAML
name: example-workflow
on: [push]
jobs:
  production-deploy:
    if: github.repository == 'octo-org/octo-repo-prod'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '14'
      - run: npm install -g bats

スキップされたジョブでは、"このチェックはスキップされました" と表示されます。

Note

ワークフローの一部では、環境変数を使用できません。 代わりに、コンテキストを使って環境変数の値にアクセスできます。 詳しくは、「変数に情報を格納する」をご覧ください。