1
1

【Github 自動化】Issueを必須にするルール作り【#1】

Last updated at Posted at 2024-08-28

はじめに

  1. Issueをつくる
  2. ブランチを切る
  3. 細かくコミットする
  4. プルリクエストする

洗練された開発プロセスですね。

今回は

  • 「1. Issueをつくる」
  • 「4. プルリクエストする」

をサポートするルールを作成しようと思います。

1️⃣ プルリクエスト テンプレートを作る

この章でやること

  • プルリクエスト テンプレートを作成する
  • Githubのルールを利用し、プルリクエストにIssueを関連付ける
Issueを関連付ける方法

Pull RequestをIssueにリンクする

Issueをプルリクエストに関連付けることができます。
具体的には、以下の記述をします。

KEYWORD #ISSUE-NUMBER

  • resolve #1
  • close #1
  • fix #1

.github/pull_request_template.mdを作成

.github/pull_request_template.md
# Issue_number
resolve #

# Summary

注意事項

  • .githubは、プロジェクトのルートディレクトリに作成します
  • .github/workflows/に作成しないよう注意してください
  • 複数のIssueを関連付ける場合、都度KEYWORD #Issue_numberと記述します

2️⃣ Github Actionsのセットアップ

この章でやること

  • Github Actionを作成する
  • プルリクエストが#Issue_number含むかチェックする

.github/workflows/check-issue-link.ymlを作成

.github/workflows/check-issue-link.yml
name: Check Issue Link in PR

on:
  pull_request:

jobs:
  check-issue-link:
    runs-on: ubuntu-latest
    steps:
      - name: Check PR for Issue Link
        run: |
          PR_BODY=$(jq -r '.pull_request.body' "$GITHUB_EVENT_PATH")
          echo "$PR_BODY"
          if ! echo "$PR_BODY" | grep -qiE "(close[sd]?|fix(ed|es)?|resolve[sd]?) #[0-9]+"; then
            echo "Error: PR description must include a linked Issue (e.g., 'resolve #123')."
            exit 1
          fi

注意事項

  • 先ほどとは違い.github/workflowsディレクトリに作成しています

3️⃣ ブランチ保護ルールの設定

この章でやること

  • Issueを含まないプルリクエストをマージできないようにする
Settings->Branches 名前・ステータス・ターゲットブランチを設定
スクリーンショット 2024-08-28 20.30.44.png スクリーンショット 2024-08-28 22.21.31.png
作成したactionを適用
スクリーンショット 2024-08-28 22.26.51.png

注意事項

  • Createを押して適用するのを忘れずに

おわりに

以上、「Issueを必須にするルール作り」でした。

「mainブランチにプッシュさせない設定」もオススメです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1