Git 🌙
Chapters â–Ÿ 2nd Edition

4.8 Gitサヌバヌ - GitLab

GitLab

前節で玹介した GitWeb はずおもシンプルでした。 もし、もっずモダンで高機胜な Git サヌバヌが必芁な堎合には、他のオヌプン゜ヌス・゜フトりェアが遞択肢になるでしょう。 それらのなかでも GitLab はよく䜿われおいたすので、䞀䟋ずしお玹介したす。 GitWeb よりも耇雑でメンテナンスも必芁ではありたすが、GitLab はより高機胜な遞択肢です。

むンストヌル

GitLab はデヌタベヌスを䜿甚する Web アプリケヌションです。そのため、むンストヌル方法は他の Git サヌバヌより耇雑になっおしたいたす。 ずはいえ、幞いなこずにドキュメントは充実しおいお、か぀手順は簡玠化されおいたす。

GitLab は数皮類の方法でむンストヌルできたす。 ずりあえず動かしおみるには、仮想マシンのむメヌゞ、もしくはワンクリックむンストヌラヌを䜿いたす。 https://bitnami.com/stack/gitlab からそれらのファむルをダりンロヌド・むンストヌルし、䜿甚する環境に応じお蚭定を倉曎したしょう。 この方法では、Bitnami が気を利かせおログむン画面を䜿えるようにしおくれおいたすalt-→ ず入力するず衚瀺されたす。むンストヌルした GitLab 甚の IP アドレス・ナヌザヌ名・パスワヌドを衚瀺しおくれる䟿利な画面です。

Bitnami GitLab 仮想マシンのログむン画面
図 49. Bitnami GitLab 仮想マシンのログむン画面

その他の方法に぀いおは、GitLab Community Edition の README を参照しおください。 https://gitlab.com/gitlab-org/gitlab-ce/tree/master で確認できたす。 そこで玹介されおいる GitLab のむンストヌル方法には、Chef のレシピを䜿う方法、Digital Ocean で仮想マシンを甚いる方法、RPM や DEB のパッケヌゞを甚いる方法執筆段階ではベヌタなどがありたす。 その他にも “非公匏” のガむドずしお、サポヌト倖の OS やデヌタベヌスで GitLab を動かす方法、手動でむンストヌルを行うためのスクリプトなど、倚くのトピックが玹介されおいたす。

GitLab の管理

GitLab の管理画面はブラりザでアクセスしたす。 ブラりザを䜿っお GitLab をむンストヌルしたサヌバヌのホスト名か IP アドレスにアクセスし、管理者ずしおログむンしたしょう。 デフォルトのナヌザヌ名は admin@local.host で、デフォルトのパスワヌドは 5iveL!fe ですこの組み合わせでログむンするず、パスワヌドを倉曎するこずを最初に促されたす。 ログむンしたら、 画面右䞊のメニュヌにある “Admin area” のアむコンをクリックしたしょう。

GitLab メニュヌにある ``Admin area'' の項目
図 50. GitLab メニュヌにある “Admin area” の項目

ナヌザヌ

GitLab におけるナヌザヌは、䜿甚者に玐付けられたアカりントのこずを指したす。 それは耇雑なものではありたせん。メむンはログむン情報ごずに登録された個人情報です。 たた、ナヌザヌアカりントには 名前空間 が蚭定されおいお、ナヌザヌが保持するプロゞェクトの識別子ずしお甚いられたす。 たずえば、ナヌザヌ jane が project ずいう名前のプロゞェクトを保持しおいた堎合は、そのプロゞェクトの URL は http://server/jane/project になりたす。

GitLab ナヌザヌ管理画面
図 51. GitLab ナヌザヌ管理画面

ナヌザヌを削陀する堎合、やり方は2぀です。 たずはナヌザヌを「ブロック」する方法です。この堎合、ブロックされたナヌザヌは GitLab にはログむンできなくなりたす。䞀方、ナヌザヌの名前空間配䞋のデヌタは削陀されず、ナヌザヌのメヌルアドレスで眲名されたコミットずナヌザヌプロファむルずの関連付けも有効なたたになりたす。

もうひず぀のやり方はナヌザヌを「砎壊」する方法です。ナヌザヌを砎壊するず、GitLab のデヌタベヌス、ファむルシステムから削陀されたす。 ナヌザヌの名前空間配䞋のデヌタ・プロゞェクトも削陀されたすし、そのナヌザヌが䜜成したグルヌプも同じように削陀されたす。 この方法は「ブロック」ず比べはるかに恒久的でやり盎しがきかないものです。よっお、䜿われるこずはめったにありたせん。

グルヌプ

GitLab では、耇数のプロゞェクトをグルヌプずしおたずめられたす。そしお、グルヌプにはプロゞェクトごずのナヌザヌのアクセス暩情報も含たれおいたす。 たた、ナヌザヌの堎合ず同じように、それぞれのグルヌプには名前空間がありたす。たずえば、 training グルヌプに materials ずいうプロゞェクトがあった堎合、URL は http://server/training/materials になりたす。

GitLab グルヌプ管理画面
図 52. GitLab グルヌプ管理画面

グルヌプにはメンバヌを远加できたす。さらに、メンバヌそれぞれにプロゞェクトごずの暩限ず、グルヌプそのものに察する暩限が蚭定できたす。 暩限は “Guest” issues ずチャットのみから “Owner” グルヌプず配䞋のメンバヌ・プロゞェクトの管理暩限たでが甚意されおいたす。 各暩限の詳现は膚倧なため省略したすが、管理画面にあるリンクを蟿るず確認できるようになっおいたす。

プロゞェクト

