GitHub Organizationの権限を整理してなるべく円滑に進む状況を作った
今年は色々と整備をする機会も多く、GitHub Organization(以下Organization)もその対象となりました。特に権限周りを整備したのでその内容を書いておきます。
リポジトリの作成権限の改善
元々Organizationの権限は、代表の井村と一部リーダーなメンバーがOwner権限を持っていました。僕もエンジニアリングマネージャーになったのをキッカケにOwner権限をもらいました。
Member権限の場合、Organizationに所属するリポジトリを作成できないので、なにか案件が始まったタイミングで、井村か僕に申請して作成するフローとなっていました。
ただ、二人共MTGに参加していたり申請に気づいていない状況が続くとリポジトリの作成がボトルネックとなりえます。
メンバーもリポジトリを作れるようにした
この状況を改善すべく、Member権限でもリポジトリを作成できるようにしました。
OrganizationのSetting > Member privileges > Repository creationに設定があります。
デフォルトだとPublicにチェックが入っていますが、Privateリポジトリを作れるようにしたいのでそちらにチェックを入れています。
本当はPublicの方のチェックを外したいのですが、チェックは外せませんでした。
GitHub Enterprize Cloudを使っていれば外せるようです。弊社はTeamプランのため選択出来ないというわけです。
定期的に作成されたリポジトリを通知するようにした
暫定的な対応になりますが、毎週金曜日に作成されたリポジトリを通知するようにしました。
作成されたリポジトリが無くても教えてくれます。
タイミングが遅くなってしまう可能性がありますが、これによりリポジトリの作成から遅くとも1週間以内には気付ける状態にしています。
リポジトリに関する権限を調整
また、リポジトリへのアクセス権限も整理しました。
案件ごとに必要に応じてリポジトリを作成していますが、そこに対してメンバーが個別に追加されていたり、全員が参加しているチームが追加されており、ざっくりとした権限の付与がされていました。
チーム方式の採用
リポジトリに対してメンバーを直接アサインする方式は権限管理が煩雑になる問題があります。GitHubではチーム機能があるため、メンバーをチーム単位でリポジトリに招待し、チームに対して権限を振ることにしました。
必要なメンバーには権限を与え、関連しないメンバーには権限を外す運用を取っています。なので、案件のアサインから外れたメンバーはこのチームからも除外する運用となっています。
全社員はfunteractiveチーム
に所属しており、Read権限を付与することで最低限閲覧は可能にしています。これによって他のリポジトリで学習したり、他プロジェクトのメンバーが相談されたときに実際のコードを見てアドバイスを出せる状態を作っています。
案件担当チームにはAdmin権限を付与
前項の表のように、案件担当チームにはAdmin権限を付与しています。
開発作業をするメンバーにはWrite権限以上の権限は必須です。弊社の場合CI/CDにGitHub Actionsを使っており、その兼ね合いで環境変数を編集したいニーズがあります。
本当はWrite権限を付与するまでで止めたいのですが、Write権限では環境変数を編集できませんでした。
このままだと編集する際はAdmin権限を持っているmanagersチーム
のメンバーに依頼し変更するフローが発生します。これでは開発者体験を損ねます。
リーダーなメンバーにAdminを付与する事も検討しましたが、アサインが変わった時など調整が面倒になったり病欠した際なんかに結局不便になります。そのため、あまり良くないですが暫定的にAdmin権限にしています。何かいい方法がある方がいれば教えていただきたいです。
やってみて
実際これを始めて半年以上が経ちました。
時たま聞かれることはあるものの、メンバーが適宜リポジトリを作ったりチームを設定したりとある程度勝手にやってくれているので、僕がボトルネックにならずに済んでいます。
また性善説で成り立つ構成ですが、今のところ誤ってPublicなリポジトリが作られたり、リポジトリが削除されるということも起きていません。これについては引き続き注視する必要がありますが、現時点では喜ばしいことです。
ただ、どこかで事故は起きかねないのでGitHubのプランを調整するなり、Terraformを使ったフローを導入するなどしてなるべく安全な状況を作っていきたいなと考えています。
ユーザーファーストなサービスを伴に考えながらつくる、デザインとエンジニアリングの会社です。エンジニア積極採用中です!hrmos.co/pages/funteractive/jobs
Discussion