えいのうにっき

a-knowの日記です

最近GitLabの人気が高まっているらしいので、GitHubのリポジトリをミラーリングしてみた

先日、「最近、GitLabの人気が高まっているらしい・再評価されているらしい」と同僚(先輩)から聞いた。あくまでもその人の観測範囲で、ではあるが、GitHub から GitLab に乗り換えたって人も何人かいるらしい。

GitLab の GitHub に対する優位性のひとつとして、CI ツールとコンテナレジストリがバンドルされていることがある、んだそう。なるほどたしかに、CI とかコンテナレジストリってそのリポジトリとの関係は密でもいい・密にしておきたい、ってかんじがするもんなぁ。

GitLab、僕のなかでは「セキュリティなどの理由により、github.com を使うことができないケース」「コストなどの理由で GitHub Enterprise を使うことができないケース」で、"自分たちの環境" に "自分たちで" セットアップして使うもの......という印象だったんだけど、そうか、普通に SaaS 版もあるんだな。上で書いた優位性もすごく腑に落ちたし、どんなもんかちょっと試してみたくなったので、手始めに、GitLab アカウントを作って GitHub リポジトリのミラーを作ってみた。

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

  • 作者:大塚 弘記
  • 発売日: 2014/03/20
  • メディア: 単行本(ソフトカバー)

はじめまして GitLab

f:id:a-know:20180121080412p:plain

アカウントは https://gitlab.com/users/sign_in から取れる。GitHub アカウントでも連携できるようになっていて、ちょっとおもしろいなって思った。w

ユーザーのプロフィールページは https://gitlab.com/<username> ってかんじで、GitHub といっしょ。ただ、プロフィールページ自体はすごくすっきりというかさっぱりしている印象。

f:id:a-know:20180121080521p:plain

Contributions Graph もある。いわゆる "草" の色は青を基調としているようだけど、それ以外はまんま GitHub のそれと同じように見える。w ここはオリジナリティを出してくれたらおもしろかったのにな、とか少し思う。

(余談だけれど、拙作の Grass-Graph が GitLab にも対応するのはいいかもしれないなー。)

GitHub にあるリポジトリを GitLab にミラーリングする

ミラーリングは、新しくリポジトリを作る際に "インポート" を選び、そのオプションで指定するかんじになる。GitLab ではプロジェクト project ごとにリポジトリやWiki、CI、コンテナレジストリといったものを持つことができるっぽい。

f:id:a-know:20180121081326p:plain

New Project を選択すると、空のプロジェクトをつくるか、テンプレートから作るか、インポートするかを選べる。今回は Import project のタブを選択する。

f:id:a-know:20180121081358p:plain

GitHub っていうボタンがあるのでいかにもこれを選んでしまいそうなんだけど、ミラーリングをしたい場合にはこれではなく、Repo by URL を選ぶ。インポートするリポジトリを http:// https:// git:// のいずれかの形式で指定できる。

ちなみにここで GitHub の方を選んでインポートすると、その時点の issue や Pull Request(Merge Request)もいっしょにインポートしてくれるっぽい。なので、本当にリポジトリを乗り換えたいときにはこちらの方法の方がいいのかも。(こちらの方法を選択した場合は、インポート以降のコミットなどを自動で拾ってくれるようなことはしてくれないようなので注意。)

さて、インポート設定を埋めていく。今回は GitHub - a-know/a-know: CLI tool about me (a-know) をインポートしてみることにする。

f:id:a-know:20180121081503p:plain

このとき、Mirror repository チェックボックスをオンにしておくことで、元のリポジトリへのコミット・ブランチ・タグが同期されるようになるみたい。同期の間隔は every hour とのこと。

リポジトリの公開/非公開も選べる。

f:id:a-know:20180121081637p:plain

そういえば、Privateなリポジトリも無償で持てることも、GitLab の優位性かもね。

で、Create project を押すとインポートが始まる。リポジトリの大きさにもよるとは思うけど、今回のケースではすぐにインポートが完了した。

f:id:a-know:20180121081759p:plain

サイドメニューが印象的。

プロジェクトにアバターが設定できるのはすごくいい!

f:id:a-know:20180121081830p:plain

ためしに、元のリポジトリに適当なコミットをしてみる。

$ touch test.txt
$ git add test.txt 
$ git ci -m 'test'
$ git push origin master

で、待っていると、ちゃんと変更が pull されて反映されているのが確認できた。

f:id:a-know:20180121081850p:plain

Contributions Graph にも反映されたので、主要なリポジトリはミラーリングしておくと GitLab の方のグラフも賑やかにさせられていいかも。

サイドメニューに目をやってみる。コンテナレジストリ、これかぁ。

f:id:a-know:20180121081959p:plain

GitLab CI。

f:id:a-know:20180121082146p:plain

これを使うには、そのリポジトリに .gitlab-ci.yml を置く必要があるっぽい(参考:はじめてのGitLab-CI - Qiita)ので、ミラーしているリポジトリの場合にはちょっと使いにくそう。

Settings で、issue や Wiki をオフったり、Merge Request を制限できたりもできる。

f:id:a-know:20180121082230p:plain

今回はミラーなので、GitLab の方にはこういうのは無くてよさそう。

Pages は、いわゆる GitHub pages と同じようなやつだと思うけど、これもプロジェクトごとの Settings の中にある。

f:id:a-know:20180121081131p:plain

GitLab、いいかも

ソフトウェアエンジニアにとって GitHub を使うことには、ポートフォリオ的な側面もあると思う。少なくとも僕は、"ある特定のだれかがどんなコードを書いてるのか" を知りたいときに見てみる場所として、GitHub は見てみることはしても、GitLab を見てみよう、とはなってなかった。(今後はチェックするようにしないとな。。)

GitLab、個人的には新鮮で、普通に「使ってみてもいいな」と思った。もちろん、他のツールとの連携のしやすさ、といった点ではまだまだ GitHub の方に分があるとは思うけど、GitLab も Webhook はサポートしてるし、たいがいの連携はやろうと思えばできるんだろうとも思う。

こんどなにか新しいリポジトリを作るときには、GitHub ではなく GitLab に作って、CI とかコンテナレジストリを試してみたいな、と思った!そのミラーを GitHub 側に(今回とは逆方向のミラーを)作っておけば、ポートフォリオ的な側面の心配も減りそう。

参考

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

  • 作者:大塚 弘記
  • 発売日: 2014/03/20
  • メディア: 単行本(ソフトカバー)