1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

オンプレミス(GitLabと同じ)環境にGitLab RunnerでCI/CD環境を構築する

Last updated at Posted at 2022-10-11

自分で構築したGitLabにGitLab Runnerを設定する手順のまとめです。
Gitlabを構築する下記記事の続きになります。

やりたいこと

  • オンプレミス環境に構築したGitLabから利用するRunnerとして設定する
  • スモールスタートとしてGitLabと同じサーバー内に構築する
  • GitLabの共有Runnerとして設定する
  • executorにはDockerを利用する

Dockerのインストール

まずはDockerをインストールし、利用できるようにしておきます。
特に難しいこともないので、下記公式の手順に従ってインストールしてください。

下記のようにdockerコマンドが利用できるようになっていればOKです。

$ docker -v
Docker version 20.10.18, build b40c2f6
$ docker compose version
Docker Compose version v2.10.2

内部通信の為のホスト設定①

RunnerからGitLabへアクセスする為のURLは、同じサーバー内からのアクセスになるので、普通ならhttp://localhost/となります。
Runner自体からGitLabへアクセスするケースであればhttp://localhost/で良いのですが、
Runnerが利用するDockerコンテナ内からGitLabへアクセスするケースはhttp://localhost/ではアクセスが通りません。
※Dockerコンテナ内のポート80にアクセスすることになってしまう為。

その為、localhostとは別のホスト名を設定しておき、環境によってアクセス先(IP)を変えられるようにします。

$ sudo vim /etc/hosts
hosts
127.0.0.1 localhost gitlab    ←gitlabをエイリアスとして追加。

※ここではgitlabとしていますが、任意の名前で良いです。
サーバー内からのアクセス先は127.0.0.1で良いので、localhostのエイリアスとして設定します。

試しに、http://gitlab/でもGitLabにアクセスできることを確認しておきます。

$ curl http://gitlab/-/health
GitLab OK

localhostと同様にヘルスチェックが通ればOKです。

GitLab Runnerのインストール

公式の手順通りではありますが、パッケージのリポジトリを登録してaptコマンドでインストールします。

$ curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
$ sudo apt install gitlab-runner

バージョンを確認。

$ gitlab-runner -version
Version:      15.4.0
Git revision: 43b2dc3d
Git branch:   15-4-stable
GO version:   go1.17.9
Built:        2022-09-20T22:38:36+0000
OS/Arch:      linux/amd64

ステータスを確認。
Service is runningになっていればOKです。

$ sudo gitlab-runner status
Runtime platform                                    arch=amd64 os=linux pid=2989579 revision=43b2dc3d version=15.4.0
gitlab-runner: Service is running

GitLabにRunnerを登録

GitLabの管理者ページのRunnerの設定を開きます。
image.png
「Register an instance runner」をクリックし、登録の為のトークンを取得します。
image.png

次にGitLab Runnerに対して登録作業を行います。

$ sudo gitlab-runner register
Runtime platform                                    arch=amd64 os=linux pid=3043759 revision=43b2dc3d version=15.4.0
Running in system-mode.

Enter the GitLab instance URL (for example, https://gitlab.com/):
http://gitlab/                               ←先ほど設定したホスト名(gitlab)を指定
Enter the registration token:
XXXX                                         ←先ほど取得したトークン
Enter a description for the runner:
[gitlab-vm]: Shared-Runner1                  ←登録するRunnerの説明
Enter tags for the runner (comma-separated):
shared                                       ←登録するRunnerのタグ
Enter optional maintenance note for the runner:
                                             ←メンテナンスノート(省略ならそのままEnter
Registering runner... succeeded                     runner=K6rhar1C
Enter an executor: kubernetes, docker-ssh, shell, virtualbox, docker-ssh+machine, docker+machine, custom, docker, parallels, ssh:
docker                                       ←利用するexecutor
Enter the default Docker image (for example, ruby:2.7):
node:16                                      ←デフォルトのDockerImage
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml"

これで登録できました。
GitLabのRunnerのページで下記のように追加されていればOKです。
image.png

あとこれは任意ですが、登録したRunnerの設定を1点変更します。
登録したRunnerの編集を選択して、「タグのないジョブの実行」を許可しておきます。
これを許可していない場合、ジョブを登録する際に明示的にタグ(今回の設定だとshared)を指定しないと、このRunnerは実行してくれません。
image.png

内部通信の為のホスト設定②

最後にRunnerが利用するDokerからの内部通信の設定を行います。
まずは下記コマンドでDockerが使用するネットワークでのホスト側のIPアドレスを調べます。
docker0:となっているものが対象で、下記の場合は172.17.0.1になります。

$ ip a
...
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:29:6e:d3:df brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:29ff:fe6e:d3df/64 scope link
       valid_lft forever preferred_lft forever

次にGitLab Runnerの設定を変更します。

$ sudo vim /etc/gitlab-runner/config.toml
config.toml
  [runners.docker]
    tls_verify = false
    image = "node:16"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
    extra_hosts = ["gitlab:host-gateway"]    # ←追加

2022/11/03追記
IPの代わりにhost-gatewayと指定すれば良いらしいので修正。

こうすることで、http://gitlab/とアクセスする際に、

  • サーバー内からのアクセスなら127.0.0.1
  • Dockerコンテナ内からのアクセスなら172.17.0.1

としてアクセスするようになります。

これでGitLab RunnerでCI/CDが利用できるようになりました。

続いて、JOBを並列(Runnerを複数同時)実行できるように設定を行いたい方は下記にお進みください。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?