はじめに
現在起業家兼エンジニアをしており、フリマサービスを開発しています!
今有志を集めて合計10人ほどでサービスを開発しているのですが、よく間違えてmainブランチにPRを作ってしまうということがありました。
運用ルールとしては
main←develop←feature
とするようにしているのですが、main←featureとしてしまうことが何回かありました。
そのため、mainにはdevelopからしかPRを作れない設定をしたいと思いましたが、あんまりいい記事が出てこなかったので、ここに記しておきます。
手順
まずはGitHubでブランチ保護ルールを作成する
(設定してる人はこの手順は飛ばしてOK)
GitHubでmainブランチへのPRをdevelopブランチからのみに制限するためには、リポジトリのブランチ保護ルールを使用して設定します。以下の手順で設定できます。
- GitHubリポジトリのページにアクセスします。
- 右上の
Settings
をクリックします。 - 左サイドバーの
Branches
をクリックします。 -
Branch protection rules
セクションで、Add rule
またはEdit
(既にルールが存在する場合)をクリックします。 -
Branch name pattern
にmain
と入力して、mainブランチに対するルールを作成することを示します。 - さまざまな保護オプションが表示されますが、特に
Restrict who can push to matching branches
のセクションで、Allow Deletions
のチェックボックスをオフにします。 - PRの制限のために、
Require pull request reviews before merging
を有効にします。これにより、mainブランチへマージする前にPRのレビューが必須になります。 - このルールでは特定のブランチからのPRを制限する直接的な設定は提供されていません。そのため、この制限を実施するには、追加のツールやスクリプト、GitHub Actionsなどを使用する必要があります。
GitHub Actions でルールを設定
GitHub Actionsを使用してこの制約を適用する基本的な例:
.github/workflows/branch_restrictions.yml
ファイルを作成します。
name: Branch Restrictions
on:
pull_request:
branches:
- main
jobs:
check_base_branch:
runs-on: ubuntu-latest
steps:
- name: Fail if not from develop branch
run: |
if [[ "${{ github.event.pull_request.head.ref }}" != "develop" ]]; then
echo "Error: PRs to main must come from the develop branch."
exit 1
fi
このWorkflowは、mainブランチへのPRが開かれた際にトリガーされ、PRがdevelopブランチからのものでなければエラーを返します。
もっとやるのであれば、hotfixは通すとか、そういう設定はしてもいいかもしれません。
感想
チームで開発を行うようになり、サラリーマンの業務だとPdMやテックリーダーがいかにみんなが働きやすい環境を整備してくれているのかということを日々実感しています笑
チーム開発を行うためには、環境の整備が全てだなと感じます。
もちろん仲間の力を借りながらですが、Lintの設定やprettierの設定
pull_request_templateやissue_templateなど、上げたらキリがないほどルールを敷いて、水準を確保することは重要です。
ここら辺の大変さや、レビューの大変さはやらないと僕はわからなかったので、日々エンジニアとして働く皆様はマネージャーさんの努力なども感じられるようになるとすごくいいかなと思います(実際に僕はすごく感じました笑)
最後に
現在Swappyという同人誌のフリマサイトを開発中です!
参加したいと思う方は随時募集しているので、お気軽にDMください!
Next13で開発してます。
詳細
参考