1 GitLab CI/CD介紹
-
GitLab CI/CD 是 GitLab 中集成的一套用于軟件開發的持續集成(Continuous Integration)、持續交付(Continuous Delivery)和持續部署(Continuous Deployment)工具。這套系統允許開發團隊自動化軟件交付流程,從代碼變更的檢測、構建、測試到最終部署到生產環境的整個過程。
-
持續集成(CI)
- 每次代碼推送至版本控制系統(如GitLab倉庫),系統自動進行構建和測試。這確保了代碼變更能夠快速集成到主分支,同時發現并修復集成錯誤。
-
持續交付(CD)
- 在持續集成的基礎上,進一步自動化將已驗證的代碼變更交付到一個預生產或生產準備就緒的環境中。這個階段可能包括更復雜的測試套件、性能測試等,確保軟件隨時可以部署到生產環境,但實際部署可能需要人工審批。
-
持續部署(CD)
- 在持續交付的基礎上,將交付過程完全自動化,無需人工干預即可將通過所有測試的代碼直接部署到生產環境。這意味著每次代碼變更經過測試后都能快速安全地到達用戶手中。
2 GitLab CI/CD 與 GitLab Runner
-
GitLab CI/CD 是一套集成在GitLab平臺中的服務,負責管理軟件開發生命周期中的構建、測試和部署等流程。它通過讀取項目中的 .gitlab-ci.yml 配置文件來定義各種任務(Jobs)和流程(Pipelines),從而實現持續集成和持續部署的目標。
-
GitLab Runner 則是實現這些CI/CD流程的實際工作者或執行引擎。它是單獨部署的一個程序,可以安裝在不同的操作系統(如Linux、macOS、Windows)上,并與GitLab實例進行注冊和綁定。一旦有新的提交觸發了GitLab CI/CD流程,GitLab會調度已注冊的Runner來執行.gitlab-ci.yml中定義的任務。
-
簡單來說,GitLab CI/CD是計劃者和協調者,負責定義何時以及如何執行任務,而GitLab Runner則是具體執行這些任務的實體。Runner可以是共享的(服務于多個項目)或者專屬的(僅為單一項目服務),并且可以根據項目需求配置不同的執行環境(例如使用Docker容器來隔離構建環境)。
3 GitLab Runner
- 官網介紹
3.1 安裝
- 以Centos為例
- gitlab-runner安裝包下載,在Package欄搜索gitlab-runner,可以下載這個版本 el/7/x86_64/gitlab-runner-16.6.0-1.x86_64.rpm
- 安裝命令如下
-
# 安裝sudo rpm -ivh gitlab-runner-16.6.0-1.x86_64.rpm # 查看是否安裝成功gitlab-runner -h
3.2 注冊
- 注冊前需要先從gitlab服務器獲取token。
- 在主頁面的Projects中找到 Configure GitLab
- 找到CI/CD中的Runners
- 找到token保存下來
- 注冊
-
# 注冊runnersudo gitlab-runner register
- 注冊過程中需要填入一些信息,Token就是上面復制的那個,具體如下
- 注冊完刷新gitlab頁面,可以看到有一個Runner實例。
- 如果找不到這個界面,可以這樣訪問 http://192.168.206.137/admin/runners
-
- 點擊編輯
- 勾選Run untagged jobs,然后保存。
3.3 編寫流水線腳本
- 首先在gitlab中創建一個項目,然后新建一個文件
- 文件名為 .gitlab-ci.yml,腳本內容就寫一個最簡單的測試腳本。
- 腳本內容如下
-
build:stage: buildscript:- echo "start build"test:stage: testscript:- echo "start test"deploy:stage: deployscript: - echo "start deploy"
- 保存提交后會自動觸發CI/CD流程,在Build中找到Pipelines。
- 可以看到步驟全部通過
- 點擊Passed可以看到詳細流程
- 點擊build,就是build的執行過程
- 至此,GitLab-CI/CD 自動化部署的流程就通了。可以把 .gitlab-ci.yml 腳本中的內容修改為實際要執行的命令,這樣每一次提交代碼后,就會自動觸發編譯、測試、發布步驟。
4 項目演示
- 比較簡單的自動化部署流程為:編譯、測試、打包和發布。本項目就主要演示下如何實現自動化的編譯、測試和發布。
- 現在創建一個項目,文件結構如下
- ├── .gitlab-ci.yml
├── main.cpp
├── README.md
└── test.sh
- ├── .gitlab-ci.yml
- .gitlab-ci.yml 內容如下
-
# 編譯build:stage: buildscript:- echo "start build"- g++ main.cpp -o gitlabcicd_test# 指定生成的可執行程序存放目錄為當前目錄artifacts:paths:- gitlabcicd_test# 測試test:stage: testscript:- echo "start test"- chmod 0777 test.sh# 測試- ./test.sh# 發布deploy:stage: deployscript: - echo "start deploy"# 模擬發布流程- cp gitlabcicd_test package1
-
- mian.cpp 中輸出一個打印。
- test.sh 中運行生成的可執行程序。
- 工程寫完后,push到gitlab倉庫中,會自動觸發cicd流程。
- 在項目中找到 Build,點擊Pipelines。
- 可以看到,自動化編譯、測試、發布流程成功了
- 點擊一個進去,在控制臺會有詳細打印
- 進到GitLab Runner服務器對應目錄下,可以看到自動化編譯、測試、發布已經完成。