【個人的】チーム開発におけるGitHub Organization (Free) の設定と運用ルール
現在、GitHub Organization (Free) を活用してチーム開発を行っているが、無料版という制限の中で、どう運用 (妥協) しているのかなど、設定と運用ルールを書いていく。
Organizationの設定
基本的なVisibility
- RepositoryやPackage (未使用)、Projectの
VisibilityはPrivate - Peopleは
任意(GitHubのプロフィールにOrganizationを表示する or 表示しない)
People (招待方法)
Organizationに所属する全てのユーザを Member として招待する。
Team
Organizationには、Team という概念があり、これはDiscordでいう ロール のようなもの。
Team に対して、アクセス権限の設定やメンションを行うことが可能。
現在は以下の設定を行っている。
Team
├─member (内部のユーザ用)
│ └─developer (内部のユーザの中で開発に関わるユーザ用)
└─teacher (教員 (外部のユーザ用))
学生なので、チーム開発に関わる教員 (外部のユーザ) に対し、Read権を与えるために teacher を作成。
(良いTeam名が思いつかないので teacher としている)
Settings
特に書いていない部分はデフォルト設定。
Member privileges
Member repository permissions
Base permissions は No permission (手動で権限を割り当てたい為)
Admin repository permissions
Repository visibility change
Allow members to change repository visibilities for this organization は ☐ (PublicなRepositoryに変更出来ないようにようにする為)
Allow members to delete or transfer repositories for this organization は ☐ (Repositoryを削除または転送出来ないようにする為)
Member team permissions
Team creation rules
Allow members to create teams は ☐ (Teamを作成出来ないようにする為)
Security & analysis
便利な機能は活用する方針。
Enable all を全て押す (既存のRepositoryで有効化したい為)
Automatically enable は全て ☑ (Repository作成時に有効化したい為)
Webhooks
今回のチーム開発では、コミュニケーション手段の1つとしてDiscordを採用しているのでWebhookで通知を受け取る設定をする。
受け取るイベントは以下の設定を行っている。
☑ Check runs
☑ Code scanning alerts
☑ Discussions
☑ Forks (Forkを許可していないので届かないのが正解)
☑ Issues
☑ Organizations
☑ Projects (現時点でなぜか届かない/Discord側の対応待ち?)
☑ Project cards (現時点でなぜか届かない/Discord側の対応待ち?)
☑ Project columns (現時点でなぜか届かない/Discord側の対応待ち?)
☑ Pull requests
☑ Pull request reviews
☑ Repositories
☑ Repository imports
☑ Repository vulnerability alerts
☑ Secret scanning alerts
☑ Teams
Installed GitHub Apps
インストールしているGitHub Apps (一部)
-
project-bot
IssueやPull requestなどのイベントをトリガーに自動でProjectのカードを作成/移動してくれる (めっちゃ便利)
OrganizationのProject
Settings
特に書いていない部分はデフォルト設定。
一括して設定する場所がなさそうなので、Projectごとに設定。
Options
Organization member permission は None (手動で権限を割り当てたい為)
Teams
developer は Write
member は Read
teacher は Read
Repository
共通認識
-
mainブランチ,developブランチではgit push -fしない - ブランチ作成者本人以外が使用していそうなブランチで
git push -fする場合は関係する人に了承を得て、対応方法を伝える - Repository名やブランチ名は
英数字とハイフンのみ使用する - デフォルトブランチは
developブランチにする
ブランチモデル
- Initial commitした状態で
mainブランチからdevelopブランチを切る (初回のみ) -
developブランチからfeature/hogehogeブランチを切って実装開始 -
feature/hogehogeブランチからdevelopブランチへマージが完了したらfeature/hogehogeブランチは削除する (意図的に残す場合を除く)
Project
進捗管理に使用 (運用方法はお任せ)
Label, Milestone
運用方法はお任せ
Issue
テンプレートを基本的に導入する (必要な情報漏れを防いでコミュニケーションロスを軽減する為)
Pull request
テンプレートを基本的に導入する (必要な情報漏れを防いでコミュニケーションロスを軽減する為)
Pull requestをマージする際の条件
- Pull request作成者以外のレビュワーからApproveされている
- CI等のチェックが通った (導入している場合)
上記条件を満たした場合のみマージ可能 (無料版ではこのあたりの設定が出来ない)
Settings
特に書いていない部分はデフォルト設定。
Manage access
developer は Maintain
member は Triage
teacher は Read
Manual Repository
Repository のマニュアルが格納されている。
知見共有や技術的な質問
本来Wikiを使いたかったが、無料版ではPrivateなRepositoryでの有効化が出来なった為、以下の対応を行っている。
Discussion
Discussionが有効化されており、知見共有や技術的な質問はここで行う (QiitaやZennのような使い方)
Categoryは以下の設定を行っている。
Tips (知見共有)
Q&A (技術的な質問)
あとがき
試行錯誤を重ねながら運用ルールを変えていったりしている状況だが、落ち着いてきたので文章化を兼ねてこの投稿を書いた。
イレギュラーな運用方法も混ざっているとは思うが、より良い設定や運用ルールに改善していきたい思う💪
Discussion
ものすごく参考にしています、ありがとうございます!