GitLab CI/CD實踐

使用gitlab實現(xiàn)CI/CD流程分為兩步:

  1. 確保你有一個runner去運(yùn)行你的job
  2. 在倉庫根目錄,創(chuàng)建 .gitlab-ci.yml文件去定義運(yùn)行的流程

gitlab-runner的安裝與使用

在這里插入圖片描述

進(jìn)入gitlab項目,點擊settings,選擇CI/CD, 在右邊的頁面中,點開Runners,進(jìn)入到如下頁面。


在這里插入圖片描述

點擊圖中的1Show Runner installation instruction,里面有安裝步驟。

在這里插入圖片描述

具體安裝步驟

(1)使用命令dpkg --print-architecture 查看服務(wù)器架構(gòu),根據(jù)不同的環(huán)境和架構(gòu)下載安裝包。

在這里插入圖片描述

# Download the binary for your system
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

(2)下載完后,給gitlab-runner執(zhí)行權(quán)限

# Give it permissions to execute
sudo chmod +x /usr/local/bin/gitlab-runner

(3)建一個gitlab-runner用戶,之后使用CI/CD時,都是在這個用戶下進(jìn)行

# Create a GitLab CI user
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

(4)創(chuàng)建好了用戶之后,安裝gitlab-runner

# Install
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner

(5)安裝成功以后,啟動gitlab-runner服務(wù)

# run as service
sudo gitlab-runner start

注冊項目對應(yīng)的runner

在自己的runner服務(wù)器上,輸入如下命令,開始注冊runner

# sudo 必須加,保證和前面一致,否則runner不可用
sudo gitlab-runner register
在這里插入圖片描述

依次需要輸入:

  1. 上圖中2對用的url
  2. 上圖中3對用的token
  3. runner的描述
  4. runner的標(biāo)簽tag,用于標(biāo)識runnner
  5. 以哪種方式運(yùn)行runner
    在這里插入圖片描述

    注冊完畢后可以到gitlab上看下,剛剛注冊的runner是否存在,綠色代表可用。
    在這里插入圖片描述

    另外,可以在目錄/etc/gitlab-runner/config.toml文件中查看runner的配置

創(chuàng)建.gitlab-ci.yml文件

在需要進(jìn)行測試的分支的根目錄創(chuàng)建.gitlab-ci.yml文件,.gitlab-ci.yml文件主要包括以下兩部分內(nèi)容,由YAML語言編寫:

  • 運(yùn)行程序應(yīng)該執(zhí)行的job的結(jié)構(gòu)和順序
  • 當(dāng)遇到特定情況時,應(yīng)做出的怎樣的決定

具體的編寫規(guī)則詳見GitLab CI流水線配置文件.gitlab-ci.yml詳解

一個簡單的例子:

build-job:
  stage: build
  script:
    - echo "Hello, $GITLAB_USER_LOGIN!"

test-job1:
  stage: test
  script:
    - echo "This job tests something"

test-job2:
  stage: test
  script:
    - echo "This job tests something, but takes more time than test-job1."
    - echo "After the echo commands complete, it runs the sleep command for 20 seconds"
    - echo "which simulates a test that runs 20 seconds longer than test-job1"
    - sleep 20

deploy-prod:
  stage: deploy
  script:
    - echo "This job deploys something from the $CI_COMMIT_BRANCH branch."

編寫或修改完后,點擊commit ,測試pipeline就會自動開始??梢暬榭础?br>

在這里插入圖片描述

在這里插入圖片描述

包含三個階段Stages(build,test,deploy),不同的stage之間時串行執(zhí)行。相同的stage之間時并行執(zhí)行(需要修改cong.toml中的concurrent,如下圖)stages個數(shù)和名稱可以自己定義。

在這里插入圖片描述

第二個階段包含兩個job。


在這里插入圖片描述

點擊jobs,可查看運(yùn)行情況


在這里插入圖片描述

遇到的問題

(1) 注冊runner后,runner不可用,呈現(xiàn)灰色
可能權(quán)限沒有處理好,注冊時候的命令應(yīng)該是sudo gitlab-runner start

(2)runner可用,但是在運(yùn)行時出現(xiàn)stuck 標(biāo)簽
https://stackoverflow.com/questions/53370840/this-job-is-stuck-because-the-project-doesnt-have-any-runners-online-assigned

(3)如果安裝有什么問題,可以卸載重裝,卸載的時候出現(xiàn)userdel: user gitlab-runner is currently used by process 1000 ,加上-f 強(qiáng)制刪除

sudo gitlab-runner uninstall
sudo rm -rf /usr/local/bin/gitlab-runner
sudo userdel -f gitlab-runner
sudo rm -rf /home/gitlab-runner/

參考

gitlab runner安裝與使用

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

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

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