DevOps GitLab CICD 實踐2——Runner 部署

F嘉陽發表於2019-04-07

前置步驟:DevOps GitLab CICD 實踐1——GitLab 部署

官方文件

文件地址

雖然有官方指引,但個人感覺指引的不夠清晰,導致初次配置可能頻繁失敗

Run GitLab Runner in a container

This is how you can run GitLab Runner inside a Docker container.

General GitLab Runner Docker image usage

GitLab Runner Docker images (based on Ubuntu or Alpine Linux) are designed as wrappers around the standard gitlab-runner command, like if GitLab Runner was installed directly on the host.

The general rule is that every GitLab Runner command that normally would be executed as:

gitlab-runner [Runner command and options...]
複製程式碼

can be executed with:

docker run [chosen docker options...] gitlab/gitlab-runner [Runner command and options...]
複製程式碼

For example, getting the top-level help information for GitLab Runner command could be executed as:

docker run --rm -t -i gitlab/gitlab-runner --help

NAME:
   gitlab-runner - a GitLab Runner

USAGE:
   gitlab-runner [global options] command [command options] [arguments...]

VERSION:
   10.7.0 (7c273476)

(...)
複製程式碼

In short, the gitlab-runner part of the command is replaced with docker run [docker options] gitlab/gitlab-runner, while the rest of Runner’s command stays as it is described in the register documentation. The only difference is that the gitlab-runner command is executed inside of a Docker container.

Docker image installation and configuration

  1. Install Docker first:

     curl -sSL https://get.docker.com/ | sh
    複製程式碼
  2. You need to mount a config volume into the gitlab-runner container to be used for configs and other resources:

     docker run -d --name gitlab-runner --restart always \
       -v /srv/gitlab-runner/config:/etc/gitlab-runner \
       -v /var/run/docker.sock:/var/run/docker.sock \
       gitlab/gitlab-runner:latest
    複製程式碼

    Tip: On macOS, use /Users/Shared instead of /srv.

    Or, you can use a config container to mount your custom data volume:

     docker run -d --name gitlab-runner-config \
         -v /etc/gitlab-runner \
         busybox:latest \
         /bin/true
    複製程式碼

    And then, run the Runner:

     docker run -d --name gitlab-runner --restart always \
         -v /var/run/docker.sock:/var/run/docker.sock \
         --volumes-from gitlab-runner-config \
         gitlab/gitlab-runner:latest
    複製程式碼
  3. Register the runner you just launched by following the instructions in the Docker section of Registering Runners. The runner won’t pick up any jobs until it’s registered.

安裝步驟

獲取Gitlab Runner祕鑰

可以通過Gitlab管理員賬號獲取,也可以讓每一個使用者自行配置

  • 普通使用者檢視祕鑰

進入任意一個倉庫的設定中,檢視CICD配置

1554266163188.png

準備註冊專用Runner令牌

1554266217632.png

  • 管理員檢視令牌

進入總設定頁面,配置全域性Runner令牌

1554266287842.png

Runner註冊

由於Runner一般執行復雜構建、打包任務,推薦配置在效能、頻寬更大的機房

準備Docker環境

$ curl -sSL https://get.docker.com/ | sh
$ systemctl start docker
複製程式碼

註冊

可以根據需要選擇註冊Runner型別

同時,為了方便配置,使用單行註冊並且關閉互動

單行註冊官方文件

命令說明:

  • -v掛載的目的是為了將註冊後的配置檔案持久化,用於執行容器
  • --rm指定容器執行結束後自動刪除停止的容器
  • -it指定使用命令列互動方式執行,便於檢視註冊結果
$ docker run --rm -it \
  -v /www/wwwroot/gitlab/srv/gitlab-runner/config:/etc/gitlab-runner \
  gitlab/gitlab-runner:alpine-v11.8.0 register \
  --non-interactive \
  --executor "docker" \
  --docker-image docker:stable \
  --url "Gitlab URL" \
  --registration-token "令牌" \
  --description "描述" \
  --tag-list "標籤1,標籤2" \
  --run-untagged \
  --docker-privileged \
  --locked="false"
複製程式碼

註冊成功提示

1554277014308.png

此時管理皮膚顯示新的Runner已經註冊

1554277086811.png

Runner 啟動

掛載本地配置資訊並啟動Runner

$ docker run -d --name gitlab-runner --restart always \
 	-v /www/wwwroot/gitlab/srv/gitlab-runner/config:/etc/gitlab-runner \
    -v /var/run/docker.sock:/var/run/docker.sock \
    gitlab/gitlab-runner:alpine-v11.8.0
複製程式碼

此時可見Runner已經保持和Gitlab的聯絡

1554277457677.png

相關文章