企業やチームでGitHubを利用する際、ユーザーアカウントやチーム単位でアクセス権限を変更したいケースも少なくありません。
本記事では、GitHubでグループの権限管理を行うことが出来るTeam機能の使い方についてご紹介していきます。
GitHub Teamとは
GitHub Docs(Team)を確認してみるとTeamについて下記のように記述されています。
Organization のメンバーによって構成されるグループであり、カスケードになったアクセス権限とメンションを伴う会社やグループの構造を反映します。
Organizationとは
Teamについて解説するには、まず「Organization」について説明する必要があります。
OrganizationについてもGitHub Docs(Organization)で確認してみると下記のように記述されています。
企業やオープンソースプロジェクトが多くのプロジェクトにわたって一度にコラボレーションできる共有アカウントです。
オーナーと管理者は、Organizationのデータとプロジェクトへのメンバーのアクセスを、洗練されたセキュリティ及び管理機能で管理できます。
Organizationでは「メンバーの追加や削除」「リポジトリの作成や管理」「Teamの作成や管理」を実施することが出来ます。
Teamでは作成したメンバーをグループ化して管理するために利用することになります。
Teamの機能
Teamを作成することで「可視性の設定」「ページの作成」「OrganizationからTeamに対してアクション設定」といった機能が利用出来るようになります。
可視性の設定
Teamには「Public」と「Private」の可視性を設定することが可能です。
「Public」では、Organizationに登録されたメンバー全員が参照及びメンションすることが出来ます。
一方「Private」では、OrganizationのオーナーもしくはTeamメンバーのみ参照可能となります。
ページの作成
Teamを作成することで、Team毎のページをOrganization内に作成することが可能です。
TeamメンバーとOrganizaitonのオーナーだけが閲覧出来るページを作成でき、グループ化して作業がしやすくなります。
OrganizationからTeamに対してアクション設定
OrganizaitionからTeam指定でメンションを飛ばすことで、 Teamに所属するメンバー全員宛に通知を送ることが可能となります。
他にもプルリクエストなど各個人だけでなく、Team全体に通知を届けることが出来るためグループ化して作業が行いやすくなります。
GitHubでTeamを作成してみよう
ではここからは実際にGitHub上でTeamを作成していきたいと思います。
Organizationの作成
Team機能を利用するには、まずOrganizationを作成する必要があります。
画面上部の「+」アイコンを開き、「New organization」をクリックします。
料金プランの選択画面が表示されるので、ご自身の利用目的にあったプランを選択してください。
サンプルではFreeプランを選択して「Create a free organization」ボタンをクリックします。
「組織名」と「連絡用メールアドレス」、「利用目的」を入力します。
項目が入力出来たら「Next」ボタンをクリックします。
組織に追加したいメンバーが決まっている場合、この画面で追加することも出来ますし、追加せずに「Complete setup」ボタンをクリックして次へ進むことも可能です。
再度GitHubアカウントへのログインが求められるためパスワードを入力します。
アンケートのような質問項目が表示されますので、必要項目を入力し画面下部の「Submit」ボタンをクリックします。
リポジトリの作成
Organizationの作成が完了した初期画面から、「Create a new repository」ボタンをクリックします。
ユーザーからリポジトリを作成するのと同じような画面が表示されますが、Ownerの部分がOrganizationで設定した名前になっています。
任意のリポジトリ名を入力して画面下部の「Create repository」ボタンをクリックします。
これでOrganizationがオーナーのリポジトリを作成することが出来ました。
Teamの作成
新たにTeamを作成したい場合、Organizationから「Teams」タブを開き「New team」ボタンをクリックします。
チーム名を入力して「Create team」ボタンをクリックします。
Teamが作成出来ると画像のように、Team用のページが表示されます。
GitHubのTeam機能に触れてみよう
GitHub上にTeamを作成出来たので、実際にどのような使い方が出来るのか確認していきたいと思います。
Teamにリポジトリを追加
初期状態ではTeamが利用するリポジトリは設定されていないので、「Repositories」タブから追加する必要があります。
「Add repository」ボタンをクリックします。
ポップアップが表示されるので、追加したいリポジトリを検索します。
「Add repository to team」ボタンをクリックします。
Teamに選択したリポジトリが追加されています。
メンション先としてTeamを指定
OrganizationのプロジェクトでIssueを発行してみましょう。
「@」を使用することで特定のユーザーに対してメンションを送ることが出来るのですが、対象ユーザーとしてチーム名が表示されていることが分かります。
このようにチーム名にメンション指定すると、Teamに登録されているメンバー全員がメンション対象となります。
子Teamの作成
Teamの可視性が「public」の場合には、Teamに対して子Teamを作成することも可能です。
作成したTeamから「Teams」タブを選択し、「Add a team」ボタンをクリックします。
作成済みのチーム名で検索するか、作成したいチーム名または何かしらの文字を入力して「Create team」をクリックします。
ポップアップで入力したチーム名と親チームが選択された状態でTeamの作成画面が表示されるので、「Create team」ボタンをクリックします。
新たにTeamが作成されたことが確認出来ます。
親Teamとして指定したTeamに戻って「Teams」タブを確認してみると、作成した「team-child」が子Teamとして表示されていることが確認出来ます。
さいごに: GitHubのTeam機能でアクセス管理を実施しよう
本記事では、GitHubでのチーム開発でメンバーアカウントをグルーピング化するのに便利なTeam機能についてご紹介してきました。
開発規模が大きくなるにつれて、リポジトリやメンバーアカウントの数が増えてくるため、全てを把握するのが困難になってきます。
今回ご紹介したOrganaize機能とTeam機能を活用して、組織の構造を明確にした上で、どのチームがどんなリポジトリを管理しているのか明確化出来るように取り組んでみてください。
「組織名」は全ユーザーで一意である必要があるため、既に利用されている組織名は使えません。