Githubのオーガニゼーション新設とリポジトリ移行時の手順・注意点


概要

利用中のGithubオーガニゼーションから別のオーガニゼーションを作成し、リポジトリを始めとして各種設定を移行しました。
その際の手順や注意点をまとめたものです。

環境

機能比較をした上で開発に支障はないと判断し、GitHub Platinumプランからfreeプランに移行しています。
Platinumは料金プラン改訂前の組織向けプランとなります。

現在のプランごとの機能比較はこちらで出来ますので、事前に機能と料金を確認してから移行が必要となります。
https://github.co.jp/pricing.html
特に、旧Platinumプランではリポジトリ数課金のためユーザ数の制限がなかったのに対して、新プランではユーザ数課金となっているので移行するユーザの必要性について精査が必要です。

Github側作業

新オーガニゼーション開設

オーガニゼーションのownerとなるGithubアカウントで右上の「New organization」を選択し、プランやオーガニゼーション名を登録します。この時に空のteamを作成します。

連絡用メールアドレスも登録しますが、オーガニゼーション作成ユーザ自身のアドレスでなくても問題ありません。

リポジトリの移行

既存リポジトリのbranch、issues、Pull Requestの内容などほとんどそのまま移行が出来るTransfer ownership機能を使って移行します。リポジトリサイズにもよると思いますが数十秒で移行可能です。

リポジトリの権限追加

デフォルトでは、招待したユーザはリポジトリに対してread権限となっているので、必要なユーザやteamに対してwriteに切り替えます。

連携アプリの追加

slack

Githubのイベントをslackで通知している場合は、Githubのmarketplaceからslackを追加します。

追加後、slackの通知先のチャネルにて購読するイベントを設定設定します。

/github subscribe new_organization/{repository} reviews comments commits:all

CircleCI

リポジトリをCircleCIで連携している場合は、Githubのリポジトリを移行すると自動的にCircleCIでもオーガニゼーションが移行されるので、プロジェクト、過去のCI実行履歴が移行されているか確認します。

無料プランへの変更による影響

CircleCIで有料でしか利用できない機能を有効にしていると、テストが失敗してしまいます。
今回はテストのパフォーマンス向上のためにDockerビルドイメージのDocker Layer Cachingが有効になっていたため、一旦無効にしました。こちらは従量課金制プランで利用可能です。

サーバ側作業

URL変更対応

  • 移行前のオーガニゼーションのGithubのURLを叩いても新URLにリダイレクトされる仕様となっておりますが、リポジトリのデプロイ先サーバでの.git/configファイルのremote originの値を修正しておきます。
  • サーバに対して自動でgit pullが走ってるリポジトリについてはタイミングに注意します。
# 修正前
[remote "origin"]
        url = https://github.com/current_organization/repository_name.git

# 修正後
[remote "origin"]
        url = https://github.com/new_organization/repository_name.git

ファイル更新後、サーバ上でgit remote -vしてリモートのURLが変更されていることを確認します。

ローカル側作業

サーバ側作業と同様、.git/configファイルを更新してgit fetchgit cloneが出来ることを確認します。

ユーザの招待

設定完了したら既存のオーガニゼーションからユーザを招待し、作成したteamに割り当てて作業完了です。

課題

freeプランに変更したことによって以下のような機能制限がありますが、今のところ運用でまかなえているので経過注視としています。

  • リポジトリを保護するために設定するgit push --forceの禁止を設定できない。
  • PRレビューやIssueを複数人にアサインできない。