今回は、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 upgrade
Dockerを公式リポジトリからインストール
$ 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-ce
Dockerのインストール確認
$ docker -v
Docker version 19.03.5, build 633a0ea838
Docker 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-compose
Docker Composeのインストール確認
$ docker-compose --version
docker-compose version 1.25.0, build 0a186604
sudoなしでdockerコマンドを使えるようにする
$ sudo gpasswd -a $USER docker
$ sudo systemctl restart docker
$ sudo chmod 666 /var/run/docker.sock
Dockerコマンドが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.yml
GitLab 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 -d
GitLabサーバーに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の流れを実践してみたいと思います。
コメント