Gitlab CI Multi Runner搭建CI持續整合環境
GitLab不僅僅只是程式碼託管的工具,它還集成了CI的功能,通過Gitlab CI Multi Runner工具可以更方便的搭建持續整合環境。
在安裝好GitLab之後還需要再安裝一個叫gitlab-ci-multi-runner的工具。
PS: 當然了肯定沒有Jenkins那麼強大,畢竟可用外掛太多了。
安裝gitlab-ci-multi-runner
gitlab-runner命令介紹
服務狀態
安裝好runner之後就可以使用gitlab-runner命令了,可通過# gitlab-runner help
檢視命令幫助,
更多命令詳情可以查閱官方文件
好了,讓我們來先檢視一下服務執行的狀態。
# gitlab-runner status
輸出以下內容,說明服務執行正常了。
gitlab-runner: Service is running!
還有也可以通過以下命令檢視,不過我更喜歡短一點的命令,後面都只使用gitlab-runner了。
# gitlab-ci-multi-runner status
註冊一個runner
註冊一個runner可以使用互動式和非互動式兩種方式,預設使用互動式的。
輸入以下命令就可以開始互動式註冊了,在這之前請確保Gitlab上面已經新建有專案了。
# gitlab-runner register
Running in system-mode.
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/ci):
http://192.168.1.2/ci // 在這裡輸入gitlab安裝的伺服器ip/ci 即可
Please enter the gitlab-ci token for this runner:
eaYyokc57xxZbzAsoshT // 這裡的token可通過Gitlab上的專案Runners選項檢視,在下面貼一張截圖
Please enter the gitlab-ci description for this runner:
[E5]: spring-demo // 這裡填寫一個描述資訊,不太重要,看著填吧
Please enter the gitlab-ci tags for this runner (comma separated):
demo // 在這裡填寫tag資訊,多個tag可通過逗號,分割。
Registering runner... succeeded runner=eaYyokc5
Please enter the executor: docker, docker-ssh, parallels, shell, ssh, virtualbox, docker+machine, docker-ssh+machine:
shell // 在這裡需要輸入runner的執行方式,因為我的Gitlab和runner是安裝在同一臺伺服器上的,直接輸入shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
// 出現這樣資訊表示服務端的配置就已經成功結束了,如果需要使用到自動構建,還需要再新增一個配置檔案,下面說說這個。
檢視runner配置資訊
可通過以下命令進行檢視
# gitlab-runner list
Listing configured runners ConfigFile=/etc/gitlab-runner/config.toml
spring-demo Executor=shell Token=387ed6c05fef248d2183f9f45b9cda URL=http://192.168.1.2/ci
也可以直接開啟配置檔案進行檢視
# vim /etc/gitlab-runner/config.toml
concurrent = 1
check_interval = 0
[[runners]]
name = "spring-demo"
url = "http://192.168.1.2/ci"
token = "387ed6c05fef248d2183f9f45b9cda"
executor = "shell"
[runners.ssh]
[runners.docker]
tls_verify = false
image = ""
privileged = false
disable_cache = false
[runners.parallels]
base_name = ""
disable_snapshots = false
[runners.virtualbox]
base_name = ""
disable_snapshots = false
[runners.cache]
刪除註冊資訊
如果發現register資訊填寫錯誤,或者不再使用了。可通過以下命令進行刪除。
- 首先檢視已註冊過的資訊
# gitlab-runner list
Listing configured runners ConfigFile=/etc/gitlab-runner/config.toml
spring-demo Executor=shell Token=387ed6c05fef248d2183f9f45b9cda URL=http://192.168.1.2/ci
- 開始刪除
# gitlab-runner unregister --url http://192.168.1.2/ci --token 387ed6c05fef248d2183f9f45b9cda
其中–url引數可檢視上面的URL=後面的值填寫,–token引數就是上面的Token=後面的值,複製貼上即可。
Running in system-mode.
Deleting runner... succeeded runner=387ed6c0
出現上面資訊表示刪除成功了。
注意:這個操作是不可逆的,為了防止出錯可以先備份一下/etc/gitlab-runner/config.toml
配置檔案
專案自動化構建配置
配置好了runner,想要開始自動構建還需要在專案根目錄新增一個.gitlab-ci.yaml檔案。
關於.gitlab-ci.yaml檔案的配置說明可參考官方文件。
下面貼一下我做測試Demo時使用的,不要笑,很簡單隻做演示用的。。
.gitlab-ci.yaml
stages:
- build
- deploy
job1:
stage: build
script: "mvn package"
job2:
stage: deploy
script: "mvn tomcat:redeploy -Dmaven.test.skip=truey -e -X"
總結
到這裡關於CI持續整合的差不多就說那麼多了,當然了還有很多都沒說到,這就要看實際的專案需求進行相應的配置了。
總的來說呢,gitlab-runner雖然跟Gitlab整合的比較好,但是功能方面還是有點不如老牌的Jenkins。
不過它對Docker倒是支援的蠻好的,說起來我接觸Docker也是挺早的了,它2013年開源,我2014年就開始接觸了,並且2015年也在公司伺服器上實際部署了,後面有時間再寫點關於Docker的吧。不過跳槽後就用的少了,但願別都忘了好:)。