使用gitlab實現(xiàn)CI/CD流程分為兩步:
- 確保你有一個runner去運(yùn)行你的job
- 在倉庫根目錄,創(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
依次需要輸入:
- 上圖中2對用的url
- 上圖中3對用的token
- runner的描述
- runner的標(biāo)簽tag,用于標(biāo)識runnner
- 以哪種方式運(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/