1. 程式人生 > >Gitlab CI Multi Runner搭建CI持續整合環境

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

檢視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的吧。不過跳槽後就用的少了,但願別都忘了好:)。