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は、GroupかUserに紐づいて作成される。つまり、以下をイメージできればよい。外部からリポジトリを指定するときの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.