LoginSignup
6
6

More than 3 years have passed since last update.

Docker Composeを用いてCentOS7上でGitLab Runner Dockerを作成

Last updated at Posted at 2019-08-31

はじめに

どうも!生産技術部のエンジニアです。前回の「proxy環境下でDocker Composeを用いてCentOS7上にGitLab Dockerを作成」で、DockerのインストールからGitLabの導入まで実施しました。今回は、GitLab Runnerの導入からGitLabとの連携まで実施していきます。

GitLabサーバを一から構築される方は、以下からご覧ください。
「proxy環境下でDocker Composeを用いてCentOS7上にGitLab Dockerを作成」

環境

  • CentOS : 7.6.1810
  • Docker-CE : 19.03.1
  • Docker Compose : 1.25.0-rc2
  • GitLab-CE Docker : 12.2.0-ce.0
  • GitLab Runner Docker: 12.2.0

前提条件

Docker、GitLabの導入が実施済みであること。

GitLab Runnerのインストール・起動

docker-compose.ymlを作成済みの場合は1.を飛ばしてください。2.では前回作成したdocker-compose.ymlを修正しています。

  1. GitLab Runner 用のディレクトリを作成&移動
    $ mkdir -p $HOME/docker/gitlab/ && cd $HOME/docker/gitlab/
  2. YAMLファイルを作成(中身は下記参照)
    $ vi docker-compose.yml
  3. Dockerコンテナの起動&プロセスの確認
    $ docker-compose up -d && docker-compose ps
gitlab_runner/docker-compose.yml
version: '3'
services:
  gitlab:
    image: 'gitlab/gitlab-ce:latest'
    restart: always
    hostname: 'gitlab.example.com'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://gitlab.example.com'
        gitlab_rails['gitlab_shell_ssh_port'] = 4022
        # Add any other gitlab.rb configuration here, each on its own line
    ports:
      - '80:80'
      - '443:443'
      - '4022:22'
    volumes:
      - '/srv/gitlab/config:/etc/gitlab'
      - '/srv/gitlab/logs:/var/log/gitlab'
      - '/srv/gitlab/data:/var/opt/gitlab'
  runner:
    image: 'gitlab/gitlab-runner:latest' 
    restart: always
    volumes:
      - /srv/gitlab-runner/config:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock

GitLabにGitLab Runnerを登録

GitLabをコンテナ内で起動した場合、以下のコマンドで登録します。(複数のRunnerを立ち上げる場合は、以下のコマンドを複数回実行することで可能になります。)
対話型で実行していますが、オプションの設定により一行のコマンドで実行できます。

  • gitlab-ci coordinator URL / gitlab-ci token
    起動したGitLabのサイトにログインし、Admin areaRunnersをクリックすると確認できます。GitLabを起動したPCで確認したhttp://localhost/では上手く登録できませんでしたが、外部PCから確認したURLで登録可能でした。
  • gitlab-ci description / gitlab-ci tags
    GitLabのUIで後から変更可能であるため、何も入力せずEnterで問題ないです。
  • executor(custom, docker-ssh, parallels, ssh, docker+machine, docker-ssh+machine, kubernetes, docker, shell, virtualbox)
    Executorはプロジェクトをビルドする時に利用されます。GitLabの公式ドキュメント を参考に選択してください。
# 設定したボリュームが/srv/gitlab-runner/configでない場合は、合わせてコマンドも修正してください。
$ docker run --rm -t -i -v /srv/gitlab-runner/config/:/etc/gitlab-runner gitlab/gitlab-runner register
Runtime platform                                    arch=amd64 os=linux pid=6 revision=a987417a version=12.2.0
Running in system-mode.                            

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://gitlab.example.com/
Please enter the gitlab-ci token for this runner:
XXXXXXXXYYYYYYYZZZZZ
Please enter the gitlab-ci description for this runner:
[hostname] my-runner
Please enter the gitlab-ci tags for this runner (comma separated):
my-tag,another-tag

Registering runner... succeeded                     runner=XXXXXXXX
Please enter the executor: custom, docker-ssh, parallels, ssh, docker+machine, docker-ssh+machine, kubernetes, docker, shell, virtualbox:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! 

以上で設定完了になります。お疲れさまでした。先ほど確認したAdmin areaRunners下部に、登録されたRunnerを確認する事が出来ます。

最後に

GitLab Runnerの導入まで完了しました。これから実際にCI/CDを実施したいと思います。ワクワク
環境構築と合わせて、Gitでの運用方法を検討していますが、なかなかいい方法が見つからず苦戦しています。
Gitのフローは、feature/master/pre-release/release/hotfixブランチで運用しようと思っています。

  • 苦戦している所
    1.本番環境において、複数のプロジェクトのプログラムが同じフォルダ階層に存在する。フォルダA以下にプロジェクト1の1A.h、プロジェクト2の2A.h、フォルダB以下にプロジェクト1の1B.h、プロジェクト2の2B.hみたいな感じです。デプロイ時にフォルダ構成を変更すればいいと思っていますが、ローカルの実行環境も本番と同じフォルダ構成、、、サブモジュールとか使えば上手くいくんですか???
    2.1つのプロジェクト(リポジトリ)の最新版を複製し、別のプロジェクトを作成する必要があります。ベースにしたプロジェクトから変更した事がわかるように履歴を残したい。

Gitのプロ、教えてください!次回、進捗があれば記事にしたいと思います。

ご参考

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