LoginSignup
6
8

More than 1 year has passed since last update.

Dockerを用いたGitLab-CIローカル環境の作り方

Last updated at Posted at 2022-08-17

はじめに

GitLab-CI, GitLab-Runnerの使い方に慣れるため、ローカルに練習環境を作成しました。
その際の手順を備忘録として記事にまとめます。
Docker の知識がなくても構築できるよう、コマンドを記載しています。
この記事の手順に従ってコピペしていけば、最低限GitLab-CI を試せる環境を構築できます。

この記事を読んでできること

GitLab-CE, GitLab-Runner をローカルに立ち上げ、プロジェクトに GitLab-Runner を登録できるようになります。

以下の順番で説明をしていきます。

  1. Docker内でNetworkを作成
  2. GitLab-CE を起動
  3. GitLab-Runner を起動
  4. GitLab-Runner を登録

目指す構成

GitLab-CIの環境を構築するには、

  • GitLab-CE
  • GitLab-Runner
    の2つを用意する必要があります。
    この2つを ローカルのDockerコンテナ上に立ち上げ接続を試みます。
[gitlab-network内(独自のネットワークを作成)]
    docker container 1
      L  GitLab-CE  (IPアドレス: 172.20.0.2)
            ↑  登録
    docker container 2
      L  GitLab-runner (IPアドレス: 172.20.0.3)

Networkの作成

gitlab-ce, gitlab-runner を固定のIPアドレスで起動するために、Docker上でネットワークを作成します。
ネットワーク名は gitlab-network とします。

docker network create --subnet 172.20.0.0/24 gitlab-network

以下のコマンドを打って、gitlab-networkが登録されていれば完了です。

docker network ls
NETWORK ID     NAME             DRIVER    SCOPE
43c51b2c19f1   bridge           bridge    local
742b5bc1137d   gitlab-network   bridge    local
79c45602280f   host             host      local
85bda5ecf785   none             null      local

GitLab-CE

GitLab-CEの起動

GitLab-CE の Docker イメージを起動します。

docker run --detach --network gitlab-network --ip 172.20.0.2 --publish 443:443 --publish 80:80 --publish 22:22 --name gitlab-ce gitlab/gitlab-ce:latest

各オプションは以下のような意味を持っています。

オプション 意味
--detach コンテナからログアウトした後もプロセスが残る
--network [name] コンテナをnameネットワークに登録する
--ip [address] ネットワーク内でコンテナにaddressIPアドレスを振る
--publish x:y ポートフォワーディング。ホストマシンのportxとコンテナのportyをバインドする
--name [name] コンテナにname名前をつける

GitLabにアクセス

ブラウザからGitLabにアクセスします。
今回の環境では、URLは http://localhost:80 です。
完全に起動するまで時間がかかる場合があります。
アクセスできると、ログイン画面が表示されます。
SS 2022-08-16 17.52.31.png

rootユーザーでログイン

ログイン画面が出たら、rootユーザーでログインします。
パスワードの確認方法はドキュメントに書いてあります。
(GitLab 14.0以降での確認方法)

docker exec gitlab-ce cat /etc/gitlab/initial_root_password

出力結果にパスワードが書いてあるので、

  • ユーザー名: root
  • パスワード: 確認したパスワード
    を入力してログインします。

rootユーザーのパスワードを変更する

上記で使用したパスワードは時間で消えるので、rootユーザーのパスワードを変更しましょう。
ログイン後の画面から、以下のようにユーザーのパスワードを変更できます。

左上の「Menu/Admin」 => サイドバーの「User」 => Administar行の編集ボタン
SS 2022-09-13 15.18.29.png
SS 2022-09-13 15.18.41.png
SS 2022-09-13 15.18.51.png
SS 2022-09-13 15.19.11.png

プロジェクト作成

プロジェクトを1つ作成します。
New Project → Create blank Project と進みます。
SS 2022-08-17 2.36.24.png
SS 2022-08-17 2.36.33.png

今回は、プロジェクト名を ci-practice としました。
入力したら、Create Project を押します。
SS 2022-08-17 2.37.00.png
新しいプロジェクトが作成されました。
のちほど、Runner 登録時に設定を確認します。
SS 2022-08-17 2.37.20.png

外向きのIPアドレスを固定

