使用 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 設定檔並不會異動,建議以下設定都開啟

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!

訂閱
通知
guest
0 留言
預約回饋
查看所有留言