GitLabの構築(プロジェクト追加、クローン作成)

https://project.usagi1975.com/dev1/project1

SSH Keyの作成

Windowsであればgit bash、MacやLinuxであればターミナルから以下を実行して、公開鍵と秘密鍵を作成する。また、生成された鍵のパーミッションは600lに変更しておく。

途中でパスフレーズの確認があり、実行時に毎回パスワードを入力するのであれば、指定する。必要なければスキップする。ファイル名は適宜指定しておく。

実行すると、2つのファイルが作成される。*.pubが公開鍵、もう片方が秘密鍵になる。GitLabに登録するのは公開鍵になる。秘密鍵は公開しないように注意する。

>ssh-keygen -t rsa -C "gitlab-hoge" -b 4096
>ls ~/.ssh
config gitlab-hoge gitlab-hoge.pub
>chmod 600 gitlab-hoge gitlab-hoge.pub

sshコマンドを省略するため、~/.ssh/configファイルを以下のように追記しておく。以下の場合、www.hoge.comと指定するだけで、ホスト名、ポート番号、使用する秘密鍵、ログインユーザを指定することと同等になる。

ユーザ名は、gitになっているが、これはGitLabのgitユーザに合わせる必要があり、デフォルトである。変更している場合は適宜合わせる。

> vi ~/.ssh/config

Host www.hoge.com
	HostName 192.168.0.1
	Port 22
	IdentitiesOnly yes
	IdentityFile ~/.ssh/gitlab-hoge
	User git

公開鍵をGitLabへ登録する

GitLabにログインした後、ユーザのProfile画面を表示して、SSH Keysタグを選択する。
各ユーザごとに複数の公開鍵を登録することができる。

この画面のKeyテキストエリアに、先ほど作成した公開鍵の中身のテキストをコピー&ペーストで貼り付ける。Titleは複数登録したときに識別できるように記入する。デフォルトだと、keyのコメント部分が入力されるはず。

あとは、Add keyを押下して登録する。

GitLabでGitリポジトリを作成する

次にGitのリポジトリを作成する。GitLabでは、個々のGitリポジトリのことをProjectと呼んでいる。また、このProjectは、GroupUserに紐づいて作成される。つまり、以下をイメージできればよい。外部からリポジトリを指定するときのURLもこれに準じたパス表記になっている。

Domain ( www.hoge.com )
 ├ User1
 │ ├ Project1 ( project1.git )
 │ └ Project2 ( project2.git )
 ├ Group1
 │ ├ Project3 ( project3.git )
 │ └ Project4 ( project4.git )

User配下、Group配下どちらが良いのかは一長一短あるが、とりあえずGroup配下で作成しておいたほうが、あとから別のユーザを追加しやすいのと、脱会したユーザを削除するときに困ることになりそう。(もちろん委譲することは可能だと思うが)

Groupの作成

画面左上のメニューからGroupsを選択lし、New Groupでグループを作成する。基本的にはグループの英語名とDescriptionを記入するだけである。もちろん後から変更したり、削除することも可能。

Projectの作成

画面左上のメニューからProjectsを選択lし、New ProjectでProjectを作成する。(Group作成後、続けて作成する方法もある)

先ほど作成したGroupを選択し、プロジェクト名を指定してCreate Projectを選択すると、GitLab管理下のディレクトリへbareリポジトリが作成される。

作成したリポジトリへPushする

作成直後の空っぽのリポジトリに対して、ローカルに作成したGitリポジトリをPushしてみる。

> mkdir project1
> cd project1
> git init
> vi readme.md
> git add readme.md
> git commit -m "add readme.md"
> git push www.hoge.com:hoge/project1 master
Enter passphrase for key '/hoge/hoge/.ssh/gitlab-hoge':
Counting objects: 3, done.
Writing objects: 100% (3/3), 212 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To www.hoge.com:hoge/project1
 * [new branch]      master -> master

GitLab上で、pushされているか確認する。

また、クローンができるかも確認する

> git clone www.hoge.com:hoge/project1.git project1
Cloning into 'project1'...
Enter passphrase for key '/home/hoge/.ssh/gitlab-hoge':
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
Checking connectivity... done.