GitLab のプロゞェクトずは、倧䜓の堎合ひず぀の Git のリポゞトリを指したす。 なんらかの名前空間ナヌザヌかグルヌプに、プロゞェクトはすべお属しおいたす。 プロゞェクトがナヌザヌの名前空間に属しおいれば、そのオヌナヌはアクセス暩をすべお管理できたす。プロゞェクトがグルヌプに属しおいれば、グルヌプ自䜓のアクセス暩蚭定がプロゞェクトにも匕き継がれたす。

たた、プロゞェクトには公開レベル蚭定があり、どのナヌザヌにプロゞェクトのペヌゞずリポゞトリの読み蟌み暩限を䞎えるかを蚭定できたす。 プロゞェクトが Private の堎合、アクセス暩をナヌザヌごずに明瀺的に蚭定する必芁がありたす。 プロゞェクトが Internal の堎合はログむン枈みのナヌザヌであれば閲芧でき、Public なプロゞェクトであれば誰でも閲芧できたす。 なお、この蚭定で、Git の “fetch” コマンドず りェブ画面の䞡方のアクセス暩が蚭定されるこずに泚意したしょう。

フック

GitLab はフックプロゞェクト・システムの䞡方に察応しおいたす。 どちらのフックであれ、該圓のむベントが発生した郜床、GitLab のサヌバヌは JSON デヌタを䜿っお HTTP POST リク゚ストを発行したす。 これは、Git リポゞトリや GitLab を開発自動化の仕組みず連携させるずきにずおも䟿利です。特に CI サヌバヌ・チャットサヌビス・デプロむ甚のツヌルなどずの連携に圹立぀でしょう。

基本的な䜿い方

GitLab で最初にやるべきこずは、新芏プロゞェクトの䜜成です。 ツヌルバヌの “+” アむコンをクリックするず䜜成が始たりたす。 たず、プロゞェクト名称・所属すべき名前空間・公開レベル蚭定を䜜成時に入力したす。 それらの倧半は蚭定画面からあずから倉曎可胜です。 次に “Create Project” をクリックすれば、プロゞェクトが䜜成されたす。

プロゞェクトが䜜成されたら、たずは手元の Git リポゞトリずそのプロゞェクトを関連付けるずよいでしょう。 プロゞェクトにアクセスするには HTTPS か SSH を䜿いたす。いずれも、Git のリモヌトずしお蚭定可胜なプロトコルです。 蚭定甚の URL は、プロゞェクトのペヌゞの最䞊郚に衚瀺されおいたす。

$ git remote add gitlab https://server/namespace/project.git

手元に Git リポゞトリがない堎合は、以䞋のようにしおリモヌトからクロヌンしたしょう。

$ git clone https://server/namespace/project.git

GitLab の りェブ画面には、リポゞトリの情報を確認する䟿利な画面がいく぀もありたす。 プロゞェクトのトップペヌゞでは最近の行動履歎が確認できたすし、画面䞊郚にあるリンクをたどるずファむル䞀芧やコミットログを確認できたす。

共同䜜業

GitLab でホストしおいるプロゞェクトで共同䜜業を行うもっずもシンプルな方法は、Git リポゞトリぞのプッシュアクセス暩を盞手に䞎えおしたうこずです。 ナヌザヌをプロゞェクトに远加するには、プロゞェクトの蚭定画面にある “Members” のセクションを䜿いたす。新芏ナヌザヌにアクセス暩を蚭定するのにも同じセクションを䜿いたすアクセス暩の詳现に぀いおは、 グルヌプ でも少し觊れたした。 ナヌザヌに付䞎された暩限が “Developer” かそれ以䞊であれば、リポゞトリぞコミットやブランチを問題なく盎接プッシュできたす。

もうひず぀、より疎結合な共同䜜業の方法がありたす。マヌゞリク゚ストです。 この機胜を䜿えば、任意のナヌザヌプロゞェクトを閲芧可胜なナヌザヌに限られたすに所定の方法で共同䜜業に参加しおもらえたす。 たず、リポゞトリに盎接プッシュする暩限のあるナヌザヌの堎合は、ブランチを䜜っおコミットをプッシュしたうえで、そのブランチから master など垌望するブランチに向けおマヌゞリク゚ストを䜜成したす。 䞀方、プッシュ暩限のないナヌザヌの堎合、たずはリポゞトリを「フォヌク」自分専甚のコピヌを䜜成したす。続いお その コピヌにコミットをプッシュしたら、コピヌから本家に向けおマヌゞリク゚ストを䜜成したしょう。 この方法を䜿えば、どんな倉曎がい぀リポゞトリに远加されるかを管理者が管理し぀぀、任意のナヌザヌに共同䜜業に参加しおもらえたす。

GitLab においおは、マヌゞリク゚ストや issue を䜿っお議論を深めおいきたす。 マヌゞリク゚ストは、倉曎内容に぀いお行ごずに議論するこず簡易的なコヌドレビュヌ機胜ずしおも䜿えたすにも䜿えたすし、マヌゞリク゚スト党䜓に぀いおの議論のスレッドずしおも䜿えたす。 たた、マヌゞリク゚ストや issue には担圓者を蚭定できたすし、マむルストヌンの䞀郚にもなりたす。

この節では䞻に GitLab の Git 関連郚分を芋おきたした。ただ、GitLab はずおも完成床の高いシステムで、共同䜜業に圹立぀機胜は他にもたくさんありたす。たずえば、プロゞェクト甚の wiki やシステム管理ツヌルなどです。 最埌に GitLab の利点ずしおもう䞀点挙げおおきたしょう。GitLab は、䞀床セットアップが終わっおサヌバヌが動き出せば、蚭定ファむルをいじったりサヌバヌに SSH でログむンしたりする必芁はほずんどありたせん。管理䜜業、そしお通垞利甚の倧半は、ブラりザ画面から操䜜できたす。

scroll-to-top