これまでGitLabを自PCで運用してきたのですが、CI/CD機能は未使用でした。
CI/CD機能を使用するためにはいくつかの手順が必要とのことで、調べながら作業して、なんとかCI/CD機能を動かすことができました。
ここでは、CI/CD機能を動かすまでに行ったことを、忘れないようにするために記録しておきます。
今回使用した試行環境は以下のとおりです。
- OS:Ubuntu 16.04 LTS
- GitLab:Dockerにて、sameersbn/gitlab:11.10.1イメージで運用
1. GitLab Runnerのインストール
公式サイトの「Install GitLab Runner manually on GNU/LinuxのUsing binary file」に記載されている内容にしたがって、GitLabが稼働している実マシンに、GitLab Runnerをインストールします。
-
バイナリをダウンロード
Proxy環境下では、必要に応じてcurl
コマンドの-x
オプション等を使用してProxy情報を指定します。
Proxy設定については、こちらを参照ください。→ curlコマンドにてproxy設定sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
-
バイナリに実行権限を付与
sudo chmod +x /usr/local/bin/gitlab-runner
-
GitLab CIユーザーを作成
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
-
サービスとしてインストール
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
-
サービスの実行
sudo gitlab-runner start
-
(おまけ)サービスが実行されているか確認
sudo gitlab-runner status
2. GitLabへGitLab Runnerを登録
-
GitLabでプロジェクトを開き、左側のメニューから
設定
>CI/CD
を選択 -
Runner
を展開して、Set up a specific Runner manually
に記載されているURL
とトークン
を記録 -
Runnerの登録
以下のコマンドで登録します。sudo gitlab-runner register
-
Please enter the gitlab-ci coordinator URL
... 上で記録したURL
を入力 -
Please enter the gitlab-ci token for this runner
... 上で記録したトークン
を入力 -
Please enter the gitlab-ci description for this runner
... Runnerの説明を適宜入力 -
Please enter the gitlab-ci tags for this runner
... タグを適宜入力 -
Please enter the executor
...docker
を入力 -
Please enter the default Docker image
... CI実行環境として使用するDockerイメージ名を入力
-
3. ローカルのDockerイメージを使用するための設定
CI実行環境としてDockerを選択した場合、ローカルに用意したDockerイメージを使用させるためには、config.toml
への設定が必要となります。
以下の情報をもとに設定します。なお、ローカルのDockerイメージではなく、Docker Hubのイメージを使用する場合は、この設定は関係ありません。
-
GitLab-CIのRunnerでDockerのローカルイメージを使う#Runnerに"ローカルの"Dockerイメージを使わせる
-
上のサイトの概要
詳細は上のサイトを一読ください。概要としては以下のとおりです。-
config.toml
の[[runners]]
セクションの[runners.docker]
セクションに以下を追加pull_policy = "if-not-present"
-
-
公式サイトの「https://docs.gitlab.com/runner/configuration/advanced-configuration.html#using-a-private-container-registry」によると、編集する
config.toml
は以下の場所にあるとなっています。
今回試行した環境では、1. のconfig.toml
を編集しました。-
/etc/gitlab-runner/config.toml
on *nix systems when GitLab Runner is executed as root (this is also path for service configuration) -
‾/.gitlab-runner/config.toml
on *nix systems when GitLab Runner is executed as non-root -
./config.toml
on other systems
-
4. clone元を変更するための設定
今回試行した環境では、CI対象をcloneする際、http://localhost
からcloneしてしまいました。
これを、localhostではなく、GitLabサーバーのアドレスを指定してcloneするように変更するためには、config.toml
への設定が必要となります。
以下の情報をもとに設定します。
- Self-Managed な社内 Gitlab をhttps化 したら Gitlab Runnerがうまく動かなかった件#対策2
- 上のサイトの概要
詳細は上のサイトを一読ください。概要としては以下のとおりです。-
config.toml
の[[runners]]
セクションにclone_url
キーを追加し、値としてGitLabのURL([[runners]]
セクションのurl
キーと同値)を記載clone_url = "http://<GitLabアクセスアドレス>:<GitLabアクセスポート>/"
-
5. Dockerイメージを用意
CI実行環境として、独自のDockerイメージを使用する場合は、イメージを作成しておきます。
例えば、「Docker Hubで公開されているAlpine LinuxのDockerイメージをベースにして、OpenJDKとMavenが格納されたイメージを用意する」といったことが考えれます。
6. .gitlab-ci.ymlを用意
.gitlab-ci.yml
を用意して、プロジェクト配下に配置します。
ここまでで、一応、CI機能を動作させることができました。
-- 以上 --