自前のサーバで構築したGitLabでCI/CDを動かしたい場合はGitLab Runnerをインストールする必要がある。自分のGitLabサーバにGitLab Runnerをインストールする機会があったのでここに備忘録として残しておく。
前提
- 自前のGitLabを既に構築しておりブラウザからrootアカウントでログインできる
- GitLab RunnerサーバにSSHログインできてroot権限で作業できる
- 今回はGitLabサーバとGitLab Runnerサーバを同一サーバに構築した
- SELinuxを無効化している
バージョン
- OS: CentOS8
- GitLab: 13.2.3-ee
- GitLab Runner: 13.2.2
準備
事前に以下の手順で設定情報をメモしておく。この情報はRunnerの設定時に利用する。
- GitLabにrootアカウントでログイン
- 「Admin Area」にアクセス
- Overview -> Runners ページにアクセス
- 「Set up a shared Runner manually」のURLとトークンをメモしておく
作業開始
ここからインストール、設定、起動の作業をする。GitLab RunnerサーバにSSHログインしrootアカウントになっておく。
Docker
今回はExecutor(CI/CDのjobを実行する実行環境)にDockerを採用するため、先にDockerをインストールし起動しておく。
インストール
curl -O https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.13-3.2.el7.x86_64.rpm
dnf install -y containerd.io-1.2.13-3.2.el7.x86_64.rpm
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install -y docker-ce docker-ce-cli
systemctl start docker
systemctl enable docker
NAPTを設定
CentOS8のDockerではコンテナが名前解決のためホストと同じDNSサーバに問い合わせし、Firewallを起動している場合はIP到達性がなくなるためネットワークのエラーが発生してしまう。こちらの記事に載せられていた対策を実施する。
firewall-cmd --add-masquerade --permanent
firewall-cmd --reload
GitLab Runner
インストール
公式サイトを参考にした。
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | bash
dnf -y install gitlab-runner
設定
公式サイトを参考にした。以下のコマンドを実行して対話形式で情報を入力していく。
gitlab-runner register
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
https://xxxx.xxxx.xxxx/(ここに先ほどメモしたURLを貼り付ける)
Please enter the gitlab-ci token for this runner:
xxxxxxxxxxxxxx(ここに先ほどメモしたトークンを貼り付ける)
Please enter the gitlab-ci description for this runner:
[GitLab]: my-runner(この名前がRunner一覧ページに表示される)
Please enter the gitlab-ci tags for this runner (comma separated):
(指定しなくてもよい)
Please enter the executor: parallels, shell, ssh, kubernetes, custom, docker, docker-ssh, virtualbox, docker+machine, docker-ssh+machine:
docker(Executorはdockerにする)
Please enter the default Docker image (e.g. ruby:2.6):
alpine:latest(デフォルトにしたいDockerイメージを指定する)
確認
以下のコマンドでサービスが起動しているか確認できる。
systemctl status gitlab-runner
GitLabのWebページにrootアカウントでAdmin Areaにアクセスし、Runner一覧で今設定したのが登録されていることを確認する。
CI/CDを試してみる
簡単なPipelineを書いてRunnerを動かしてみる。
リポジトリを作成
GitLabのページからテスト用リポジトリを作成する。下の図では「runner-test」というリポジトリを作成している。
.gitlab-ci.ymlを作成
ブラウザでファイル作成、編集する便利機能があるのでそれを使ってみる。下の図の「New file」をクリックする。
「Select a template type」から「.gitlab-ci.yml」を選択
「Apply a template」から「Bash」を選択
「Commit changes」をクリックして、 .gitlab-ci.yml
ファイルをリポジトリに追加する。
Pipelineの実行を確認
左メニューから「CI/CD」をクリックし、先ほどのcommitでパイプラインが実行されていることを確認する。(「Status」が「running」になっている)
しばらく待って「Status」が「passed」になればOK