Github関連の設定

2024/10/03に公開

githubにPRを作成したときやissueを作りたいときのテンプレートを作成する

Issue

Bug template
.github/ISSUE_TEMPLATEに格納する

bug_report.md
---
name: Bug report
about: バグのissueのテンプレート
title: ''
labels: bug
assignees: ''

---

**バグの説明**
完結にバグの説明をする

**再現方法**
バグを再現する方法を以下に記載:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**期待する動作**
期待通りに動いた時の処理の結果などを説明

**スクリーンショット**
必要であれば追加

**※もし端末ごとのバグの場合はバージョンなどを記載**
**Desktop (please complete the following information):**
 - OS: [e.g. iOS]
 - Browser [e.g. chrome, safari]
 - Version [e.g. 22]

**Smartphone (please complete the following information):**
 - Device: [e.g. iPhone6]
 - OS: [e.g. iOS8.1]
 - Browser [e.g. stock browser, safari]
 - Version [e.g. 22]

**補足**
もしあれば補足を追加

Pull Request

.githubの配下に格納

PULL_REQUEST_TEMPLATE.md
## 概要
- このプルリクエストの目的や変更点の概要を記述します。

## issue
- issueのidを設定します。

## 変更点
- 具体的な変更点をリストアップします。
  - 変更点1
  - 変更点2

## 動作確認結果
- 変更点の動作確認結果を記述します。
  - [ ] 動作確認手順1が成功した
  - [ ] 動作確認手順2が成功した

## 注意点
- 注意点や追加の説明が必要な場合は記述します。

Merge check

本番用のmainブランチと開発用のdevブランチがある場合に、その他のブランチのPRはdevへのみ許可したい。誤ったブランチが設定されていないかを確認するためのworkflow。
dev→mainへのマージを許可
dev以外→devへのマージを許可、mainへのマージは不可
.github/workflowsに格納する。

merge_check.yml
name: Merge Check

on:
  pull_request:
    types:
      - opened
      - synchronize
      - reopened
      - edited

jobs:
  merge-check:
    runs-on: ubuntu-latest

    steps:
      - name: Check Merge Target
        run: |
          TARGET_BRANCH=$(jq --raw-output .pull_request.base.ref "$GITHUB_EVENT_PATH")
          BASE_BRANCH=$(jq --raw-output .pull_request.head.ref "$GITHUB_EVENT_PATH")

          if [ "$BASE_BRANCH" == "dev" ]; then
            echo "No need to check"
            exit 0
          fi

          if [ "$TARGET_BRANCH" == "main" ]; then
            echo "error: Cannot merge to main except from dev"
            exit 1
          fi

      - name: Add comment to PR
        if: failure()
        uses: actions/github-script@v6
        with:
          github-token: ${{secrets.PR_COMMENT_TOKEN}}
          script: |
            const issue_number = context.payload.pull_request.number;
            github.rest.issues.createComment({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: issue_number,
              body: "マージ先のブランチはdevを選択してください。"
            });

Discussion