【個人的】チーム開発における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
ものすごく参考にしています、ありがとうございます!