關於linux搭建git-runner,實現ci/cd自動部署
整理最近搭建gitlab的ci/cd流程,方便自己以後使用,本文只記錄服務器端,關於gitlab服務器搭建,以及windows端runner實現會在其他博客中說明,通俗易懂部分不做說明
將可能遇到的問題寫在前面
1.runner部署完成,提交代碼.CI/CD
流水中出現相應的任務,但一直在執行中(卡在pedding狀態),這個問題遇到兩種情況
(1)在流水任務中顯示pendding狀態,並且有提示stuck,點進去後顯示沒有該項目指定的tag存在,請,檢查你的gitlab-ci.yml配置中指定執行該任務的的runnner與註冊runner名稱是否一致
(2)沒有任何提示,只是一直顯示pendding狀態,刪掉runner重新註冊,問題解決
2.執行失敗
查看是否已將文件所有者改爲gitlab-runner
準備工作
1.從倉庫中把項目拉下來
2.在gitlab創建一個runner用戶
3.在代碼中寫好.gitlab-ci.yml中配置
.gitlab-ci.yml簡要說明
以下爲master分支和test分支分別對應正式和測試環境,當更新不同分支時,根據tag觸發不同的runner實現相應服務器的代碼更新
stages:
- build
job1:
stage: build
tags:
- master //指定由哪個runner運行
script:
# 打開到項目目錄
- cd /www/wwwroot/yyy
#更新對應分支代碼
- git pull origin master
only:
# 只有master分支才執行
- master
job2:
stage: build
tags:
- test
script:
# 打開到項目目錄
- cd /www/wwwroot/xxx
- git pull origin test
only:
# 只有test分支才執行測試
- test
1.線上環境安裝git
yum -y install git
2.安裝runner
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
yum install gitlab-ci-multi-runner
3.註冊runner
gitlab-ci-multi-runner register
在註冊是需要填寫一些必要信息,信息如下
1.項目地址
2.項目token
3.runner的描述(本人作爲備註來使用一般記錄xx服務器yy項目zz環境)
4.runner標籤(在只有一個環境時不需要在意此處,當有多個環境a,b,c時每個環境需要有一個tag標籤,用於當某個分支更新時去執行哪個runner,下面會做簡單說明)
5.是否運行在沒有tag的build上面,根據情況選擇true或false
6.是否鎖定runner到當前項目(這裏我沒用感受過直接的效果直接選擇true)
7.選擇執行器,有很多種選擇,根據具體情況,我在linux上直接部署的選擇shell,在windows選擇powershell
4.查看runner狀態,並運行
gitlab-ci-multi-runner verify #查看狀態
gitlab-ci-multi-runner run #運行runner
5.修改文件所有者
chown -hR gitlab-runner:gitlab-runner /yyy/xxx
6.切換到gitlab-runner用戶
su gitlab-runner
7.配置git
git config --global user.email "[email protected]"
git config --global user.name "gitlab-runner"
8.生成ssh
1 mkdir ~/.ssh
2 cd ~/.ssh
3 ssh-keygen
4 cd /home/gitlab-runner/.ssh/
5 cat id_rsa.pub
獲取gitlab-runner的ssh並更新到gitlab服務器中
此時配置已完成,提交本地代碼,在gitlab中查看ci/cd流水查看執行情況,測試功能是否實現即可