NCチームで使用する開発環境のテンプレートです.
main ブランチへの直接プッシュを禁止し,プルリクエスト経由のマージを強制します.
GitHub の新しい Rulesets を使用して設定します.
- GitHub リポジトリの Settings > Rules > Rulesets を開く
- New ruleset > New branch ruleset をクリック
- 以下を設定して Save changes をクリックする
| 項目 | 値 |
|---|---|
| Ruleset name | pullreq(任意) |
| Enforcement status | Active |
| Target branches | Default branch(main) |
| ロール | 許可内容 |
|---|---|
| Organization admin | Allow for pull requests only |
| Repository admin | Always allow |
| ルール | 説明 |
|---|---|
| Restrict deletions | ブランチの誤削除を防ぐ |
| Require a pull request before merging | マージ前に PR を必須にする |
| Require status checks to pass | CI テストが通過しないとマージ不可 |
| Block force pushes | 履歴の強制書き換えを禁止する |
| Automatically request Copilot code review | PR 作成時に Copilot によるコードレビューを自動リクエストする |
Dev Container を使用することで,チーム全員が同一の開発環境を再現できます.
- Docker がインストール済みであること
- Visual Studio Code がインストール済みであること
- VS Code 拡張機能 Dev Containers がインストール済みであること
- VS Code でリポジトリのルートディレクトリを開く
- コマンドパレットを開く(
Cmd+Shift+P/Ctrl+Shift+P) Dev Containers: Reopen in Containerを選択する- コンテナのビルドが完了するまで待つ
コンテナ起動後は,.devcontainer/devcontainer.json に定義された環境が自動的に適用されます.
GitHub Issues をチケットとして使用し,1 チケット 1 ブランチで作業を管理します.
main
└─ dev
└─ feat/*** ─── 作業 ─── PR ──→ dev ─── PR ──→ main
- GitHub Issues で
[FEAT]チケットを作成する devブランチからfeat/***ブランチを切る(ブランチ名はチケットに記載)feat/***ブランチで作業を行う- 作業完了後,
feat/***からdevへ PR を作成してマージする
dev から main へマージするには,以下の条件をすべて満たす必要があります.
| 条件 | 状態 |
|---|---|
| CI テストが全て通過していること | 必須 |
| CD によるステージング環境へのデプロイが成功していること | 予定 |
| 開発者がログ・メトリクス・トレースの取得を確認していること | 予定 |
.gitmessage をコミットメッセージのテンプレートとして使用します.
リポジトリをクローン後,以下のコマンドを 1回だけ 実行してください.
git config commit.template .gitmessage設定後は git commit を実行すると,以下のテンプレートがエディタに表示されます.
# feat | fix | docs | refactor | test | chore
<type>: <subject>
Refs: #
| type | 用途 |
|---|---|
feat |
新機能の追加 |
fix |
バグ修正 |
docs |
ドキュメントのみの変更 |
refactor |
機能変更を伴わないコード改善 |
test |
テストの追加・修正 |
chore |
ビルド・設定などの雑務 |
各チケットには以下の役割を記載します.R はチケット作成者自身が担います.
| 役割 | 説明 |
|---|---|
| R: 実行責任者 (Responsible) | 実際に作業を行う人.チケット作成者が担当する |
| A: 説明責任者 (Accountable) | 成果物に対して最終責任を持つ人 |
| C: 協業先 (Consulted) | 作業に際して相談・協力を求める人 |
| I: 報告先 (Informed) | 進捗・完了を報告する人 |