【Gitlab】使用 Docker-Compose 建置 GitLab+GitLab-Runner

GitLab版控已經非常好用, 但身為一位工程師
懶還要更懶
沒有使用CI/CD通常整合, 測試, 佈署等等都會落在人工處理
因此這些步驟可以使用GitLab CI/CD達成

機器能做的幹嘛給人做呢?
但要建置GitLab CI/CD前提條件必須先安裝GitLab-Runner
沒錯使用 Docker-Compose 基本的建置也都可以完成
但也要有些設定

version: '3'
services:

  gitlab:
    container_name: 'gitlab'
    environment:
      DEBUG: 'false'
      GITLAB_PORT: 10080
      GITLAB_SSH_PORT: 10022
      GITLAB_SECRETS_DB_KEY_BASE: qcs-gitlab-app
      GITLAB_SECRETS_OTP_KEY_BASE: qcs-gitlab-app
      GITLAB_SECRETS_SECRET_KEY_BASE: qcs-gitlab-app
      GITLAB_OMNIBUS_CONFIG: |
                      external_url http://127.0.0.1:10080
                      pages_external_url http://pages.example.io
                      gitlab_pages['enable'] = true
                      nginx['listen_port'] = 80
                      nginx['enable'] = true
    image: gitlab/gitlab-ce:latest
    links:
    - redis:redisio
    - postgresql:postgresql
    ports:
    - '10080:80'
    restart: always
    hostname: '127.0.0.1:10080'

  postgresql:
    environment:
      DB_EXTENSION: pg_trgm
      DB_NAME: gitlabhq_production
      DB_PASS: password
      DB_USER: gitlab
    image: sameersbn/postgresql:9.6-2
    restart: always

  redis:
    command:
    - --loglevel warning
    image: sameersbn/redis:latest
    restart: always

  runner:
    image: gitlab/gitlab-runner:latest
    container_name: 'gitlab-runner'
    restart: always

在 Docker-compose 中的環境設定 GITLAB_OMNIBUS_CONFIG 的參數
只有在啟動 Containers 才會強制設定
實際上進入機器中查看 Gitlab.rb 設定檔並不會異動
建議以下設定都開啟
未來使用GitBook CI/CD產生的 Page可以使用

gitlab_pages['enable'] = true
nginx['enable'] = true

Docker-compose 建置完畢, 接著就要註冊 GitLab-Runner

  1. 進入 GitLab-Runner
  2. 執行指令「gitlab-runner register」
  3. 按照註冊步驟輸入參數

輸入 GitLab IP or Domain

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
http://127.0.0.1:10080

輸入 GitLab Token

Please enter the gitlab-ci token for this runner
xxxxxxx

輸入 Runner 描述

Please enter the gitlab-ci description for this runner
隨意輸入

輸入 Runner 標籤

Please enter the gitlab-ci tags for this runner (comma separated):
隨意輸入

輸入執行 Runner 要使用的程序, 這邊使用 Docker

Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
docker

輸入執行 GitLab上的「.gitlab-ci.yml」所要執行的Docker Image

Please enter the Docker image (eg. ruby:2.1):
alpine:latest

另外, 如果 GitLab 有 SSL 驗證
需要將 GitLab 的金鑰在註冊Runner時候綁定

gitlab-runner register --tls-ca-file /my/path/gitlab/gitlab.pem

Enjoy!

留言

Top