Github OrganizationとTeamsと外部委託
社外の人に開発してもらって、コード類をGithubに納品をしてもらうときにやることとかいろいろ
Github Team? Organization?
Organizationは組織を作り、組織内のグループをTeamと呼ぶ。 Github TeamはTeam単位でレポジトリのアクセス権限を設定できる。
レポジトリの権限設定
レポジトリの権限設定は初期設定があって、次に各レポジトリで個別にも設定できる 初期設定が書かれていない項目はgithubのデフォルトを利用。
https://github.com/organizations/NAME-ORGANIZATIONS/settings/member_privileges)
権限 | 内容 | 設定値 | 補足 | G |
---|---|---|---|---|
Base permissions | Teamメンバーがorg内のリポジトリを見れるか見れないかなど | No Permision | 設定しない限りメンバーはレポジトリを見れない | |
Repository creation | メンバーがレポジトリを作る際のpublic, privateの設定 | private | ||
Team creation rules | メンバーがteamを作れる権限 | disable |
レポジトリ - team毎のアクセス設定
https://github.com/NAME-ORGANIZATIONS/NAME-REPO/settings/access
orgは招待されたレポジトリ以外は何も見えなくなっている。Base permissionのNo Permission。なので、ここのレポジトリ毎に権限を設定する。 権限はRead, triage, Write, Maintain, Adminとあって、コード編集が必要な場合は基本的にWriteで良い
ブランチプロテクション
ブランチ毎に権限を設定できる。 設定->branchから権限設定をできる。
Github Teamの利用コスト
github 利用料金
4$ * 1user / 1month
Admin アカウントと外注先の人の人数*4$が毎月かかる計算 ただし、外注先と管理者のアカウントが必須なので、最低2アカウントの運用になる。
費用の確認
https://github.com/organizations/NAME-ORGANIZATION/settings/billing ここから、現在利用しているアカウント数、期限、料金周りが確認できる。
billing managerについて
githubではbilling managerという支払い管理者が設定できる。これはteamsの人数にカウントされなく、クレジットカードのアップデート情報などの特定の設定情報のみにアクセスできる
まとめ
うちでは、外注に開発してもらうというときに、
- 外注向けのチームを作成
- 開発中に初回のpushもしくはリリースタグの時点で、発注者側だけ触れるブランチを作成する(ブランチプロテクション)
- 外注の開発、補償期間が終わったら、そのチームメンバーを消す
っていうような流れですることにした。 もちろん外注を頼む人がもともと知り合いで、長年一緒にやっていたとかであれば特に制限とか考えなくていいかも。
結局、外部の人間に渡すってタイミングで最悪のケース(レポジトリ中身全部消してバックレ)みたいなことを検討しないと行けないので今感じだなぁ。 teamに入れないでexternal collabolaterでもいいんだけど、それだと、外部の人がレポジトリを作れなくなってしまうという。
githubはこの辺まで管理をする前提でできててすごいなー。って思った。