0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

docker-compose でGitlabとGitlab-Runner構築

Last updated at Posted at 2022-06-03

タイトルの通り、Docker上にGitlabとGitlab-Runnerを構築し、GitlabのリポジトリへのpushでGitlab-Runnerをはしらせるまで、いろいろな記事を参考にしてうまくいったので記録を残しておきます。

ほんの一か月前、Dockerに初めましてしたばかりなので、苦労しました。

参考にした記事

筆者の環境

  • OS Windows10
  • Docker for Desktop version 20.10.14

手順

1,Docker-Composeの準備

適当なフォルダを用意し、docker-compose.ymlファイルを作ります。
私はhakuchangitlabというフォルダ名にしました。

image.png

docker-compose.ymlの中身は以下のサイトにあるYAMLファイルををコピペしますが、一行だけ書き換えました。

書き換えたのは上から4行目の、labのイメージです。
上記のサイトのイメージはgitlab-eeを使用しているのですが、gitlab-ceに変えました。

version: '3.6'
services:
  lab:
    image: 'gitlab/gitlab-ce:latest'  ←変更後
    restart: always
    hostname: 'gitlab.my.com'

docker-compose.ymlができたら保存して、コマンドプロンプトからhakuchangitlabフォルダまで移動します。

では、docker-compose up -d コマンドでdocker composeを構築します。

image.png

upが終わったらdocker psで確認してみます。

image.png

gitlab-runnerもgitlab-ceもSTATUSがUPになっていれば大丈夫です。gitlab-ceは(health:starting)が(health:healthy)になるまで待ちます。大体2、3分かかります。

image.png

healthyになったら、http://localhost:8080 にアクセスしてみます。

下の画面のように、GitlabのSign inページがつながれば成功です。
image.png

2 Gitlab リポジトリ

GitlabにSign inします
初期パスワードをgitlabコンテナから確認します。
docker psコマンドでgitlabのコンテナのIDを確認します。

image.png

コンテナに以下のコマンドで入ります。

docker exec -it コンテナのID /bin/bash

筆者の環境ではこんな感じに
image.png

gitlabにログインするパスワードは/etc/gitlab/initial_root_passwordにあるのでcatで中を見てみます。

image.png

黄色で隠しているところがpasswordなので、gitlabのSign inページのパスワードにコピーします。スペースもコピーされてしまうのでご注意。
ユーザネームはrootを打ちます。

image.png

サインインできました。
image.png

次はプロジェクトを作ってクローンしてみます。

New Project → create blank projectからプロジェクトを作ります。
私はプロジェクト名をproproにしました。
ここでProject URLのやじるしの部分をrootに変更します。

image.png

propro プロジェクトができました。
このリポジトリをクローンしてみます。
image.png

てきとうなディレクトリの中で以下のコマンドでcloneできます。

git clone http://localhost:8080/root/リポジトリ名.git

やってみます。
image.png

cloneのときユーザ名とパスワードを求められるので、gitlabにサインインするときに使ったrootとコンテナ内のinitial_root_passwordのパスワードを入れます。

プロジェクトができたてでクローンすると失敗するので何回かcloneしてみてください。

3 Gitla-runnerをGitlabに登録

Gitlabでリポジトリができたので、Gitlab-runnerを登録して使えるようにしたいと思います。
参考にしたページは以下のページです。

まず、gitlabから登録に必要な情報を確認します。
さっきつくったプロジェクトの左のSetting > CI/CDをクリック

image.png

Runnersをクリックする。Specific runnersにURLとTOKENがあります。必要なのは赤線で隠してあるこのTOKENです。

image.png

TOKENを確認したら、Gitla-runnerを登録します。
gitlab-runnerのコンテナに入ります。
docker ps コマンドでgitlab-runnerのコンテナIDを確認し↓
image.png
以下のコマンドでgitlab-runnerのコンテナに入ります。

docker exec -it コンテナID /bin/bash

コンテナ内にはいったら、以下のコマンドで登録を開始します。

gitlab-runner register

リポジトリの内容を登録します。
重要なのは最初のEnter The instance URLで、http://gitLab/ をうつこと。
トークンは先ほど確認したTOKENをうつ。
Enter an Executerは今回Dockerを、Enter the defuult docker imageは
ruby:2.7を指定しました。

image.png

成功したら、次に/etc/gitlab-runner/config.tomlを編集します。
その前に、docker netowrk lsでネットワークを確認すると

image.png

gitlab-netowrkがdocker composeのネットワークです。

/etc/gitlab-runner/config.tomlを編集します。gitlab-runnerコンテナに入り、

vi /etc/gitlab-runner/config.toml

で編集。ちなみにViがなかったので、apt-get updateしてからapt-get install viもしくはvimでインストールしました。

config.tomlファイルを開いたら、写真の一番下の行のように、先ほど確認したネットワークをnetwork_mode = "ネットワーク"で追加します。

スクリーンショット 2022-06-03 143323.png

保存して閉じたら。コンテナを抜けます。

コンテナの設定ファイルを書き換えたので、反映するためにDocker composeをリスタートします。

docker compose restart

http://localhost:8080 を確認します。リスタートしたのでまた2,3分待ちます。

先ほどのRunnersを確認すると、Avaibale specific runnersにrunnerが登録されているのがわかります。Editを押します。

image.png

タグがなくてもCIを実行できるように、Run untagged jobsをチェックしておきます。

image.png

4 CIの実行

実際にCIでHello Worldしてみます。

先ほどcloneしたリポジトリの中に .gitlab-ci.ymlファイルを作ります。

.gitlab-ci.ymlの中身は、ちゃんとGitlab-Runnerが動くか確認する多面いhello Worldを表示させるための簡単なジョブを書いてます。

.gitlab-ci.yml
stages:
  - echo

echo-job:
  stage: echo
  script: 
    - echo "Hello World!"

.gitlab-ci.ymlを作ったらコミットし、pushします。

image.png

Gitlabを見てみるとGitlab-runnerが実行されてHelloWorldが出ました~。

image.png

0
2
1

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
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?