使用GitLabCI持續整合

2021-09-11 13:15:16 字數 2737 閱讀 7661

使用持續整合應該是乙個軟體開發工程師的自覺。 ——沃茲基.索德

#前言

在實際工作中,為了防止當前分支大幅度偏離主幹,開發人員每天都會頻繁地將**整合到主幹。如果不使用持續整合,人工重複進行編譯部署等工作,無疑是低效且易出錯的。所以持續整合的優點顯而易見:

減少人工編譯部署過程中的低階錯誤

縮短開發周期,快速進行版本迭代

隨時可部署

讓開發人員專心coding(高效)

#目錄gitlab8.0之後,gitlab ci就已經整合在gitlab裡了。使用gitlab ci可以說是非常的簡單方便,先看下預覽圖

作者之前也嘗試了jenkins。jenkins作為老牌的持續整合框架,在這麼多年的發展中,積累很多優秀的外掛程式工具,不可否認它具有很多gitlab ci不具備的功能,但是jenkins的使用複雜度跟gitlab ci 相比還是高了不止一點(不信往下看)。而且我覺得jenkins的頁面設計太out。如果你跟我一樣是個初學者,還是建議你從gitlab ci開始嘗試。

##二、一點理論

在實踐之前我們先介紹一些gitlab ci的相關概念。

###pipeline

每次**提交就會觸發一次pipeline。一次pipeline可以看成一次構建任務。構建任務一般會包含:安裝依賴,測試,編譯,部署服務等多個階段。

###stage

stage就是上述構建任務中的各個構建階段。乙個pipeline可以定義多個stage。stage有以下特點:

1.所有的stage按順序執行,前乙個stage完成後,下乙個stage才會開始執行。

2.只有當所有的stage都完成後,該構建任務(pipeline)才會成功。

3.如果乙個stage失敗,那麼下乙個stage不會執行,該構建任務(pipeline)失敗。

###job

job表示構建工作,是每個stage構建階段裡具體執行的工作。跟pipeline與stage的關係類似,stage與job也是一對多的關係,即乙個stage裡可以定義多個job,而job具有以下特點:

1.同乙個 stage 中的 jobs 會並行執行

2.同乙個 stage 中的 jobs 都執行成功時,該 stage 才會成功

3.如果任何乙個 job 失敗,那麼該 stage 失敗,即該構建任務 (pipeline) 失敗

###gitlab runner

在了解了上面幾個主要概念之後,我們對gitlab ci的工作流程應該大致已經清晰了,即下圖:

但是還有乙個疑問就是:誰去統籌做上面一系列的事情呢?就是gitlab runner。

###工作流程

綜合上述理論,要使用gitlab ci,我們首先要在專案的根目錄下新增乙個 .gitlab-ci.yml 檔案,用來定義我們的stages,jobs等一系列具體內容,好讓gitlab runner據此來完成它的工作。然後需要在伺服器(開發或生產環境)上,配置乙個gitlab runner,好讓gitlab runner去統籌持續集中過程中的所有事。

##實踐一下

作者在自己的gitlab上初始化了乙個express專案作為例子,帶大家來實踐一下。

###配置 .gitlab-ci.yml 檔案 configuration of your jobs with .gitlab-ci.yml 這是官方文件。

我簡單配置下demo專案的*.gitlab-ci.yml*檔案:

作如下解釋:gitlab runner 會根據這個檔案內容進行構建,不難看出整個構建工作分為兩個stage(階段),第一階段install_deps:安裝依賴包,而具體的job內容就是執行:npm install。 第二階段:啟動程式。每次**提交,都會觸發這兩個構建工作。新增快取cache是因為每個job執行成功後,runner都會去刪除.gitignore中的檔案。

###安裝gitlab runner

gitlab runner的安裝很簡單。installing-the-runner 官方文件

作者以ubuntu為例:

1、新增gitla官方庫

curl -l | sudo bash

2、安裝runner

sudo apt-get install gitlab-runner

###配置gitlab runner

這裡我們配置乙個specific runner。至於shared runner 和 specific runner的區別,大家可以通過官方文件的介紹,自己去選擇,這裡不贅述了。shared vs specific runners

1、拿到token

在你的專案setting->ci/cd->runners settings下面找到url和token。

2、進行配置

在伺服器上輸入以下命令來配置乙個runner:

sudo gitlab-runner register

然後根據提示把資訊填完。(作者為了簡單方便演示。please enter the executor :選擇的shell。)

更改**並提交,然後在專案的ci/cd-->pipelines選項裡直接可以看到構建狀態:如圖

在上面的實踐中我遇到的一些坑: 1、npm命令找不到: 因為gitlab runner構建的時候是以runner身份操作伺服器的,解決方法是:通過link命令把npm鏈結到 /usr/local/bin/npm。

#總結如果你的**倉庫使用的是gitlab,那麼你好像沒有什麼理由不使用gitlab ci。

使用GitLabCI持續整合

使用持續整合應該是乙個軟體開發工程師的自覺。沃茲基.索德 在實際工作中,為了防止當前分支大幅度偏離主幹,開發人員每天都會頻繁地將 整合到主幹。如果不使用持續整合,人工重複進行編譯部署等工作,無疑是低效且易出錯的。所以持續整合的優點顯而易見 1.減少人工編譯部署過程中的低階錯誤 2.縮短開發周期,快速...

持續整合 git使用

此處僅介紹linux系統的安裝方式 sudo apt get install git安裝後,需要對自己的機器進行身份的認證。git config global user.name your name git config global user.email email example.com 首先將...

持續整合工具FinalBuilder使用心得

流程 介面 使用的工具 專案是直接匯入的delphi專案,在wizard選單下選擇 import rad studio project group 匯入即可。在tools option下面配置各工具的位置,subversion位於d program files tortoisesvn bin win...