ローカルの様々なリポジトリを 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:こっちもせこせこ手動で削除した