新聞中心
本文轉(zhuǎn)載自微信公眾號「 小姐姐味道」,作者 小姐姐養(yǎng)的狗。轉(zhuǎn)載本文請聯(lián)系 小姐姐味道公眾號。

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供軹城網(wǎng)站建設(shè)、軹城做網(wǎng)站、軹城網(wǎng)站設(shè)計、軹城網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、軹城企業(yè)網(wǎng)站模板建站服務(wù),10多年軹城做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
“公司的代碼資產(chǎn),要放在公司內(nèi)部。防止一切不可見的敵人,通過腐朽老套的方式,對公司的利益產(chǎn)生非法的侵占?!?/p>
SVN的年代,已經(jīng)一去不復(fù)返,現(xiàn)在都用上了高大上的git。雖然有Gitea、Gogs這樣更加輕量級的git代碼托管平臺,但目前應(yīng)用最廣泛的,還是gitlab。
搭建GitLab過程并沒有想象中的簡單,因為它是Ruby寫的,又是依賴DB,又是依賴Redis,而且有權(quán)限要求。但這東西,也就折騰一次,剩下的就是享受它的功能了。
我們平常的開發(fā)中,不可或缺的有一些持續(xù)集成的需求。比起再部署一個jenkins,使用gitlab的CI功能,更加如絲般柔滑。
1. 一個樣例
gitlab實現(xiàn)ci功能很簡單,直接在倉庫的頂層目錄,創(chuàng)建一個.gitlab-ci.yml文件,就可以了。我們大多數(shù)的應(yīng)用,就配置這樣一個文件就OK了。
下面是一個vuepress項目的ci文件。
- image: xjjdog.cn:5000/node:8.16.2
- pages:
- tags:
- - pages
- cache:
- paths:
- - node_modules/
- script:
- - npm config set registry http://xjjdog.cn:8082/repository/npm-all/
- - npm install
- - npm run docs:build
- artifacts:
- paths:
- - public
- only:
- - master
以上的腳本,將在每次提交代碼到master的時候,自動觸發(fā)執(zhí)行。它將自動編譯node項目,并發(fā)布到該發(fā)布的地方。
在左側(cè)菜單,可以找到相關(guān)的菜單。
點擊進(jìn)入,可以看到執(zhí)行的結(jié)果和操作人等等。碼、包一體,是不是比jenkins更加直觀?好用?
2. yaml文件
所以我們的工作內(nèi)容,就全部集中到y(tǒng)aml文件的編寫上。
你會發(fā)現(xiàn),不論你是使用docker-compose,還是使用k8s,甚至是現(xiàn)在的Gitlab CI,你本質(zhì)上,就是一個YAML工程師。
YAML工程師!是自動化時代先進(jìn)生產(chǎn)力的代表。
我們來瞧一下.gitlab-ci.yml中的關(guān)鍵概念。其實從它身上,我們能夠看到Makefile的一點影子。
- images/services 這個關(guān)鍵字可以使用Docker的鏡像和服務(wù)運行Job
- only only是匹配的意思,比如上面只匹配master分支的提交和merge
- stages 一個stages可以定義多個分段,用于定義一個pipeline的不同流程節(jié)點(job)
- stage 表示一個stages的子項,一般用來給job定一個一個名字。比如,我們上面的pages,就是job的名字
- cache cache用來定義一些需要在任務(wù)之間進(jìn)行緩存的目錄和文件
- script 真正要執(zhí)行的命令,可以是一個shell腳本。如果腳本執(zhí)行不成功,流程就會終止
- before_script,after_script用來定義前置和后置腳本
- variables 自定義構(gòu)建變量
- artifacts 將生成的資源作為pipeline運行成功的附件上傳,并在gitlab交互界面上提供下載。如果你發(fā)布的是一個靜態(tài)目錄,比如vuepress編譯后的結(jié)果,這個是最合適的。
- tags tags是Job的一個標(biāo)記。
3. runner
這個tags是什么意思呢?當(dāng)你第一次使用的時候,可能會因為它的配置錯誤,造成ci無法執(zhí)行。
我們在左側(cè)的菜單里面,找到全局的settings,里面也有一個CI/CD,其中有一個Runners選項,就是用來配置Runner鎖關(guān)聯(lián)的tag的。
也就是說,你需要安裝一個叫做GitLab Runner的東西。它才是我們?nèi)蝿?wù)真正執(zhí)行的節(jié)點。
安裝完畢之后,需要執(zhí)行g(shù)itlab-runner register注冊進(jìn)來。只有你在看到下面字樣的時候,才證明你的tags為pages的任務(wù)能夠執(zhí)行。
從上面的描述中,我們就可以看出來,這個gitlab-runner,是分布式的,我們可是利用空間的機(jī)器,部署多個runner。所以,不用擔(dān)心會對原gitlab服務(wù)器造成壓力。
任務(wù)執(zhí)行時間太長,一直掛著占用資源怎么辦?
可以使用timeout來設(shè)置過期時間。
- JobName:
- script: restart
- timeout: 30m
為什么gitlab可以作為一個比較理想的CI平臺呢?
因為在它之上,有最原始的代碼。有持續(xù)集成工具。有Wiki,甚至想要更高級的Pages,也有。
對于一個git項目來說,可以說你想要的,它都有了。而且所有的變更,都可以在一個普通的.gitlab-ci.yml文件里進(jìn)行變更。可以說gitlab是一個十分鋒利的工具了。
事實上,為了讓操作更加柔滑,我們使用了gitlab的rest api。通過配置相應(yīng)的token,就可以使用Java代碼,控制gitlab的所有行為。
把它集成在自己公司的工具庫里面,感覺是非常棒的。
作者簡介:小姐姐味道 (xjjdog),一個不允許程序員走彎路的公眾號。聚焦基礎(chǔ)架構(gòu)和Linux。十年架構(gòu),日百億流量,與你探討高并發(fā)世界,給你不一樣的味道。我的個人微信xjjdog0,歡迎添加好友,進(jìn)一步交流。
網(wǎng)站名稱:Gitlab就自帶持續(xù)集成工具,而且很好用
路徑分享:http://fisionsoft.com.cn/article/dhoidgh.html


咨詢
建站咨詢
