上面是簡單接受一下gitlab ci的工作原理
GitLab-CI
這個是一套配合GitLab使用的持續集成系統,是GitLab自帶的,也就是你裝GitLab的那台服務器上就帶有的。無需多考慮。.gitlab-ci.yml的腳本解析就由它來負責。
GitLab-Runner
這個是腳本執行的承載者,.gitlab-ci.yml的script部分的運行就是由runner來負責的。GitLab-CI瀏覽過項目里的.gitlab-ci.yml文件之后,根據里面的規則,分配到各個Runner來運行相應的腳本script。這些腳本有的是測試項目用的,有的是部署用的。
.gitlab-ci.yml
這個是在git項目的根目錄下的一個文件,記錄了一系列的階段和執行規則。GitLab-CI在push后會解析它,根據里面的內容調用runner來運行。

1.gitlab安裝教程就不介紹了(公司架設好的).
具體請百度
2.創建上傳你的項目.
具體請百度
3.配置流水線
進入 設置->CI/CD 流水線進行操作
需要設置流水線就需要先添加一個runner.(就是到時候用來構建的遠程機器)
如何設置一個新項目的特定 Runner
- 安裝 GitLab Runner 軟件。 請參閱 GitLab Runner 章節 來安裝
- 在 Runner 安裝時使用下面的鏈接: https://gitlab.xxxxxxx.com:6062/ci
- 在設置時使用下面的注冊授權碼: xxxxxxxxxxxxxz(這個在CI/CD 流水線頁面里面)
- 啟動 runner!
4.編寫.gitlab-ci.yml文件(主要步驟來了)
下面貼一個我的
# This file is a template, and might need editing before it works on your project.
# see https://docs.gitlab.com/ce/ci/yaml/README.html for all available options
# you can delete this line if you're not using Docker
image: busybox:latest
before_script:
- echo "Before script section"
- echo "For example you might run an update here or install a build dependency"
- echo "Or perhaps you might print out some debugging details"
after_script:
- echo "After script section"
- echo "For example you might do some cleanup here"
stages:
- build
- test
- deploy
#構建節點
build_default_job:
stage: build
script:
- echo "Do your build here"
- make clean
- make
- make install
#測試
test1_job:
stage: test
script:
- echo "test1"
#默認上次打包
deploy_default_job:
stage: deploy
script:
- echo "Clear residue file"
- python3 PackageUpload.py
- make clean
#構建失敗后郵件提醒
deploy_failure_job:
stage: deploy
script:
- echo "build break,mail..."
- make clean
when: on_failure
簡單解釋一下上面的內容:
-
stages:描寫的是構造的順序 上面的如果失敗下面的就不會允許(部分設置了when的除外)
-
sage:描述的是job的類型(同樣類型的job是同時運行的配有先后順序)
-
before_script: 是在所有job之前運行的內容.
-
after_script:是在所有job之后運行的內容.
-
when:可以設置每個job在什么情況下運行
設置值 內容 on_success 只有當前一個階段的所有工作成功時才執行工作。這是默認值。 n_failure 僅當前一個階段的至少一個作業發生故障時才執行作業。 always 無論前一階段的工作狀況如何,執行工作。 manual 手動執行作業(在GitLab 8.10中添加)。閱讀 下面的手動操作。
這個文件具體可以看https://segmentfault.com/a/1190000010442764 這篇文章寫得非常的詳細
注意:
關鍵字 | 是否必須 | 描述 |
---|---|---|
image | 否 | 用於docker鏡像,查看docker文檔 |
services | 否 | 用於docker服務,查看docker文檔 |
stages | 否 | 定義構建階段 |
before_script | 否 | 定義在每個job之前運行的命令 |
after_script | 否 | 定義在每個job之后運行的命令 |
variable | 否 | 定義構建變量 |
cache | 否 | 定義一組文件列表,可在后續運行中使用 |