背景
本節是繼DevOps實例演示
的第四篇文章, 在上一篇文章中, 我們已經成功安裝部署了GitLab
並且安裝了GitLab-Runner
,初步完成了我們的DevOps的第一步需求, 本篇文章目的在於再向大家介紹一種git-runner
的安裝, 在閱讀本篇前,筆者強烈建議先閱讀上篇
DevOps系列GitLab-CICD(二)之安裝git-runner-rpm安裝方式
聲明: 在本文以及本系列文中, 不會涉及公司內部相關內容,旨在能幫助到和我一樣摸着光亮前進的人。
備註: 在閱讀本章節前, 若您掌握有一定的git命令
、Linux
以及Docker
知識將更容易理解。
介紹/區別
在上一篇文章中, 我們說講到了, 比較常用的git-runner
的安裝方式就是shell
以及Docker
. 那麼他們有什麼不同點呢?
先看一下我們在註冊git-runner
的那一條選項有什麼區別
#shell方式
Please enter the executor: docker+machine, kubernetes, docker, parallels, shell, ssh, virtualbox, docker-ssh+machine, docker-ssh:
shell
#docker方式
Please enter the executor: docker+machine, kubernetes, docker, parallels, shell, ssh, virtualbox, docker-ssh+machine, docker-ssh:
docker
# -----可以看到, 當我們選擇了docker之後, 會多一個選項(選擇一個docker鏡像)
Please enter the default Docker image (e.g. ruby:2.1):
# -----因爲筆者要對java進行編譯打包, 在這選擇一個已經包含基本環境`maven:3-jdk-8`的鏡像
maven:3-jdk-8 (針對於java環境)
從上面我們已經看到一條區別了, 那麼下面我們再具體說一下, 區別:
-
第一點:因爲我們在runner的時候需要不同的環境, 比如你要runner的是
Java
你可能會需要依賴JDK以及Maven
環境, 如果你runner的是前端, 你可能需要依賴node以及npm
環境.- shell模式: 依賴環境都需要自己提前在服務器上面安裝,配置好
- docker模式: 依賴環境可以直接通過現有的docker鏡像進行部署
-
第二點: 如果服務器有限, 或者不想太多的資源浪費, 那麼可以選擇
docker
部署 -
第三點: 如果在整個
CI的pipeline
過程中, 每個階段的產物你可能在下一個階段會用到, 比如build完的jar或者一些其他資源, 在後續步驟中你用到, 那麼選擇shell
模式會比較理想一點,因爲可以少去很多配置, 如果docker
模式的話, 完成一系列操作, 你可能需要費點勁去掛載目錄
, 然後你後續再從掛載的目錄下獲取pipeline
的一些成果.
安裝
在上一篇我們的安裝比較詳細, 在該篇文章中, 會涉及到不少重複的步驟, 會省略.
系統
CentOS Linux release 7.5.1804 (Core)
安裝Docker
Docker版本
[root@gitlab-runner-64 ~]# docker version
Client:
Version: 18.09.0
API version: 1.39
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:48:22 2018
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.0
API version: 1.39 (minimum version 1.12)
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:19:08 2018
OS/Arch: linux/amd64
Experimental: false
啓動gitlab-runner
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
或者可以使用第三方存儲valume的啓動方式
docker run -d --name gitlab-runner-config \
-v /etc/gitlab-runner \
busybox:latest \
/bin/true
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
註冊(配置和參考上一篇)
docker run --rm -t -i -v /srv/gitlab-runner/config:/etc/gitlab-runner --name gitlab-runner gitlab/gitlab-runner register
執行完成之後,會有以下文件生成/srv/gitlab-runner/config
[root@gitlab-runner-64 ~]# cat /srv/gitlab-runner/config/config.toml
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "docker-runner"
url = "http://xxxxxxx/"
token = "xxxxxxxxxxxxxxxxxxxx"
executor = "docker"
[runners.docker]
tls_verify = false
image = "golang:latest"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/var/run/docker.sock:/var/run/docker.sock","/cache"]
shm_size = 0
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
查看是否已經註冊完成
到這裏, 以及和上一篇文章一樣了, 剩餘後續的pipeline工作, 在這裏就不在多多贅述了,
同時呢, 我們Devops過程中第一步也就介紹到這裏了. 下面的一個系列是關於第二步驟中的Cd自動部署部分