GitLab
devops
Docker
prometheus
Mattermost

GitHub/CircleCI/Slack/Docker Hub/DatadogをまとめたようなOSS、Omnibus GitLabのインストール(8,9,10対応)

More than 1 year has passed since last update.

※ GitLab 9対応を確認しました。

※ GitLab 10対応を確認しました。

アップグレード記事はこちら


対象


  • なんらかの理由でGitHubやGitHub Enterpriseを使えない方

  • タダで似たようなツールを使いたい方


Omnibus GitLabとは

GitLabシリーズとそれらに必要なミドルウェアを同梱したパッケージです。

元々GitLabはその名の雰囲気通りGitHubのクローンで、Gitリポジトリマネージャだったそうなのですが、その範囲を超えて他のモダンな開発ツールの機能をどんどん取り込んでいて、今や開発コラボレーションプラットフォームになっています。

gitlab_features.png

GitLabのサービスとそれに相当する巷のサービスをまとめてみました。※完全に機能が一致するわけではありません。

GitLabサービス
巷のサービス
用途

GitLab
GitHub
Git管理、プルリク

GitLab Snippets
GitHub Gist
コードスニペット共有

GitLab Pages
GitHub Pages
静的サイトホスティング

GitLab Board
ZenHub
タスク管理

GitLab CI
CircleCI
CI

GitLab Container Registry
Docker Hub
Dockerイメージ管理

GitLab Mattermost
Slack
チームチャット

GitLab Prometheus NEW

Datadog
コンテナ監視


システム要件


  • 2コア4GB推奨

  • ストレージはソフトウェアだけで10GBほど

  • 対応OSはLinuxのみ


インストール

インストールもアップデートも簡単にできるDocker Composeでのインストール方法を採用します。


事前準備

Docker1.10.0+, Docker Compose1.6.0+がインストールされている環境を用意してください。

Docker for Windowsには非対応ですので、Windowsの場合は、Docker Toolboxや、Vagrant(サンプル)などでLinux仮想マシン上にDocker環境を用意してください。


Step 1. docker-compose.ymlを作成する

以下のコードをdocker-compose.ymlという名前で保存してください。


docker-compose.yml

version: '2'

services:
gitlab:
container_name: gitlab
image: gitlab/gitlab-ce:latest
restart: always
environment:
GITLAB_OMNIBUS_CONFIG: |
## GitLab configuration settings
##! Check out the latest version of this file to know about the different
##! settings that can be configured by this file, which may be found at:
##! https://gitlab.com/gitlab-org/omnibus-gitlab/raw/master/files/gitlab-config-template/gitlab.rb.template

## GitLab URL
##! URL on which GitLab will be reachable.
##! For more details on configuring external_url see:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
external_url 'http://gitlab.example.com'

################################################################################
## gitlab.yml configuration
##! Docs: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/gitlab.yml.md
################################################################################

gitlab_rails['gitlab_ssh_host'] = 'ssh.gitlab.example.com'
gitlab_rails['time_zone'] = 'UTC'

################################################################################
## Container Registry settings
##! Docs: https://docs.gitlab.com/ce/administration/container_registry.html
################################################################################

registry_external_url 'http://registry.gitlab.example.com'

################################################################################
## GitLab Pages
##! Docs: https://docs.gitlab.com/ce/pages/administration.html
################################################################################

pages_external_url 'http://pages.example.com/'

################################################################################
## GitLab Mattermost
##! Docs: https://docs.gitlab.com/omnibus/gitlab-mattermost
################################################################################

mattermost_external_url 'http://mattermost.example.com'
volumes_from:
- gitlab-data
ports:
- "80:80"
- "2222:22"

gitlab-data:
image: busybox
volumes:
- /etc/gitlab
- /var/log/gitlab
- /var/opt/gitlab

gitlab-runner:
container_name: gitlab-runner
image: gitlab/gitlab-runner:alpine
restart: always
volumes_from:
- gitlab-runner-data
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "$HOME/.docker/config.json:/root/.docker/config.json"

gitlab-runner-data:
image: busybox
volumes:
- /etc/gitlab-runner


上記では各サービスに以下のドメインが指定されています。

サービス
ドメイン名

GitLab
gitlab.example.com

Git SSH
ssh.gitlab.example.com

Container Registry
registry.gitlab.example.com

GitLab Pages
pages.example.com

Mattermost
mattermost.example.com

