ゆとりSEは副業がしたい

ゆとりSE

RPAやPythonをはじめとした情報系の発信やガジェットの紹介などがメインです

【GitHub Actions】特定の条件下のみジョブ実行: 効率的なCI/CDパイプラインの構築

GitHub Actionsで特定の条件下でジョブを実行する

GitHub Actionsを使用すると、コードの変更に応じて自動的にビルド、テスト、デプロイなどのジョブを実行できます。ただし、すべての変更に対してジョブを実行する必要はありません。特定の条件下でのみジョブを実行するように設定することができます。

以下では、GitHub Actionsでdevelopブランチからmainブランチへのプルリクエストが承認された場合のみ、ジョブを実行するようにする方法について説明します。

条件式を使用して特定の条件下でジョブを実行する

GitHub Actionsでは、on トリガーと if 条件を組み合わせることで、特定の条件下でのみジョブを実行できます。以下は、pull_request イベントをトリガーとし、プルリクエストがdevelopブランチからmainブランチへ向けられ、かつ、そのプルリクエストが承認された場合にジョブが実行されるようにする設定例です。

name: Your Workflow Name

on:
  pull_request:
    branches:
      - main
    types:
      - closed

jobs:
  your_job:
    if: github.event.pull_request.base.ref == 'main' && github.event.pull_request.head.ref == 'develop' && github.event.pull_request.merged == true
    runs-on: ubuntu-latest

    steps:
      # Your job steps

この設定により、プルリクエストがdevelopブランチからmainブランチへ向けられ、かつ、承認された場合のみジョブが実行されます。

コミットメッセージに適切な情報を含める

GitHub Actionsのワークフローを更新して、特定の条件下でのみ実行するようにした場合、コミットメッセージに適切な情報を含めることが重要です。以下は、適切なコミットメッセージの例です。

Update workflow for approved develop->main PRs

このコミットメッセージでは、GitHub Actionsのワークフローを更新し、developブランチからmainブランチへの承認されたプルリクエストでのみ実行されるようにしたことが簡潔に説明されています。

環境変数を使った条件指定

GitHub Actionsでは、環境変数を使って条件式を指定することもできます。例えば、環境変数TARGET_BRANCHSOURCE_BRANCHを使用して、特定のブランチ間でのプルリクエストにのみジョブを実行するように設定することができます。

jobs:
  your_job:
    if: github.event.pull_request.base.ref == env.TARGET_BRANCH && github.event.pull_request.head.ref == env.SOURCE_BRANCH && github.event.pull_request.merged == true
    runs-on: ubuntu-latest

    steps:
      - name: Set environment variables
        run: |
          echo "TARGET_BRANCH=main" >> $GITHUB_ENV
          echo "SOURCE_BRANCH=develop" >> $GITHUB_ENV
      # Your job steps

この設定では、TARGET_BRANCHSOURCE_BRANCH環境変数を設定し、それらを条件式で使用しています。この方法であれば、条件式を変更する際に環境変数の値を編集するだけで済むため、より柔軟性が向上します

まとめ

GitHub Actionsを使用すると、特定の条件下でのみジョブを実行する方法をGitHub Actionsで実装する方法について説明しました。この方法を使用することで、リソースの節約やワークフローの効率化が期待できます。適切なコミットメッセージを含めることにより、開発者間で変更の目的を簡潔に伝えることができます。GitHub Actionsは柔軟で強力なツールであり、特定の条件に基づいてジョブを実行することで、プロジェクトのニーズに合わせて最適化することが可能です。