🎃

GitHubActionsでPullRequestをトリガーとする時の例

2024/08/10に公開

GitHubActionsで効果的なPull Requestワークフローを構築する

GitHubActionsを使ってPull Request(PR)のワークフローを効率化する方法について書いています。
PRの作成時と、マージされて閉じられた時にトリガーされるactionsの例を紹介し、それぞれの使用場面について解説します。

1. PRが作成された時のAction

まず、PRが作成された時にトリガーされるactionの例を見てみましょう。

name: PR Created Checks

on:
  pull_request:
    types: [opened, reopened]

jobs:
  run-tests:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4.1.7
      - name: Set up Node.js
        uses: actions/setup-node@v4.0.3
        with:
          node-version: '14'
      - name: Install dependencies
        run: npm ci
      - name: Run tests
        run: npm test

説明

このactionは、PRが開かれたり再開されたりした時に実行されます。主な目的は、提案された変更がプロジェクトの既存のテストをパスするかどうかを確認することです。

使用タイミング

  • 新しいコードがプロジェクトの品質基準を満たしているか確認したい時
  • CI/CDパイプラインの一部として、早期にバグを発見したい時
  • コードレビューの前に基本的な検証を行いたい時

2. PRがマージされて閉じられた時のAction

次に、PRがmainブランチにマージされて閉じられた時にトリガーされるactionの例を見てみましょう。

name: Post-Merge Tasks

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

jobs:
  build-and-deploy:
    if: github.event.pull_request.merged == true
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4.1.7
      - name: Build project
        run: npm run build
      - name: Deploy to production
        run: |
          # デプロイスクリプトをここに記述
          echo "Deploying to production..."
      - name: Notify team
        uses: 8398a7/action-slack@v3.16.2
        with:
          status: ${{ job.status }}
          text: 'New changes have been deployed to production!'
          webhook_url: ${{ secrets.SLACK_WEBHOOK }}

説明

このactionは、PRがマージされて閉じられた時にのみ実行されます。
プロジェクトのビルド、本番環境へのデプロイ、そしてチームへの通知を行います。

使用タイミング

  • 承認された変更を自動的に本番環境(mainブランチ)にデプロイしたい時
  • デプロイ後のタスク(データベースマイグレーションなど)を実行したい時
  • 新機能のリリースをチームに通知したい時

まとめ

GitHubActionsを使用することで、PRのライフサイクルの重要なポイントで自動化されたタスクを実行できます。
PRの作成時にテストを実行することで、早期に問題を発見し、コードの品質を維持できます。一方、マージ後のactionを使用することで、デプロイプロセスを自動化し、チーム全体の生産性を向上させることができます。

GitHubで編集を提案

Discussion