ローカルの様々なリポジトリを GitLab につっこんだ記録
やったこと
- Gitlab を VM にインストール
- ローカルの未公開リポジトリを Gitlab にプッシュ
- あるリポジトリをジョブ管理ツールでジョブ実行した時に git push で更新
- BitBucket のリポジトリを Gitlab にバックアップ
- GitHub のリポジトリを Gitlab にバックアップ
Gitlab を VM にインストール
インストールは公式サイトの手順通りにやればすんなり入る。
Download GitLab Community Edition (CE) | GitLab
しかし、Web にアクセスしてみたら頻繁に 502 が返ってきて、ログを調べてみたらいろんなプロセスが kill されていた。 メモリが足りないっぽい(そういや前さくらVPSに立てた時もこんな事があった)。
2GB RAM is the recommended memory size for all installations and supports up to 100 users
VM に割り当てるメモリは安全のために 3072M(3G) にしといた。
2 cores is the recommended number of cores and supports up to 500 users
とも書いてあったが、CPU は 1 core のままにしといた(ケチった)。
ホスト名が local-the-host のため、リポジトリの URL が git@local-the-host:user/repos.git
になってしまう。
CNAME を設定してそちらにアクセスする予定なので、ホスト名を変える。
変えるには /etc/gitlab/gitlab.rb をいじって反映させるコマンドを実行する必要がある。
For an Omnibus install, it is a little different.
The correct place in an Omnibus install is:
/etc/gitlab/gitlab.rb external_url 'http://gitlab.example.com' Finally, you'll need to execute sudo gitlab-ctl reconfigure and sudo gitlab-ctl restart so the changes apply.
How to change URL of a working GitLab install? - Stack Overflow
Omnibus っていうのは、ざっくり言ってパッケージ化されたバージョンの Gitlab。 gitlab-ctl コマンドを使って設定を反映する。
あるリポジトリをジョブ管理ツールでジョブ実行した時に git push で更新
まず今回対象のとあるリポジトリ用のユーザを Gitlab と CentOS にそれぞれ作っておく。
Gitlab では Members に Developer(push できるユーザ)として加え、 ユーザごとに作れるプロジェクト数なんてものがデフォルトで 10 に設定されてるらしいので、 Project limit を念のため 1 にした(Admin 設定からいける)。 もう動確めんどいのでやらないけど、プロジェクト作れないようにしたいなら 0 にすればいいらしい。 あと上記リポジトリ用ユーザに不要なリポジトリが見えないよう、基本全てのリポジトリは Private にしておく。
CentOS ではユーザと専用のホームディレクトリを作成し、~/.netrc に以下のように書いておく(パスワードプロンプトをスキップさせるための設定ファイル)。 セキュリティ的によろしくないけどとりあえずこれで。 SSH 鍵を転送とか考えたけど、結局ファイルやホームディレクトリのパーミッションだけ気を付けるようにした。
machine gitlab.lan login hogeuser password xxxxx
で、実行ユーザに注意しながらジョブ管理ツールに実行させる。 すると無事実行したスクリプトで git push して Gitlab にプッシュさせる事ができた。
ちなみにジョブ管理ツールは惰性で Hinemos 使ってるけどいい加減 Rundeck とかに移行したい(エージェントが重い)。 やるとは言ってない。
BitBucket のリポジトリを Gitlab にバックアップ
BitBucket 連携したものの、バックアップするリポジトリがなかった(終)。
(なんかあったと思ったけどゴミしかなかった)
GitHub のリポジトリを Gitlab にバックアップ
GitHub 連携で楽できた。
インポートしたら GitHub のユーザ名と同じ名前空間にリポジトリが作られるけど、 自分は /tyru/repo じゃなく /github/repo に作ってほしかったので、せっせこ手動で Transfer した。
ちなみに取得するリポジトリ一覧には fork したものも含まれるので、
http://<gitlab>/thinca/vim-ambicmd/
みたいに Gitlab が勝手に thinca グループ作ってくれて便利。*1
*1:こっちもせこせこ手動で削除した