GitLab
GitLab-CI

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

gitlab-runner_環境構築

はじめに

amalzonlinux上でgitlab-runnerの構築を行いました。

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

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

+----------------------------+
| gitlab                     |
|        +-doccker 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]:

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

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

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

※とりあえず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に反応して起動します。

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の実践的利用方法を模索中
ngyukiの日記
GitLab Documentation Run GitLab Runner in a container
GitLab Documentation Registering Runners