gitlab-runner の環境構築をしてみた

# gitlab-runner_環境構築
## はじめに
amalzonlinux上でgitlab-runnerの構築を行いました。

gitlab内にdockerでrunnerを動かしたかったので、gitlab serverにDockerをインストールしました。
（まぁ普通なら、gitlab自体もdockerにすべきですが既に作成済でしたのでこんな感じになってしまいました。）

よって、以下ような構成で作成してみました。

```
+----------------------------+
| gitlab                     |
|        +-docker container -+
|		 | gitlab-runner     |
+--------+-------------------+
```

## 概要
以下のような手順になるのかなと思います。
- gitlabのインストール
- dockerのインストール
- gitlab runner の起動
- テスト起動

## 詳細
----
#### gitlabのインストール
gitlabサーバ自体は当初は8.0.3が出てたのでそこでインストールしてました。
古いメモから復帰させてます。なのでここらへんは今だと信用できません。
まぁ正直レポジトリだけ落としてりだけだと思いますので、インストール時は
yum list等で見て適切なモジュールをインストールすれば良いかと思います。

たぶん、gitlab-ce-8.0.3が gitlab-ce-10.0.3 あたりに変わるだけじゃないかな。

``` 
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install gitlab-ce-8.0.3-ce.1.el6.x86_64
gitlab-ctl reconfigure
```

----
#### dockerのインストール
ここららへんは普通にyumでインストールできます。

```
sudo yum install docker
```

ついでにRunnerを起動します。

```
docker run -d --name gitlab-runner --restart always \
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  gitlab/gitlab-runner:latest
```

----
#### gitlab runner の起動
ここではトークンが必要です。このトークンはgitlabの管理エリアに入りOverview->Runnersにかかれています。(
v10.0.2)

1.docker に入り込みコマンドを起動します。

```
docker exec -it gitlab-runner gitlab-runner register
```

2.対象のgitlabサーバのドメインを指定します。

```
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
[管理画面で表示されているドメイン]
```

3.トークンを設定します。

```
Please enter the gitlab-ci token for this runner
[トークン]
```

4.このrunnerの名前を指定します。

```
Please enter the gitlab-ci description for this runner
[hostame] [名前]
```

5.タグを指定します。

```
Please enter the gitlab-ci tags for this runner (comma separated):
[タグ名]
```

※gitlab-ci.ymlに定義できるあれです。
※カンマ区切りで復数指定も可能じゃないかなと思います。

6.ランナーがタグを持たないジョブを選択するかどうかを選択します。(後ほど変更可能)

```
Whether to run untagged jobs [true/false]:
[false]: true
```

※とりあえずtrueにしました。

7.ランナーを現在のプロジェクトにロックするかどうかを指定します。(後ほど変更可能)

```
Whether to lock Runner to current project [true/false]:
[true]: true
```

※とりあえずtrueにしました。

8.Executerを指定します。

```
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
docker
```

※dockerにしました。

9.Executerをdockerで選択した場合のでデフォルトで使用されるイメージを設定します。

```
Please enter the Docker image (eg. ruby:2.1):
alpine:latest
```

※どうせ全部指定するだろうから適当

ちなみに以下のようにもできます。

```
docker exec -it gitlab-runner gitlab-runner register \
    --url [gitlabのURL] \
    --registration-token [token] \
    --name [名前] \
    --tag-list [タグ名] \
    --executor docker \
    --docker-image alpine:latest
```

----
#### テスト起動
適当に.gitlab-ci.ymlを作成します。つでにPushしちゃいます。するとPushに反応して起動します。


```.gitlab-ci.yml:yaml
# 最初に実行されます。
before_script:
  - echo "before start"

job_docker: # 名前は適当
  # 実行するスクリプト
  script: 
    - echo "uname -a"
  # どこで実行するか
  tags:
    - [タグ名]
```

gitlab上のCI/CDのPipelinesに実行状況が見れるようになると思います。

## あとがき
jenkinsでも良いと思うのですが、gitlab-ciでも得意な部分があるのでそこらへんまではgitlab-ciにして他をjenkinsってのもありかなぁと思ってたりします。
.gitlab-ci.ymlで何をしたいか整理しなきゃ。。。

## その他
[GitLab-CI + Dockerの実践的利用方法を模索中](https://qiita.com/namutaka/items/3f678deee201d13049a8)
[ngyukiの日記](http://ngyuki.hatenablog.com/entry/2017/07/07/093326)
[GitLab Documentation Run GitLab Runner in a container](https://docs.gitlab.com/runner/install/docker.html)
[GitLab Documentation Registering Runners](https://docs.gitlab.com/runner/register/index.html#docker)