GitHub Actions 条件式チートシート:if/contains/startsWith/always/success/failure

GitHub Actions でワークフローを作成する際、特定の条件でジョブやステップを実行したい場面は多いですよね。 本記事では、GitHub Actions の条件式(if 条件)について、実践的な使い方を徹底解説します。 contains や startsWith などの関数、always や success といったステータスチェック関数まで、使える条件式を網羅的にご紹介しますね。
早見表:GitHub Actions 条件式一覧
# | 条件式 | 説明 | 使用例 |
---|---|---|---|
1 | if: success() | 前のステップが成功した場合に実行 | 通常のステップ実行 |
2 | if: failure() | 前のステップが失敗した場合に実行 | エラー通知、ロールバック |
3 | if: always() | 前のステップの結果に関わらず常に実行 | クリーンアップ、ログ保存 |
4 | if: cancelled() | ワークフローがキャンセルされた場合に実行 | キャンセル時の後処理 |
5 | if: contains(値, '検索文字列') | 値に特定の文字列が含まれる場合に実行 | ブランチ名、コミットメッセージの判定 |
6 | if: startsWith(値, '接頭辞') | 値が特定の文字列で始まる場合に実行 | feature/ ブランチの判定 |
7 | if: endsWith(値, '接尾辞') | 値が特定の文字列で終わる場合に実行 | ファイル拡張子の判定 |
8 | if: github.event_name == 'push' | 特定のイベントで実行 | push、pull_request の判定 |
9 | if: github.ref == 'refs/heads/main' | 特定のブランチで実行 | main ブランチでのみ実行 |
10 | if: runner.os == 'Linux' | 特定の OS で実行 | OS 依存の処理 |
11 | if: env.DEBUG == 'true' | 環境変数による条件分岐 | デバッグモードの切り替え |
12 | if: steps.ステップID.outputs.結果 == '値' | 前ステップの出力による条件分岐 | テスト結果に応じた処理 |
背景
GitHub Actions は、CI/CD パイプラインを構築するための強力なツールです。 ワークフローを作成する際、すべてのステップを常に実行するわけではなく、特定の条件下でのみ実行したい場面が頻繁にありますね。
たとえば、以下のような要件があります。
- main ブランチへのプッシュ時のみデプロイを実行したい
- テストが失敗したときだけ通知を送りたい
- feature/ で始まるブランチでは特定の処理をスキップしたい
- 前のステップの結果に応じて次の処理を変えたい
こうした柔軟なワークフロー制御を実現するために、GitHub Actions には強力な条件式の仕組みが用意されています。
以下の図は、条件式がワークフローのどの段階で評価されるかを示したものです。
mermaidflowchart TB
trigger["ワークフロー<br/>トリガー発火"] --> eval["条件式 if の<br/>評価"]
eval -->|"true"| exec["ステップまたは<br/>ジョブを実行"]
eval -->|"false"| skip["スキップ"]
exec --> next["次のステップへ"]
skip --> next
next --> check{"他に実行する<br/>ステップがある?"}
check -->|"はい"| eval
check -->|"いいえ"| done["ワークフロー完了"]
図で理解できる要点
- 条件式は各ステップ・ジョブの実行前に評価される
- true なら実行、false ならスキップされる
- スキップされたステップも後続の処理には影響しない
課題
GitHub Actions で条件式を使う際には、以下のような課題に直面することがあります。
複雑な条件式の構文
GitHub Actions の条件式は、独自の構文と関数を使用します。 一般的なプログラミング言語とは異なる記法のため、初めて使う際には戸惑うことが多いでしょう。
ステータスチェック関数の理解不足
success()
、failure()
、always()
などのステータスチェック関数は、前のステップの結果に応じた処理を行うために重要です。
しかし、これらの関数のデフォルト動作や使い分けが明確でないと、意図しない動作になることがありますね。
コンテキスト変数の活用方法
github.ref
、github.event_name
、runner.os
といったコンテキスト変数は、ワークフローの実行環境に関する情報を提供します。
これらをどのように条件式で活用するかを理解しないと、柔軟なワークフローを構築できません。
以下の図は、条件式を使わない場合と使う場合の違いを示しています。
mermaidflowchart LR
subgraph without["条件式なし"]
step1["ステップ1"] --> step2["ステップ2"]
step2 --> step3["ステップ3"]
step3 --> step4["ステップ4"]
end
subgraph with["条件式あり"]
stepA["ステップ1"] --> evalB{"条件式B"}
evalB -->|"true"| stepB["ステップ2"]
evalB -->|"false"| evalC{"条件式C"}
stepB --> evalC
evalC -->|"true"| stepC["ステップ3"]
evalC -->|"false"| stepD["ステップ4"]
stepC --> stepD
end
図で理解できる要点
- 条件式なしでは全ステップが順次実行される
- 条件式ありでは、条件に応じて実行経路が分岐する
- より柔軟で効率的なワークフローが実現できる
解決策
GitHub Actions の条件式を使いこなすことで、これらの課題を解決できます。 ここでは、代表的な条件式と関数について、具体的な使い方を解説しますね。
if 条件の基本構文
GitHub Actions では、if
キーワードを使ってジョブやステップに条件を設定します。
yaml- name: ステップ名
if: 条件式
run: コマンド
条件式は ${{ }}
で囲む必要はありません。
GitHub Actions が自動的に式として評価してくれます。
ステータスチェック関数
success() - 前のステップが成功した場合
デフォルトでは、各ステップは暗黙的に if: success()
が設定されています。
前のステップが成功した場合のみ実行されますね。
yaml- name: テスト実行
run: npm test
- name: テスト成功時のみ実行
if: success()
run: echo "テストが成功しました"
failure() - 前のステップが失敗した場合
前のステップが失敗したときのみ実行したい場合に使用します。 エラー通知やロールバック処理に便利です。
yaml- name: テスト実行
run: npm test
- name: テスト失敗時の通知
if: failure()
run: echo "テストが失敗しました" && exit 0
ポイント: failure()
を使ったステップ自体は成功扱いにするため、exit 0
を使うことが多いです。
always() - 常に実行
前のステップの成否に関わらず、常に実行したい場合に使用します。 クリーンアップ処理やログの保存に最適ですね。
yaml- name: テスト実行
run: npm test
- name: 後処理(常に実行)
if: always()
run: |
echo "ワークフロー完了"
npm run cleanup
cancelled() - ワークフローがキャンセルされた場合
ワークフローがキャンセルされたときに実行されます。 キャンセル時の後処理に使用できますね。
yaml- name: キャンセル時の処理
if: cancelled()
run: echo "ワークフローがキャンセルされました"
以下の図は、各ステータスチェック関数の動作を示しています。
mermaidstateDiagram-v2
[*] --> StepExecuting: ステップ実行開始
StepExecuting --> Success: 成功
StepExecuting --> Failure: 失敗
StepExecuting --> Cancelled: キャンセル
Success --> NextStep_success: success() 条件
Failure --> NextStep_failure: failure() 条件
Cancelled --> NextStep_cancelled: cancelled() 条件
Success --> NextStep_always: always() 条件
Failure --> NextStep_always
Cancelled --> NextStep_always
NextStep_success --> [*]
NextStep_failure --> [*]
NextStep_cancelled --> [*]
NextStep_always --> [*]
図で理解できる要点
- ステップの実行結果は 3 つの状態(成功、失敗、キャンセル)に分かれる
success()
は成功時のみ、failure()
は失敗時のみ実行されるalways()
はすべての状態で実行される
文字列検索関数
contains() - 文字列が含まれるかチェック
contains(検索対象, '検索文字列')
は、検索対象に特定の文字列が含まれているかを判定します。
yaml- name: feature ブランチを含む場合に実行
if: contains(github.ref, 'feature')
run: echo "feature ブランチです"
コミットメッセージに特定のキーワードが含まれる場合の条件分岐も可能です。
yaml- name: コミットメッセージに [skip ci] がない場合に実行
if: contains(github.event.head_commit.message, '[skip ci]') == false
run: npm test
startsWith() - 文字列が特定の接頭辞で始まるかチェック
startsWith(検索対象, '接頭辞')
は、文字列が特定の接頭辞で始まるかを判定します。
yaml- name: feature/ ブランチのみ実行
if: startsWith(github.ref, 'refs/heads/feature/')
run: echo "feature ブランチです"
複数の接頭辞を OR 条件で組み合わせることもできます。
yaml- name: feature/ または bugfix/ ブランチで実行
if: |
startsWith(github.ref, 'refs/heads/feature/') ||
startsWith(github.ref, 'refs/heads/bugfix/')
run: echo "開発ブランチです"
endsWith() - 文字列が特定の接尾辞で終わるかチェック
endsWith(検索対象, '接尾辞')
は、文字列が特定の接尾辞で終わるかを判定します。
yaml- name: .js ファイルが変更された場合に実行
if: endsWith(github.event.head_commit.modified[0], '.js')
run: npm run lint:js
コンテキスト変数を使った条件式
github.event_name - イベントタイプによる条件分岐
GitHub Actions は、push、pull_request、schedule など、さまざまなイベントで起動できます。
github.event_name
を使って、イベントタイプに応じた処理を行えますね。
yaml- name: push イベント時のみ実行
if: github.event_name == 'push'
run: echo "push イベントです"
yaml- name: pull_request イベント時のみ実行
if: github.event_name == 'pull_request'
run: npm run test:pr
github.ref - ブランチ名による条件分岐
github.ref
は、現在のブランチやタグの参照を表します。
特定のブランチでのみ実行したい処理に使用できますね。
yaml- name: main ブランチのみデプロイ
if: github.ref == 'refs/heads/main'
run: npm run deploy
yaml- name: develop ブランチのみ実行
if: github.ref == 'refs/heads/develop'
run: npm run deploy:staging
runner.os - OS による条件分岐
マルチ OS 環境でワークフローを実行する場合、runner.os
を使って OS ごとに異なる処理を実行できます。
yaml- name: Linux のみ実行
if: runner.os == 'Linux'
run: apt-get update
yaml- name: macOS のみ実行
if: runner.os == 'macOS'
run: brew update
yaml- name: Windows のみ実行
if: runner.os == 'Windows'
run: choco upgrade
env - 環境変数による条件分岐
環境変数を使った条件分岐も可能です。 デバッグモードや環境ごとの設定に便利ですね。
yamlenv:
DEBUG: 'true'
steps:
- name: デバッグモード時のみ実行
if: env.DEBUG == 'true'
run: echo "デバッグモードが有効です"
yamlenv:
ENVIRONMENT: 'production'
steps:
- name: 本番環境のみ実行
if: env.ENVIRONMENT == 'production'
run: npm run deploy:prod
steps.ステップ ID.outputs - 前ステップの出力による条件分岐
前のステップの出力結果を使って、次のステップの実行を制御できます。
yaml- name: テスト実行
id: test_step
run: |
npm test
echo "result=success" >> $GITHUB_OUTPUT
yaml- name: テスト結果による条件分岐
if: steps.test_step.outputs.result == 'success'
run: echo "テストが成功しました"
論理演算子の使用
複数の条件を組み合わせる場合、論理演算子を使用します。
AND 条件 (&&)
yaml- name: main ブランチかつ push イベント時に実行
if: |
github.ref == 'refs/heads/main' &&
github.event_name == 'push'
run: npm run deploy
OR 条件 (||)
yaml- name: main または develop ブランチで実行
if: |
github.ref == 'refs/heads/main' ||
github.ref == 'refs/heads/develop'
run: npm run build
NOT 条件 (!)
yaml- name: main ブランチ以外で実行
if: github.ref != 'refs/heads/main'
run: npm run test
yaml- name: push イベント以外で実行
if: "!contains(github.event_name, 'push')"
run: echo "push 以外のイベントです"
ジョブレベルでの条件式
条件式は、ステップだけでなくジョブレベルでも使用できます。
yamljobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: npm test
yamldeploy:
runs-on: ubuntu-latest
needs: test
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v3
- run: npm run deploy
この例では、deploy
ジョブは test
ジョブが成功し、かつ main ブランチの場合のみ実行されます。
以下の図は、条件式を使った実践的なワークフローの流れを示しています。
mermaidflowchart TD
start["ワークフロー開始"] --> checkout["コードチェックアウト"]
checkout --> test["テスト実行"]
test --> test_result{"テスト結果"}
test_result -->|"成功"| build["ビルド実行"]
test_result -->|"失敗"| notify_fail["失敗通知<br/>if: failure()"]
build --> branch_check{"ブランチ確認<br/>if: github.ref"}
branch_check -->|"main"| deploy_prod["本番デプロイ"]
branch_check -->|"develop"| deploy_stg["ステージングデプロイ"]
branch_check -->|"その他"| skip_deploy["デプロイスキップ"]
deploy_prod --> cleanup["クリーンアップ<br/>if: always()"]
deploy_stg --> cleanup
skip_deploy --> cleanup
notify_fail --> cleanup
cleanup --> end_workflow["ワークフロー完了"]
図で理解できる要点
- テスト結果に応じて後続処理が分岐する
- ブランチごとに異なるデプロイ先を設定できる
- クリーンアップは常に実行され、確実に後処理が行われる
具体例
ここでは、実践的なユースケースごとに、条件式を使ったワークフローの例を紹介します。
例 1:ブランチごとの自動デプロイ
main ブランチへの push 時のみ本番環境にデプロイし、develop ブランチへの push 時はステージング環境にデプロイする例です。
yamlname: デプロイワークフロー
on:
push:
branches:
- main
- develop
yamljobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: コードチェックアウト
uses: actions/checkout@v3
yaml- name: Node.js セットアップ
uses: actions/setup-node@v3
with:
node-version: '18'
yaml- name: 依存関係インストール
run: yarn install --frozen-lockfile
yaml- name: ビルド
run: yarn build
yaml- name: 本番環境デプロイ
if: github.ref == 'refs/heads/main'
run: |
echo "本番環境にデプロイ中..."
yarn deploy:prod
env:
DEPLOY_TOKEN: ${{ secrets.PROD_DEPLOY_TOKEN }}
yaml- name: ステージング環境デプロイ
if: github.ref == 'refs/heads/develop'
run: |
echo "ステージング環境にデプロイ中..."
yarn deploy:staging
env:
DEPLOY_TOKEN: ${{ secrets.STAGING_DEPLOY_TOKEN }}
yaml- name: デプロイ完了通知
if: success()
run: echo "デプロイが成功しました"
このワークフローでは、ブランチに応じて適切なデプロイ先を選択しています。
github.ref
を使うことで、同じワークフローファイルでブランチごとの処理を管理できますね。
例 2:テスト失敗時の通知
テストが失敗した場合のみ、Slack に通知を送る例です。
yamlname: テストワークフロー
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: コードチェックアウト
uses: actions/checkout@v3
yaml- name: Node.js セットアップ
uses: actions/setup-node@v3
with:
node-version: '18'
yaml- name: 依存関係インストール
run: yarn install --frozen-lockfile
yaml- name: テスト実行
run: yarn test
yaml- name: テスト失敗時の Slack 通知
if: failure()
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
text: 'テストが失敗しました'
webhook_url: ${{ secrets.SLACK_WEBHOOK }}
yaml- name: ログ保存(常に実行)
if: always()
uses: actions/upload-artifact@v3
with:
name: test-logs
path: logs/
テストが失敗した場合のみ通知を送り、ログは成否に関わらず常に保存します。 これにより、不要な通知を避けつつ、必要な情報は確実に残せますね。
例 3:feature ブランチでのみ特定の処理を実行
feature ブランチでのみプレビュー環境にデプロイする例です。
yamlname: プレビューデプロイ
on:
push:
branches:
- 'feature/**'
yamljobs:
preview:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/heads/feature/')
steps:
- name: コードチェックアウト
uses: actions/checkout@v3
yaml- name: ブランチ名取得
id: branch
run: |
branch_name=${GITHUB_REF#refs/heads/}
echo "name=${branch_name}" >> $GITHUB_OUTPUT
yaml- name: プレビュー環境デプロイ
run: |
echo "プレビュー環境にデプロイ中..."
yarn deploy:preview --branch=${{ steps.branch.outputs.name }}
env:
PREVIEW_TOKEN: ${{ secrets.PREVIEW_DEPLOY_TOKEN }}
yaml- name: プレビュー URL をコメント
uses: actions/github-script@v6
with:
script: |
const branch = '${{ steps.branch.outputs.name }}'
const url = `https://preview-${branch}.example.com`
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `プレビュー環境: ${url}`
})
startsWith()
を使うことで、feature/ で始まるブランチのみをターゲットにできます。
ブランチごとにユニークなプレビュー環境を作成し、PR にコメントすることで、レビュー効率が上がりますね。
例 4:複数条件の組み合わせ
複数の条件を組み合わせた、より高度な例です。
yamlname: 条件付きデプロイ
on: [push, pull_request]
yamljobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: コードチェックアウト
uses: actions/checkout@v3
yaml- name: コミットメッセージ確認
id: commit_check
run: |
message="${{ github.event.head_commit.message }}"
echo "message=${message}" >> $GITHUB_OUTPUT
yaml- name: ビルド
if: |
github.event_name == 'push' &&
!contains(steps.commit_check.outputs.message, '[skip ci]')
run: yarn build
yaml- name: 本番デプロイ
if: |
github.ref == 'refs/heads/main' &&
github.event_name == 'push' &&
!contains(steps.commit_check.outputs.message, '[skip deploy]')
run: yarn deploy:prod
env:
DEPLOY_TOKEN: ${{ secrets.PROD_DEPLOY_TOKEN }}
yaml- name: PR ラベル確認
if: |
github.event_name == 'pull_request' &&
contains(github.event.pull_request.labels.*.name, 'ready-to-merge')
run: echo "PR は本番デプロイ可能です"
この例では、以下の複数条件を組み合わせています。
- イベントタイプ(push または pull_request)
- ブランチ名(main ブランチのみ)
- コミットメッセージの内容(特定キーワードの有無)
- PR ラベルの有無
複雑な条件を組み合わせることで、細かい制御が可能になります。
例 5:OS ごとの条件分岐
マルチ OS 環境でのテストと、OS ごとの処理分岐の例です。
yamlname: マルチ OS テスト
on: [push, pull_request]
yamljobs:
test:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: コードチェックアウト
uses: actions/checkout@v3
yaml- name: Node.js セットアップ
uses: actions/setup-node@v3
with:
node-version: '18'
yaml- name: Linux 用の依存関係インストール
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y libcairo2-dev
yaml- name: macOS 用の依存関係インストール
if: runner.os == 'macOS'
run: |
brew update
brew install cairo
yaml- name: Windows 用の依存関係インストール
if: runner.os == 'Windows'
run: |
choco install cairo
yaml- name: プロジェクト依存関係インストール
run: yarn install --frozen-lockfile
yaml- name: テスト実行
run: yarn test
yaml- name: Linux のみ:カバレッジアップロード
if: runner.os == 'Linux'
uses: codecov/codecov-action@v3
with:
files: ./coverage/lcov.info
runner.os
を使うことで、OS ごとに必要な依存関係のインストール方法を切り替えられます。
カバレッジのアップロードは Linux 環境でのみ行うことで、重複を避けられますね。
例 6:環境変数とステップ出力の組み合わせ
環境変数と前ステップの出力を組み合わせた、動的な条件分岐の例です。
yamlname: 動的条件分岐
on: push
yamlenv:
ENABLE_E2E_TEST: 'true'
DEPLOY_ENABLED: 'true'
yamljobs:
build_and_test:
runs-on: ubuntu-latest
outputs:
test_result: ${{ steps.test.outputs.result }}
coverage: ${{ steps.coverage.outputs.percentage }}
steps:
- name: コードチェックアウト
uses: actions/checkout@v3
yaml- name: ユニットテスト実行
id: test
run: |
yarn test
echo "result=success" >> $GITHUB_OUTPUT
yaml- name: カバレッジ確認
id: coverage
run: |
coverage=$(yarn test:coverage --json | jq -r '.total.lines.pct')
echo "percentage=${coverage}" >> $GITHUB_OUTPUT
echo "カバレッジ: ${coverage}%"
yaml- name: E2E テスト実行
if: env.ENABLE_E2E_TEST == 'true'
run: yarn test:e2e
yamldeploy:
needs: build_and_test
runs-on: ubuntu-latest
if: |
needs.build_and_test.outputs.test_result == 'success' &&
needs.build_and_test.outputs.coverage >= 80 &&
env.DEPLOY_ENABLED == 'true'
steps:
- name: コードチェックアウト
uses: actions/checkout@v3
yaml- name: デプロイ実行
run: |
echo "テスト結果: ${{ needs.build_and_test.outputs.test_result }}"
echo "カバレッジ: ${{ needs.build_and_test.outputs.coverage }}%"
yarn deploy:prod
yaml- name: デプロイ成功通知
if: success()
run: echo "デプロイが成功しました"
yaml- name: デプロイ失敗時のロールバック
if: failure()
run: |
echo "デプロイに失敗したため、ロールバックします"
yarn deploy:rollback
この例では、以下を組み合わせています。
- 環境変数による E2E テストの有効/無効切り替え
- 前ジョブの出力(テスト結果とカバレッジ)を使った条件分岐
- カバレッジが 80% 以上の場合のみデプロイを実行
- デプロイ失敗時の自動ロールバック
これにより、品質を担保しながら柔軟なデプロイフローを実現できますね。
以下の図は、この複雑なワークフローの全体像を示しています。
mermaidflowchart TD
start["ワークフロー開始"] --> checkout1["コードチェックアウト"]
checkout1 --> unit_test["ユニットテスト"]
unit_test --> coverage["カバレッジ測定"]
coverage --> e2e_check{"E2E テスト<br/>有効?<br/>env.ENABLE_E2E_TEST"}
e2e_check -->|"true"| e2e["E2E テスト実行"]
e2e_check -->|"false"| job1_done["ビルド&テスト<br/>ジョブ完了"]
e2e --> job1_done
job1_done --> deploy_check{"デプロイ条件確認<br/>・テスト成功?<br/>・カバレッジ≧80%?<br/>・DEPLOY_ENABLED?"}
deploy_check -->|"すべて true"| checkout2["コードチェックアウト"]
deploy_check -->|"いずれか false"| skip["デプロイスキップ"]
checkout2 --> deploy["デプロイ実行"]
deploy --> deploy_result{"デプロイ結果"}
deploy_result -->|"成功"| notify_success["成功通知<br/>if: success()"]
deploy_result -->|"失敗"| rollback["ロールバック<br/>if: failure()"]
notify_success --> end_workflow["ワークフロー完了"]
rollback --> end_workflow
skip --> end_workflow
図で理解できる要点
- 環境変数により E2E テストの実行を制御できる
- テスト結果とカバレッジの両方が条件を満たす場合のみデプロイが実行される
- デプロイ失敗時には自動的にロールバックが実行される
まとめ
GitHub Actions の条件式を活用することで、柔軟で効率的なワークフローを構築できます。 本記事でご紹介した内容をまとめますね。
ステータスチェック関数
success()
: 前のステップが成功した場合に実行(デフォルト動作)failure()
: 前のステップが失敗した場合に実行(エラー通知などに便利)always()
: 成否に関わらず常に実行(クリーンアップ処理に最適)cancelled()
: ワークフローがキャンセルされた場合に実行
文字列検索関数
contains(値, '文字列')
: 特定の文字列が含まれるかを判定startsWith(値, '接頭辞')
: 特定の接頭辞で始まるかを判定(feature/ ブランチなどに便利)endsWith(値, '接尾辞')
: 特定の接尾辞で終わるかを判定(ファイル拡張子の判定に便利)
コンテキスト変数
github.event_name
: イベントタイプ(push、pull_request など)による条件分岐github.ref
: ブランチ名による条件分岐(main ブランチのみデプロイなど)runner.os
: OS による条件分岐(Linux、macOS、Windows)env.変数名
: 環境変数による条件分岐steps.ステップID.outputs.変数名
: 前ステップの出力による条件分岐
論理演算子
&&
: AND 条件(すべての条件が true)||
: OR 条件(いずれかの条件が true)!
: NOT 条件(条件が false)
これらの条件式を組み合わせることで、ブランチごとのデプロイ制御、テスト失敗時の通知、OS ごとの処理分岐など、さまざまなユースケースに対応できますね。
条件式を効果的に使うことで、ワークフローの実行時間を短縮し、不要な処理をスキップし、適切なタイミングで必要な処理を実行できます。 ぜひ本記事の内容を参考に、皆さんのプロジェクトに合わせた条件式を活用してみてください。
関連リンク
- article
GitHub Actions 条件式チートシート:if/contains/startsWith/always/success/failure
- article
GitHub Actions を macOS ランナーで使いこなす:Xcode/コード署名/キーチェーン設定
- article
GitHub Actions 部分実行の比較:paths-filter vs if 条件 vs sparse-checkout
- article
GitHub Actions が突然失敗するときの切り分け術:ログレベル・re-run・debug secrets
- article
GitHub Actions の実行順序を完全図解:イベント → フィルタ → ジョブ → ステップの流れ
- article
GitHub Actions × Node.js:テストとデプロイを自動化する
- article
Apollo キャッシュ操作チートシート:`cache.modify`/`writeQuery`/`readFragment` 早見表
- article
GitHub Actions 条件式チートシート:if/contains/startsWith/always/success/failure
- article
Zod で CSV/TSV インポートを安全に処理:パース → 検証 → 差分レポート
- article
Yarn のインストール完全ガイド:Corepack 有効化からバージョン固定まで
- article
Git を macOS に最適導入:Homebrew・初期設定テンプレ・credential 管理まで
- article
Web Components で作るモーダルダイアログ:フォーカス管理・閉じる動線まで実装
- blog
iPhone 17シリーズの発表!全モデルiPhone 16から進化したポイントを見やすく整理
- blog
Googleストアから訂正案内!Pixel 10ポイント有効期限「1年」表示は誤りだった
- blog
【2025年8月】Googleストア「ストアポイント」は1年表記はミス?2年ルールとの整合性を検証
- blog
Googleストアの注文キャンセルはなぜ起きる?Pixel 10購入前に知るべき注意点
- blog
Pixcel 10シリーズの発表!全モデル Pixcel 9 から進化したポイントを見やすく整理
- blog
フロントエンドエンジニアの成長戦略:コーチングで最速スキルアップする方法
- review
今の自分に満足していますか?『持たざる者の逆襲 まだ何者でもない君へ』溝口勇児
- review
ついに語られた業界の裏側!『フジテレビの正体』堀江貴文が描くテレビ局の本当の姿
- review
愛する勇気を持てば人生が変わる!『幸せになる勇気』岸見一郎・古賀史健のアドラー実践編で真の幸福を手に入れる
- review
週末を変えれば年収も変わる!『世界の一流は「休日」に何をしているのか』越川慎司の一流週末メソッド
- review
新しい自分に会いに行こう!『自分の変え方』村岡大樹の認知科学コーチングで人生リセット
- review
科学革命から AI 時代へ!『サピエンス全史 下巻』ユヴァル・ノア・ハラリが予見する人類の未来