今回は、Dockerホスト上にGitLab Runnerのコンテナを構築し、構築済みのGitLabと連携する手順を説明します。
前提
- GitLabサーバーが構築済み
構成
簡単ですが、以下のような構成です。

各OS・アプリケーションのバージョン情報
- Ubuntu Server: 18.04
- Docker: 19.03.5, build 633a0ea838
- GitLabサーバー: 11.0.4
- GitLab Runner: 12.5.0
GitLab Runner用ホストの構築
AWS上にUbuntu Server18.04を起動して、sshログイン後、以下の手順を進めます。
パッケージアップデート
$ sudo apt -y update && sudo apt -y upgradeDockerを公式リポジトリからインストール
$ sudo apt -y install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common \
    git
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
$ sudo apt update
$ sudo apt -y install docker-ceDockerのインストール確認
$ docker -v
Docker version 19.03.5, build 633a0ea838Docker Composeのインストール
$ sudo curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-composeDocker Composeのインストール確認
$ docker-compose --version
docker-compose version 1.25.0, build 0a186604sudoなしでdockerコマンドを使えるようにする
$ sudo gpasswd -a $USER docker
$ sudo systemctl restart docker
$ sudo chmod 666  /var/run/docker.sockDockerコマンドがsudoなしで使えるか確認
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES以上で、GitLab RunnerのコンテナをホストするDocker、Docker Composeのセットアップが完了。
参考: https://qiita.com/taroshin/items/1d95a96d7ee55220875f
GitLab Runnerの構築
次に、Gitlab Runnerを構築します。
事前準備
事前準備として、Runnerを登録するGitLabサーバーのURLとレジストリトークンを確認しておきます。
Admin Area > Runners

GitLab Runnerのインストール
GitLab RunnerでDockerコンテナをビルドする方法は3つあります。
今回は、「Use Docker socket binding」の方法を使います。
以下のような構成でディレクトリとファイルを作成し、docker composeを使ってGitLab Runnerを起動します。
└── runner
    └── docker-compose.ymlGitLab Runnerのdocker-compose.ymlを以下の通り作成します。
version: '3'
services:
  runner:
    image: gitlab/gitlab-runner:ubuntu
    tty: true
    container_name: docker-executor
    restart: always
    environment:
      - REGISTER_NON_INTERACTIVE=true
      - CI_SERVER_URL=[GitlabのURL] ★
      - REGISTRATION_TOKEN=[レジストリトークン] ★
      - RUNNER_EXECUTOR=docker
      - RUNNER_TAG_LIST=docker
      - RUNNER_NAME=Docker Executor (Docker socket binding)
      - RUNNER_LIMIT=1
      - DOCKER_IMAGE=docker:latest
      - DOCKER_VOLUMES=/var/run/docker.sock:/var/run/docker.sock
    volumes:
      - /srv/gitlab-runner/config:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"★の二箇所は、事前準備で確認した値を記載してください。
変数の簡単な説明を書いておきます。
| 環境変数 | 説明 | 
|---|---|
| REGISTER_NON_INTERACTIVE | ビルド時のインタラクティブな問い合わせの有効/無効 | 
| CI_SERVER_URL | 事前準備で確認したGitLabサーバーのURLを指定 | 
| REGISTRATION_TOKEN | 事前準備で確認したGitLabサーバーのRegistration Tokenを指定 | 
| RUNNER_EXECUTOR | Executor(shell、dockerなど)を指定 | 
| RUNNER_TAG_LIST | Runnerのタグ名を定義。後述のgitlab-ci.yamlでタグを指定してデプロイできる。 | 
| RUNNER_NAME | Runnerの名前を定義 | 
| RUNNER_LIMIT | ジョブの最大同時実行数を指定 | 
| DOCKER_IMAGE | ジョブを実行するコンテナがベースとするデフォルトのDockerイメージを指定 | 
| DOCKER_VOLUMES | ジョブ用のコンテナ実行時にマウントするボリュームを指定 | 
参考: 公式GitHub README
GitLab Runnerを起動
$ docker-compose up -dGitLabサーバーにGitLab Runnerを登録
$ docker exec -it docker-executor gitlab-runner register以下のようなメッセージが表示されれば、正しく登録できています。
Registering runner... succeeded                     runner=xxxxxx
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! GitLab上からも、GitLab Runnerが登録されたことを確認できます。
GitLab > Admin Area > Runners

ここまでで、GitLab Runnerの構築は完了です。
まとめ
今回は、Dockerホスト上にGitLab Runnerのコンテナを構築し、構築済みのGitLabに登録する手順を説明しました。
次回は、Webアプリケーションのソースを使って、GitLabにソースをpushしたら、GitLab RunnerがWebアプリケーションを起動するCICDの流れを実践してみたいと思います。
 
  
  
  
  

コメント