このあと登録するランナーに http://172.20.0.2 を通知させたいので、external_host を追加します。
この設定をしないと、プロジェクトの「Clone」から確認できるランダムなIPアドレスが通知されます。

SS 2022-09-14 18.20.25.png

コンテナにログインして設定ファイルを編集しましょう。

docker exec -it gitlab-ce /bin/bash
vi /etc/gitlab/gitlab.rb

30行目くらいに # external_url 'GENERATED_EXTERNAL_URL'というコメントがあるので、
以下のように書き加えます。

# external_url 'GENERATED_EXTERNAL_URL'                                         
external_url 'http://172.20.0.2:80/'

設定を更新します。

gitlab-ctl reconfigure

もう一度「Clone」を確認すると、IPアドレスが変わっています。
SS 2022-09-14 18.29.46.png

参考: 【GitLab】IP・ポート番号のURLで使用する方法(docker)

GitLab-Runner

基本的にはドキュメントに従って登録を進めます。

GitLab-Runner の起動

GitLab-Runner の Docker イメージを起動します。
Docker 内部のgitlab-networkネットワークで GitLab-CE にアクセスできればよいので、ポートフォワードは必要ありません。

docker run --network gitlab-network --ip 172.20.0.3 -v /var/run/docker.sock:/var/run/docker.sock --detach --name gitlab-runner gitlab/gitlab-runner:latest

URLとtokenの確認

登録に必要な URL と token を事前に確認しておきましょう。
先程ログインしたGitLabの設定から確認できます。
Settings にカーソルオーバーし、CI/CD をクリックします。
SS 2022-08-17 2.37.35.png

Runners の Expand をクリックすると、登録に必要な URL と tokenが確認できます。
SS 2022-08-17 3.17.40.png

ここで注意点としてURLが http://localhost/ となっていますが、GitLab-Runner のコンテナから localhost でアクセスすることはできません。
代わりに、固定したIPアドレス http://172.20.0.2を使用しましょう。

GitLab-Runner の登録

GitLab-Runner のコンテナ内に入り、登録を行います。
登録は対話モードで行います。

docker exec -it gitlab-runner /bin/bash
gitlab-runner register

以下は対話モードに従って入力していきます。

Enter the GitLab instance URL (for example, https://gitlab.com/):
http://172.20.0.2

Enter the registration token:
rTxCp61E5PuzCkKgaD3P

Enter a description for the runner:
local-runner

Enter tags for the runner (comma-separated):
local

Enter an executor: kubernetes, custom, docker, docker-ssh, parallels, shell, ssh, docker-ssh+machine, virtualbox, docker+machine:
docker

Enter the default Docker image (for example, ruby:2.6):
alpine:latest

Success の表記が出れば登録は完了です。

Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

docker executer の設定を追加

docker executer の選択したので、volumeの設定とネットワーク設定の追加が必要です。
vimをインストールして、設定ファイルを書き換えましょう。
(本来は Docker Volume を設定したほうがよいですが、怠けます。)

docker exec -it gitlab-runner /bin/bash
apt-get update
apt-get install vim
vi /etc/gitlab-runner/config.toml

clone_url, network_mode, volumes を追加して、ランナーの設定を以下の状態にしてください。

[[runners]]
  name = "local-runner"
  url = "http://172.20.0.2"
  token = "rTxCp61E5PuzCkKgaD3P"
  executor = "docker"
  clone_url = "http://172.20.0.2"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    network_mode = "gitlab-network"
    tls_verify = false
    image = "alpine:latest"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
    shm_size = 0

登録の確認

正常に登録できたか確認します。
再び GitLab-CE の Settings から Runners を確認します。
local-runner というランナーが追加できています。
SS 2022-08-17 3.42.27.png

おわりに

Docker の扱いや GitLab-Runner の登録の仕方などもっとスマートな書き方もあると思いますが、あまり風呂敷を広げずに単純な方法での環境構築を紹介しました。
最低限の環境構築はできますが、よりしっかりと学びたい方は他の記事を参考にしていただきたいと思います。
また、今回は GitLab-CE もローカルで立てましたが、WEB版や社内のリソースを利用できる場合は、そちらも利用できます。
URL と token のみ確認できれば同様の手順で登録できます。

6
8
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
6
8