gitlab CICD 持續(xù)集成方案

本人搭建的效果如下:

GitLab-CI就是一套配合GitLab使用的持續(xù)集成系統(tǒng)(當(dāng)然,還有其它的持續(xù)集成系統(tǒng),同樣可以配合GitLab使用,比如Jenkins)。而且GitLab8.0以后的版本是默認(rèn)集成了GitLab-CI并且默認(rèn)啟用的。.gitlab-ci.yml的腳本解析就由它來負(fù)責(zé)。那么在gitlab上在哪里設(shè)置呢?

打開gitlab網(wǎng)站:

項目-->Setting-->CI/CD-->Runner-->Expand,如下圖:

點擊Expand后如下:



GitLab-Runner


GitLab-Runner是配合GitLab-CI進(jìn)行使用的。一般地,GitLab里面的每一個工程都會定義一個屬于這個工程的軟件集成腳本,用來自動化地完成一些軟件集成工作。當(dāng)這個工程的倉庫代碼發(fā)生變動時,比如有人push了代碼,GitLab就會將這個變動通知GitLab-CI。這時GitLab-CI會找出與這個工程相關(guān)聯(lián)的Runner,并通知這些Runner把代碼更新到本地(服務(wù)器)并執(zhí)行預(yù)定義好的執(zhí)行腳本。

所以,GitLab-Runner就是一個用來執(zhí)行軟件集成腳本的東西。你可以想象一下:Runner就像一個個的工人,而GitLab-CI就是這些工人的一個管理中心,所有工人都要在GitLab-CI里面登記注冊,并且表明自己是為哪個工程服務(wù)的。當(dāng)相應(yīng)的工程發(fā)生變化時,GitLab-CI就會通知相應(yīng)的工人執(zhí)行軟件集成腳本。如下圖:


GitLab-CI與GitLab-Runner關(guān)系示意圖??

Runner可以分布在不同的主機(jī)上,同一個主機(jī)上也可以有多個Runner。

當(dāng)我們注冊完Runner以后就可以通過.gitlab.ci文件去支配runner代替我們執(zhí)行docker鏡像打包,docker鏡像推送,k8s項目管理,執(zhí)行sh腳本.......等等

總之runner可以幫你在你注冊的這臺服務(wù)器上執(zhí)行你想執(zhí)行的操作

Runner類型?

GitLab-Runner可以分類兩種類型:Shared Runner(共享型)和Specific Runner(指定型)。


Shared Runner:這種Runner(工人)是所有工程都能夠用的。只有系統(tǒng)管理員能夠創(chuàng)建Shared Runner,這種Runner通常用來團(tuán)隊寫作使用的。


Specific Runner:這種Runner(工人)只能為指定的工程服務(wù)。擁有該工程訪問權(quán)限的人都能夠為該工程創(chuàng)建Shared Runner。

.gitlab-ci.yml

記錄了一系列的階段和執(zhí)行規(guī)則。GitLab-CI在push后會解析它,根據(jù)里面的內(nèi)容調(diào)用runner來運行。

安裝步驟

$ curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash

$ sudo apt-get install gitlab-runner

只需要以上兩條命令就可以裝好gitlab-runner了

gitlab-runner安裝好以后我們注冊一下就好了

$ gitlab-ci-multi-runner register

引導(dǎo)會讓你輸入gitlab的url,輸入自己的url,例如http://gitlab.example.com/

引導(dǎo)會讓你輸入token,去相應(yīng)的項目下找到token,例如ase12c235qazd32

引導(dǎo)會讓你輸入tag,一個項目可能有多個runner,是根據(jù)tag來區(qū)別runner的,輸入若干個就好了,比如web,hook,deploy\#引導(dǎo)會讓你輸入executor,這個是要用什么方式來執(zhí)行腳本,圖方便輸入shell就好了。

最后兩個引導(dǎo)直接Enter 完事

當(dāng)你注冊號以后刷新頁面就可以看到你剛剛注冊的runner了

編寫.gitlab-ci.yml

在項目根目錄下編寫.gitlab-ci.yml? push之后,gitlab-ci就會自動識別來解析了。

以下是我編寫的CI觸發(fā)流程



以下是我編寫的CI文件

可以發(fā)現(xiàn)我的CI文件中出現(xiàn)了$REGISTRY_USERNAME?$REGISTRY_PASSWORD 這兩個 變量,但是文件中并沒有看到定義


如上圖,我們可以在gitlab的頁面中定義我們需要的環(huán)境變量,即可在我們的CI文件中讀取

CI文件編寫完成,push到你對應(yīng)的項目中,即可看到效果了

至此,本次CI CD的分享到此結(jié)束,有問題大家可以在下面評論,

初出茅廬,大神勿噴,謝謝

runner權(quán)限問題可以參考 :http://www.itdecent.cn/p/0b339821c80b

附上文獻(xiàn):http://www.itdecent.cn/p/39881f224077

最后編輯于
?著作權(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ù)。

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