ヘッダー画像

【Synology】DockerでGitLabのCI/CDを構築してみた

投稿 2025年4月29日 最終更新 2025年4月29日 専門用語多め

GitLab構築

SynologyにDockerでGitLabのCI/CD環境を作ってみます。

GitLab自体の構築に関しては、下記記事で説明していますので、説明は省きます。

気になる方は下記の記事をご参考ください。

このブログの「inkblogdb.com」ドメインを例にして設定していますので、
ご自身のドメイン等に置き換えてご参考にしてください。

docker-compose.yml

初めにdocker-compose.ymlを載せておきます。

後ほど解説します。

version: '3.6'
services:
  gitlab:
    image: gitlab/gitlab-ee:latest
    container_name: gitlab
    restart: always
    hostname: 'inkblogdb.com'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://inkblogdb.com:50433'
        registry_external_url 'https://inkblogdb.com:50000'
        gitlab_rails['gitlab_shell_ssh_port'] = 50022
        gitlab_rails['time_zone'] = "Asia/Tokyo"
        # Synologyの独自証明書を設定
        letsencrypt['enable'] = false
        nginx['ssl_certificate'] = "/etc/ssl/certs/gitlab/RSA-fullchain.pem"
        nginx['ssl_certificate_key'] = "/etc/ssl/certs/gitlab/RSA-privkey.pem"
    ports:
      - '50433:50433' # external_url用
      - '50000:50000' # registry_external_url用
      - '50022:22' # SSH用
    volumes:
      - './gitlab/config:/etc/gitlab'
      - './gitlab/logs:/var/log/gitlab'
      - './gitlab/data:/var/opt/gitlab'
      # Synologyの独自証明書を反映
      - '/usr/syno/etc/certificate/system/default:/etc/ssl/certs/gitlab'
    shm_size: '256m'
    entrypoint: >
      sh -c "
        mkdir -p /etc/gitlab/ssl ;
        ln -s /etc/ssl/certs/gitlab/RSA-fullchain.pem  /etc/gitlab/ssl/inkblogdb.com.crt ;
        ln -s /etc/ssl/certs/gitlab/RSA-privkey.pem  /etc/gitlab/ssl/inkblogdb.com.key ;
        /assets/wrapper
      "
  gitlab-runner:
    image: gitlab/gitlab-runner:latest
    container_name: gitlab-runner
    restart: always
    volumes:
      - './gitlab-runner/config:/etc/gitlab-runner'
      - '/var/run/docker.sock:/var/run/docker.sock'
    depends_on:
      - gitlab

Synology特有の注意点・変更点

docker.sock

Synologyにあるdocker.sockをgitlab-runnerに指定してあげます。

パッケージセンターからインストールしたDockerは、上記docker-compose.yml通り
/var/run/docker.sockにあるかと思います。

GitLabがunhealthyになる問題

docker-compose.ymlで初回構築時、いつまでたってもGitLabコンテナが
healthyにならないことがよくありました。

Synologyが悪いわけでは無さそうですが、
コンテナを再起動してあげてしばらく待ってあげると、ちゃんとhealthyになりましたのでご参考までに…。

docker-compose restart

GitLabのコンテナが起動した=healthy状態ではないため、
docker-compose.ymlでGitLabの起動後にrunnerを起動するようにしていますが、正直意味ないかと思います。

depends_on:
  - gitlab

Runnerの作成

CI/CDを動かすにあたって、Runnerを作成します。

管理者ボタンをクリックサイドメニューの左下にある「管理者」ボタンをクリックします。

Runnerをクリックさらにサイドメニューの「CI/CD」の中の「Runner」をクリックします。

新規インスタンスRunnerボタンをクリック「新規インスタンスRunner」ボタンをクリックします。

新規インスタンスRunner

Tags

タグタグに任意のタグ名を入力し、タグのないジョブの実行にチェックを入れます。
※だいたいチェックを入れておけばよいと思います。

設定(オプション)

設定(オプション)ここは任意で設定したい項目があれば設定してください。

「Runnerを作成」をクリックして作成します。

Runnerの登録

先ほど「Runnerを作成」ボタンを押すと、自動的にRunnerの登録画面が表示されます。

プラットフォーム

オペレーティングシステムオペレーティングシステムは「Linux」を選択します。

ステップ1

画面の通りのコマンドを、DockerのGitLabRunner内で実行します。

docker exec -it gitlab-runner /bin/bash
gitlab-runner register \
  --url https://inkblogdb.com:50433 \
  --token 画面に表示されているトークン

そのまま下記の通りに進めてください。
※「Enter the default Docker image」というところは、任意に変えていただいてもかまいません

Runtime platform                                    arch=amd64 os=linux pid=26 revision=690ce25c version=17.8.3
Running in system-mode.

Enter the GitLab instance URL (for example, https://gitlab.com/):
[https://inkblogdb.com:50433]:
Verifying runner... is valid                        runner=t1_xxe-J-
Enter a name for the runner. This is stored only in the local config.toml file:
[498eb2969af1]:
Enter an executor: docker, docker+machine, docker-autoscaler, custom, shell, ssh, parallels, virtualbox, instance, docker-windows, kubernetes:
docker
Enter the default Docker image (for example, ruby:2.7):
ruby:latest
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 register \
  --non-interactive \
  --url https://inkblogdb.com:50433 \
  --executor "docker" \
  --docker-image ruby:latest \
  --description "docker-runner" \
  --token 画面に表示されているトークン

コマンドを打ち終わって

新しいRunnerを登録しました元の画面にこのような画面が出てくると成功です。

まとめ

SynologyでCI/CD環境を作ってみたかったので、GitLabを用いて作ってみました。

CI/CD環境の作り方を調べてみたかったのでよい機会になりました。

以上、ここまで見ていただきありがとうございます。

皆さまの快適な開発ライフに、ほんの少しでもお役に立てれば幸いです。

コメント

この記事のコメントはありません。