ローカルマシンにGitLab Runnerを導入してGitLabでCI/CDする方法


はじめに

やりたいことはタイトルの通り。

公式ドキュメントを見れば分かると言いたいが、ちょっと苦戦したのでメモ。

実はローカルマシンではなくクラウド上の仮装マシン等に入れる場合もこの方法でいけるが、自分がローカルマシンに入れたのと、ローカルマシンに入れるパターンが多いと思ったのでこのタイトルにした。

環境

  • GitLab 11.11.8

準備

1. Docker環境を用意する

OSに合わせてDocker for Mac, Docker for Windowsなどインストールする。
ここはいろんな資料がネットに落ちてるのでググってほしい。

参考
* DockerをMacにインストールする
* Docker for Windowsをインストール
* Install Docker Engine on Ubuntu

2. GitLab Runnerのセットアップ

公式ドキュメントにはローカルのファイルシステムをマウントする方法Docker Volumeを使う方法の2つがあるが、後者を使うことにした。

以下ローカルマシンでコマンドを実行する。

2-1. config用のvolumeを作成する。

docker volume create gitlab-runner-config

2-2. GitLab Runnerのコンテナを立ち上げる

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

2-3. 立ち上げたコンテナを登録する

これを各GitLabプロジェクト毎に行う。

2-3-1. これを実行
docker run --rm -it -v gitlab-runner-config:/etc/gitlab-runner gitlab/gitlab-runner:latest register
2-3-2. 使用しているGitLabのURLを入力する
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
https://gitlab.com
2-3-3. GitLabプロジェクトのトークンを入力する

トークンはGitLabプロジェクトの Settings->CI/CD->Runners で確認できる。

Settings は強権限が無いと閲覧できないので注意。

Please enter the gitlab-ci token for this runner
xxx
2-3-4. Runnerの説明を書く
Please enter the gitlab-ci description for this runner
[hostname] my-runner
2-3-5. Runnerに紐づけるタグをカンマ区切りで指定する
Please enter the gitlab-ci tags for this runner (comma separated):
my-tag,another-tag
2-3-6. Runner Executerを指定する

今回は docker を選んだ。
Docker以外でも実行できるらしい。

Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
docker
2-3-7. デフォルトイメージを指定する

今回は alpine:latest にした

Please enter the Docker image (eg. ruby:2.6):
alpine:latest
2-3-8. Runnerが登録されたか確認する(2020/08/21 11:25更新)

GitLabプロジェクトの Settings->CI/CD->Runners->Runners activated for this project を確認

Runnerの詳細ページに行き、IPアドレスがローカルマシンのIPアドレスと同じか確認する。

3. .gitlab-ci.ymlを設定する

適当なブランチで .gitlab-ci.ymlを作成する。

書き方は公式ドキュメントやグーグル先生を参照してほしい。

gitlab-ci.yml
image: python:latest
stages:
    - test
unittest:
    stage: test
    script:
        - echo "hoge"

4. 適当にコミットをプッシュする

プッシュしたコミットを見るとCIの結果が表示されている。

おわりに

GitLab Runnerをローカルマシンで動かすことができた。

次はAWSのアクセスキーをGitLab Runnerで使う方法とか書きたい。

参考