您好,登錄后才能下訂單哦!
gitlab-ci全稱是gitlab continuous integration的意思,也就是持續(xù)集成。中心思想是當(dāng)每一次push到gitlab的時(shí)候,都會(huì)觸發(fā)一次腳本執(zhí)行,然后腳本的內(nèi)容包括了測(cè)試,編譯,部署等一系列自定義的內(nèi)容。
GitLab-CI
這個(gè)是一套配合GitLab使用的持續(xù)集成系統(tǒng),是GitLab自帶的,也就是你裝GitLab的那臺(tái)服務(wù)器上就帶有的。.gitlab-ci.yml的腳本解析就由它來(lái)負(fù)責(zé)。
GitLab-Runner
這個(gè)是腳本執(zhí)行的承載者,.gitlab-ci.yml的script部分的運(yùn)行就是由runner來(lái)負(fù)責(zé)的。GitLab-CI瀏覽過(guò)項(xiàng)目里的.gitlab-ci.yml文件之后,根據(jù)里面的規(guī)則,分配到各個(gè)Runner來(lái)運(yùn)行相應(yīng)的腳本script。這些腳本有的是測(cè)試項(xiàng)目用的,有的是部署用的。
.gitlab-ci.yml
這個(gè)是在git項(xiàng)目的根目錄下的一個(gè)文件,記錄了一系列的階段和執(zhí)行規(guī)則。GitLab-CI在push后會(huì)解析它,根據(jù)里面的內(nèi)容調(diào)用runner來(lái)運(yùn)行。
Pipeline
一次 Pipeline 其實(shí)相當(dāng)于一次構(gòu)建任務(wù),里面可以包含多個(gè)流程,如安裝依賴、運(yùn)行測(cè)試、編譯、部署測(cè)試服務(wù)器、部署生產(chǎn)服務(wù)器等流程。
Stages
Stages 表示構(gòu)建階段,說(shuō)白了就是上面提到的流程。我們可以在一次 Pipeline 中定義多個(gè) Stages,這些 Stages 會(huì)有以下特點(diǎn):
所有 Stages 會(huì)按照順序運(yùn)行,即當(dāng)一個(gè) Stage 完成后,下一個(gè) Stage 才會(huì)開(kāi)始
只有當(dāng)所有 Stages 完成后,該構(gòu)建任務(wù) (Pipeline) 才會(huì)成功
如果任何一個(gè) Stage 失敗,那么后面的 Stages 不會(huì)執(zhí)行,該構(gòu)建任務(wù) (Pipeline) 失敗
Jobs
Jobs 表示構(gòu)建工作,表示某個(gè) Stage 里面執(zhí)行的工作。我們可以在 Stages 里面定義多個(gè) Jobs,這些 Jobs 會(huì)有以下特點(diǎn):
相同 Stage 中的 Jobs 會(huì)并行執(zhí)行
相同 Stage 中的 Jobs 都執(zhí)行成功時(shí),該 Stage 才會(huì)成功
如果任何一個(gè) Job 失敗,那么該 Stage 失敗,即該構(gòu)建任務(wù) (Pipeline) 失敗
發(fā)布流程圖如下:
添加gitlab官方庫(kù)
curl -L?https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh?| sudo bash
安裝最新版本的gitlab-runner
yum -y install gitlab-runner
gitlab-runner list 查看各個(gè) Runner 的狀態(tài)
gitlab-runner stop 停止服務(wù)
gitlab-runner start 啟動(dòng)服務(wù)
gitlab-runner restart 重啟服務(wù)
注冊(cè)之前需要先獲取到注冊(cè)令牌
share runner令牌位置為:Admin Area -> Runners設(shè)置
開(kāi)始注冊(cè)
gitlab-runner? register
[root@localhost ~]# gitlab-runner register
Runtime platform????????????????????????????????????arch=amd64 os=linux pid=1784 revision=577f813d version=12.5.0
Running in system-mode.
##輸入你的Gitlab URL
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://192.168.60.133/
##輸入注冊(cè)令牌來(lái)注冊(cè)Runner
Please enter the gitlab-ci token for this runner:
SeyTs9_4mKEsYjmfPr4e
##輸入Runner說(shuō)明
Please enter the gitlab-ci description for this runner:
[localhost]: test
##輸入Runner的tags
Please enter the gitlab-ci tags for this runner (comma separated):
test
Registering runner... succeeded?????????????????????runner=SeyTs9_4
##輸入Runner的執(zhí)行方式
Please enter the executor: parallels, ssh, virtualbox, docker+machine, custom, docker, docker-ssh, shell, docker-ssh+machine, kubernetes:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
配置文件保存在/etc/gitlab-runner/config.toml
配置項(xiàng)類似下面,可能需要手動(dòng)添加builds_dir和cache_dir這兩個(gè)變量,再重啟服務(wù)
[[runners]]
name = "216XX"
url = "https://git.XX.com/"
token = "xxxxxx"
executor = "shell"
builds_dir = "/home/gitlab-runner/builds"
cache_dir = "/home/gitlab-runner/cache"
[runners.cache]
如果要同時(shí)處理多個(gè) build 的話,需要進(jìn)?/etc/gitlab-runner/config.toml?文件配置?concurrent?它的值為 >1 的值
注銷runner:
gitlab-runner? unregister --url https://asdf.com/ci --token 43f334f34f34f34f4
或者
gitlab-runner? unregister --name NAME? ? ?刪除特定的Runner
下面我們?nèi)バ枰l(fā)布的項(xiàng)目里面的根目錄編寫.gitlab-ci.yml腳本進(jìn)行自動(dòng)發(fā)布
.gitlab.-ci.yml文件必須在項(xiàng)目的根目錄進(jìn)行創(chuàng)建:
stages:
- build
- test
- deploy
#打包階段
? build-job:
? stage: build
? tags:
? - report
? script:
? - mvn clean package -Dmaven.test.skip=true -Pprod
? only:
? - master
#測(cè)試階段
test-job:
? stage: test
? tags:
? - report
? script:
? - docker run -d -v $(pwd)/target:/opt/tomcat-8.5/webapps?-p 8099:8080 --name=xxxx? public/tomcat-8.5
? only:
? - master
#手動(dòng)部署階段
deploy-job:
? stage: deploy
? tags:
? - report
? only:
? - master
??environment:
? name: $report_v
? url: $report_url
? script:
? - echo $(whoami)
? - ssh -p 222 $report_host "/test/apache-tomcat/bin/shutdown.sh"
? - ssh -p 222 $report_host "rm -rf /test/tomcat/webapps/*"
? - scp -P 222 target/report.war $report_host:/test/tomcat/webapps
? - ssh -p 222 $report_host "/test/tomcat/bin/startup.sh"
? when: manual
配置.gitlab-ci.yml文件中用到的變量信息:CI / CD Settings/Variables,也可以直接在.gitlab.-ci.yml文件中指定,這里是為了安全考慮配置在了外面。
在項(xiàng)目的根目錄寫好.gitlab.-ci.yml腳本后就會(huì)自動(dòng)觸發(fā)構(gòu)建部署
我們?cè)趈obs里面可以看到執(zhí)行的狀態(tài),是否執(zhí)行成功或者報(bào)錯(cuò)。
需要在手動(dòng)執(zhí)行的階段添加參數(shù)
when:?manual
這里可以看到build_job階段任務(wù)已經(jīng)執(zhí)行成功,test_job階段任務(wù)等待手動(dòng)執(zhí)行部署。
點(diǎn)擊test_job狀態(tài)可以查看到執(zhí)行過(guò)程;如果有報(bào)錯(cuò),這里也可以顯示報(bào)錯(cuò)信息。
接下來(lái)我們手動(dòng)執(zhí)行部署test_job階段任務(wù)。
執(zhí)行后刷新下,就可以看到已經(jīng)執(zhí)行成功了。
上面我們?cè)?gitlab-ci.yml中配置了回滾和手動(dòng)執(zhí)行部署任務(wù);接下來(lái)我們看看回滾。
在deploy的任務(wù)時(shí),添加參數(shù)如下:
environment:
? name:?lims3_v
我們可以看到這里有我們自定義的版本,點(diǎn)進(jìn)去可以看到之前的歷史記錄。
點(diǎn)擊后面的回滾按鈕即可進(jìn)行回滾。
Q&A:
報(bào)錯(cuò)如下:
圖1:
原因是git版本太低,升級(jí)git版本到2.12之后版本即可。
圖2:
解決方法:
缺少git組件導(dǎo)致,可以重新編譯安裝git
圖3:
是用戶權(quán)限問(wèn)題:
解決方法:chown -R gitlab-runner:gitlab-runner??/home/gitlab-runner
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。