GITLAB_OMNIBUS_CONFIGの部分で設定されているので、適宜変更してください。


Step 2. サービスを起動する

さきほど作ったdocker-compose.ymlのディレクトリ上で

$ docker-compose up -d

と実行すると、GitLabなど各種Dockerイメージのダウンロードが始まり、最終的に各種Dockerコンテナが作成され、起動します。

何かと時間のかかる処理が続くので、しばしお待ち下さい。(数分〜数十分)

各サービスの起動状況を確認するには以下を実行してください。

user@host ~ $ docker-compose ps

Name Command State Ports
---------------------------------------------------------------------------------
gitlab /assets/wrapper Up 0.0.0.0:2222->22/t
cp, 443/tcp,
0.0.0.0:80->80/tcp
gitlab-data sh Exit 0
gitlab-runner /usr/bin/dumb-init Up
/entryp ...
gitlab-runner-data sh Exit 0

上記のようにgitlabがUpになっていれば起動成功です。ポート80と、GitのSSH接続用ポート2222が開いている状態です。


Step 3. ドメインを設定する

docker-compose.ymlで指定したドメインをレコード設定してください。

GitLab Pagesは他と違い、例えばdocker-compose.ymlpages.example.comと設定した場合、レコードは*.pages.example.comとワイルドカードで設定する必要があります。


以上


  • ブラウザでhttp://<GitLab URL>にアクセスし、画面が表示されたらGitLabのインストール成功です。パスワード設定後、Usernameにroot、Passwordに先ほどのパスワードでログインできると思います。can't be reachedや502 Bad Gatewayの場合はまだ起動処理中なので、しばらく待ってからアクセスしてみてください。

    gitlab_init.png


  • http://<Mattermost URL>にアクセスし、画面が表示されたらGitLab Mattermostのインストール成功です。can't be reachedや502 Bad Gatewayの場合はまだ起動処理中なので、しばらく待ってからアクセスしてみてください。

    mattermost_init.png


これで、GitHub, ZenHub, Slack, Docker Hub相当の機能(Git/Dockerリポジトリ管理、プルリク、カンバン、チームチャット等)が用意できました。


おまけ


CIを使う

GitLabのCI機能は、リポジトリ内の.gitlab-ci.ymlのジョブをRunnerに投げる、という仕組みになっているので、

別サービスとして動いているGitLab RunnerサービスにRunnerを登録する必要があります。


  • GitLabのAdmin Area > Runnersにアクセスし、registration tokenを確認する


  • Runnerを登録する(registration-tokenパラメータを置き換える)


$ docker exec -it gitlab-runner gitlab-runner register \

--non-interactive \
--name shared-runner \
--url http://gitlab/ \
--registration-token XXXXXXXXXXXXXXXXXXXX \
--executor docker \
--limit 2 \
--docker-image docker:1.10 \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock


GitLab Mattermostのビデオ通話を有効にする

プレビュー版ですが、WebRTCを利用したビデオ通話機能があり、Chrome/Firefox/Desktop Appに対応しているそうですが、私の環境ではFirefoxでしか動作しませんでした。



  • docker-compose.ymlGITLAB_OMNIBUS_CONFIGに以下を追記する

        mattermost['webrtc_enable'] = true

mattermost['webrtc_gateway_websocket_url'] = 'ws://mattermost.example.com:8188'
mattermost['webrtc_gateway_admin_url'] = 'http://mattermost.example.com:7088/admin'
mattermost['webrtc_gateway_admin_secret'] = 'janusoverlord'



  • docker-compose.ymlservicesに以下を追記する

  mattermost-webrtc:

container_name: mattermost-webrtc
image: mattermost/webrtc:latest
restart: always
ports:
- "7088:7088"
- "8188:8188"

追記したymlはこちら


  • docker-compose up -dを実行してサービスを再構築する


  • MattermostのAccount Settings > Advanced > Preview pre-release featuresを開き、Enable the ability to make and receive one-on-one WebRTC callsを選択して保存する


  • チャットのユーザー名をクリックしてユーザープロフィールを開いた時、有効にしたユーザー同士であればビデオボタンが表示されるので、ビデオ通話ができれば成功

    mattermost_video.png



他色々使いそうなオプションを詰め込んだdocker-compose.yml

docker-compose.yml configuring GitLab with Container Registry, Pages, CI, Mattermost (enabled WebRTC), and some other options


参考

Omnibus GitLab documentation

GitLab Community Edition documentation

Mattermost documentation