1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitLabRunnerを、Docker Composeでセットアップ

Last updated at Posted at 2025-03-12

はじめに

現場でコストをかけずにソース管理とかを行いたいと思い、GitLabの導入を検討しています。
また、環境も潤沢ではないので、Dockerを使って構築していきたいと思います。

GitLabとは?

ソースコードの管理や共同開発を効率的に行うためのオープンソースのDevOpsプラットフォームです。
前回GitLabの構築はやったので、今回はCIを実施するためのGitLabRunnerを導入していきたいと思います。

環境

Windows11
WSL
Ubuntu 24.4.1
Docker 27.4.1
GitLab v17.9.1-ee(最新)

セットアップ

Docker Compose を使ってセットアップしていきます。yamlファイルは以下の通り

docker-compose.yml
services:
  gitlab:
    image: gitlab/gitlab-ee:latest  # GitLab Enterprise Edition の最新イメージを使用
    restart: always  # コンテナが停止しても自動で再起動
    hostname: 'gitlab.local'  # コンテナのホスト名を 'gitlab.local' に設定
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://gitlab.local';  # GitLab の外部 URL を設定(http でアクセス可能)
    ports:
      - "80:80"   # ホストのポート 80 をコンテナのポート 80 にマッピング(HTTP)
      - "443:443" # ホストのポート 443 をコンテナのポート 443 にマッピング(HTTPS)
      - "22:22"   # ホストのポート 22 をコンテナのポート 22 にマッピング(SSH)
    volumes:
      - ./gitlab/config:/etc/gitlab  # GitLab の設定ファイルを永続化
      - ./gitlab/logs:/var/log/gitlab  # GitLab のログを永続化
      - ./gitlab/data:/var/opt/gitlab  # GitLab のデータを永続化(リポジトリなど)
    networks:
      - gitlab-network  # GitLab 用のネットワークに接続

  gitlab-runner:
    image: gitlab/gitlab-runner:latest  # GitLab Runner の最新イメージを使用
    container_name: gitlab-runner  # コンテナ名を 'gitlab-runner' に指定
    restart: always  # コンテナが停止しても自動で再起動
    depends_on:
      - gitlab  # GitLab コンテナが起動してから Runner を起動
    volumes:
      - ./gitlab-runner/config:/etc/gitlab-runner  # GitLab Runner の設定を永続化
      - /var/run/docker.sock:/var/run/docker.sock  # ホストの Docker をコンテナ内で操作可能にする(危険なので注意)
    networks:
      - gitlab-network  # GitLab Runner も GitLab 用ネットワークに接続

networks:
  gitlab-network:
    name: gitlab-network  # GitLab 専用のネットワークを作成

ここまで出来たら、

docker compose up -d

でコンテナを起動しましょう。

Runnerの設定

Runnerの登録

GitLab Runnerはプロジェクト単位に設定するようなので、
まずはグループとプロジェクトを適当に作成してください。

プロジェクトを作成したら、左のメニューの[設定]> [CI/CD]を選択
image.png

以下の画面が表示されるので、[Runnner]> [新しいプロジェクトRunner]を選択

image.png

以下の画面で、細かい設定は割愛して、画面の通りにチェックして[Runnerを作成]を選択
image.png

以下のRunnerの登録までいったら、次の作業はWSLのコマンドで実行します。
Step1Runner認証トークンをコピーしておきます。
image.png

Runnerの実行方法の登録

以下のコマンドで、Runnerの実行方法を登録します。

docker compose exec gitlab-runner gitlab-runner register \
  --non-interactive \
  --url http://gitlab.local \
  --token glrt-t3_PCSv2jU64_31z8JyRcia \
  --executor docker \
  --docker-image "alpine:latest" \
  --docker-network-mode "gitlab-network"

オプションの説明は以下の通りです

オプション 説明
--non-interactive インタラクティブではなく、非インタラクティブモードで実行します。ユーザーの入力を求めることなく、自動で設定を行います。
--url <URL> GitLab サーバーの URL を指定します。例: http://gitlab.example.com
--token <TOKEN> GitLab サーバーから発行された登録トークンを指定します。GitLab インスタンスに登録するために必要です。
--executor <EXECUTOR> ジョブを実行するエグゼキュータの種類を指定します。例: dockershell など。
--docker-image <IMAGE> 使用する Docker イメージを指定します。例: alpine:latest
--docker-network-mode <MODE> Docker コンテナのネットワークモードを指定します。例: gitlab-network

登録がうまくいくと
image.png
のように画面が変わります。変わらない場合、はStep3のコマンドを実行してみましょう

docker compose exec  gitlab-runner gitlab-runner register

元のCI/CDの設定画面を表示すると、以下の通りRunnerが作成されました。
image.png

実際にビルドしてみる

設定ファイルを作成する

ビルドするためには、プロジェクト直下に、「.gitlab-ci.yml」ファイルを作成しましょう
※細かい設定値はここでは割愛

.gitlab-ci.yml
stages:
  - message

message:
  stage: message
  script:
    - echo "パイプラインが実行されました!"

このファイルを登録すると、勝手にRunnerが動き出します。
実行結果を確認しましょう
image.png

実行結果がこちら
image.png

ジョブの結果を見ると、無事echoが実行されたことが分かります。
image.png

さいごに

Jenkinsとかと比べると若干手間はかかりましたが、無事ビルドできる環境までは整いました。
後は、.gitlab-ci.ymlの記述方法とか制約とかをちゃんと理解して、プロジェクトに適用していきたいと思います。

おまけ

ビルドの途中で成果物を保存しようとすると、アーティファクトを有効化しておく必要があります。
設定ファイルに以下を追加します。

/etc/gitlab/gitlab.rb
gitlab_rails['artifacts_enabled'] = true

修正が完了したら、以下のコマンドをGitlab Runner側のコンテナで実行します

docker compose exec gitlab gitlab-ctl reconfigure
docker compose exec gitlab gitlab-ctl restart
1
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?