前置步驟: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 withdocker 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 thegitlab-runner
command is executed inside of a Docker container.Docker image installation and configuration
Install Docker first:
curl -sSL https://get.docker.com/ | sh 複製程式碼
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 複製程式碼
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配置
準備註冊專用Runner令牌
- 管理員檢視令牌
進入總設定頁面,配置全域性Runner令牌
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"
複製程式碼
註冊成功提示
此時管理皮膚顯示新的Runner已經註冊
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的聯絡