Skip to main content

このバージョンの GitHub Enterprise サーバーはこの日付をもって終了となりました: 2024-03-26. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの向上、新機能の向上を図るために、最新バージョンの GitHub Enterprise サーバーにアップグレードしてください。 アップグレードに関するヘルプについては、GitHub Enterprise サポートにお問い合わせください

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

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

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

概要

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

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

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

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

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

式構文 ${{ }} を使用すると、内容が文字列に変わり、文字列は真値です。 たとえば、if: true && ${{ false }}true に評価されます。 詳しくは、「」をご覧ください。

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

この例では 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

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

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