gitlab之gitlab-runner

gitlab-ci全稱是gitlab continuous integration的意思,也就是持續(xù)集成。中心思想是當(dāng)每一次push到gitlab的時候,都會觸發(fā)一次腳本執(zhí)行,然后腳本的內(nèi)容包括了測試,編譯,部署等一系列自定義的內(nèi)容。
原理

自動部署涉及了若干個角色,主要介紹如下

  • GitLab-CI
    這個是一套配合GitLab使用的持續(xù)集成系統(tǒng),是GitLab自帶的,也就是你裝GitLab的那臺服務(wù)器上就帶有的。無需多考慮。.gitlab-ci.yml的腳本解析就由它來負(fù)責(zé)。

  • GitLab-Runner
    這個是腳本執(zhí)行的承載者,.gitlab-ci.yml的script部分的運(yùn)行就是由runner來負(fù)責(zé)的。GitLab-CI瀏覽過項(xiàng)目里的.gitlab-ci.yml文件之后,根據(jù)里面的規(guī)則,分配到各個Runner來運(yùn)行相應(yīng)的腳本script。這些腳本有的是測試項(xiàng)目用的,有的是部署用的。

  • .gitlab-ci.yml
    這個是在git項(xiàng)目的根目錄下的一個文件,記錄了一系列的階段和執(zhí)行規(guī)則。GitLab-CI在push后會解析它,根據(jù)里面的內(nèi)容調(diào)用runner來運(yùn)行。

  • Pipeline
    一次 Pipeline 其實(shí)相當(dāng)于一次構(gòu)建任務(wù),里面可以包含多個流程,如安裝依賴、運(yùn)行測試、編譯、部署測試服務(wù)器、部署生產(chǎn)服務(wù)器等流程。

  • Stages
    Stages 表示構(gòu)建階段,說白了就是上面提到的流程。我們可以在一次 Pipeline 中定義多個 Stages,這些 Stages 會有以下特點(diǎn):

所有 Stages 會按照順序運(yùn)行,即當(dāng)一個 Stage 完成后,下一個 Stage 才會開始
只有當(dāng)所有 Stages 完成后,該構(gòu)建任務(wù) (Pipeline) 才會成功
如果任何一個 Stage 失敗,那么后面的 Stages 不會執(zhí)行,該構(gòu)建任務(wù) (Pipeline) 失敗

  • Jobs
    Jobs 表示構(gòu)建工作,表示某個 Stage 里面執(zhí)行的工作。我們可以在 Stages 里面定義多個 Jobs,這些 Jobs 會有以下特點(diǎn):

相同 Stage 中的 Jobs 會并行執(zhí)行
相同 Stage 中的 Jobs 都執(zhí)行成功時,該 Stage 才會成功
如果任何一個 Job 失敗,那么該 Stage 失敗,即該構(gòu)建任務(wù) (Pipeline) 失敗

在centOS上安裝gitlab-ci-multi-runner

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
yum install gitlab-ci-multi-runner

注冊runner

gitlab-runner register

有兩種runner,一種是shared runner,可供全局使用,一種是specific runner,為每個項(xiàng)目專用。兩只的區(qū)別是token不同,shared runner使用admin/runner最頂上的token,specific runner是每個項(xiàng)目里的token。
如果是針對不同類型的項(xiàng)目,可以建一個shared runner,然后指定哪些項(xiàng)目可以使用這個runner。

vi /etc/gitlab-runner/config.toml

concurrent = 1
check_interval = 0

[[runners]]
  name = "golang-shared-runner"
  url = "http://192.168.100.18:88/ci"
  token = "3e09d7b93eaba18a230f284a6f7055"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    allowed_images = ["192.168.100.18/*:*"]
    image = "golang:latest"
    privileged = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
  [runners.cache]

一般來說,推薦使用docker方式來打包應(yīng)用
image這一行的意思是缺省容器,即使沒在
.gitlab-ci.yml里配置
為了使用私有倉庫
在里面添加allowed_images

clone repos源代碼時無法解析主機(jī)

在runner配置文件里加上解析才能去clone repos源代碼
extra_hosts=["gitlab.cacec.com.cn:192.168.100.32"]

常用命令

   exec     execute a build locally
   run      run multi runner service
   register register a new runner
   install  install service
   uninstall    uninstall service
   start    start service
   stop     stop service
   restart  restart service
   status   get status of a service
   run-single   start single runner
   unregister   unregister specific runner
   verify   verify all registered runners --delete 刪除無效的runner
   archive  find and archive files (internal)
   artifacts    upload build artifacts (internal)
   extract  extract files from an archive (internal)
   help, h  Shows a list of commands or help for one command

參考資料:Continuous Delivery of a Spring Boot application with GitLab CI and Kubernetes

配置docker倉庫

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • git Git是一個開源的分布式版本控制系統(tǒng),可以有效、高速的處理從很小到非常大的項(xiàng)目版本管理。Git 是 Lin...
    劉曉洋閱讀 1,768評論 0 7
  • 簡介 gitlab-ci全稱是gitlab continuous integration的意思,也就是持續(xù)集成。中...
    st0rm23閱讀 67,170評論 9 46
  • 最近開了小密圈,會在一年里不斷的分享。分享的內(nèi)容如下: 內(nèi)容營銷技術(shù)與方法 網(wǎng)絡(luò)推廣費(fèi)用每年上漲,拉新用戶、留住老...
    gordonchoi閱讀 400評論 0 0
  • 框架視圖 關(guān)鍵代碼 Bird FollowBird GameMannger GameMenu MoveTrigge...
    TonyWan_AI閱讀 1,071評論 0 5
  • 君知否?一別之后,相隔千里,兩地相思,使君子獨(dú)身在外,遠(yuǎn)自天南海北,穿山越嶺,奴心相懸,莫要穿心苦戀,郎豈不該當(dāng)歸...
    古典悠夢閱讀 1,558評論 23 7

友情鏈接更多精彩內(nèi)容