長話短說,今天分享我爲先後端分離項目
搭建Gitlab CI/CD流程的一些額外經驗。前端
Gitlab-ci是Gitlab提供的CI/CD特性,結合Gitlab簡單友好的配置界面,能愉悅的在Gitlab界面查看管道執行流程,並天然流暢的推進敏捷開發流程。
Gitlab-CI/CD的核心是搭建Gitlab Runner、編寫.gitlab-ci.yaml文件。
詳細示例請參考:Gitlab CI/CD+ASP.NETCore.node
本次先後端兩個項目使用同一個Gitlab Runner(shell模式),前端項目的gitlab-ci.yaml構建Job如圖:
git
單個Gitlab Runner可爲多個項目提供構建服務,shell
gitlab-Runner register
命令只能接受一個註冊token,當時爲支持多個項目,花了很多冤枉心思倒騰Gitlab Runner.npm
你能夠爲註冊的項目解鎖Runner,這樣Girlab Runner就能夠爲其餘項目提供構建:json
使用Runner緩存加快前端構建過程
你們都知道npm_module被前端開發者詬病爲毒瘤, 而Gitlab runner執行每次構建job以前都會清場,pull/fetch指定的代碼再執行job, 這就致使每次build
job會耗時好久(要拉取毒瘤)。後端
#!/bin/bash cd packages/event-analysis yarn config set registry http://registry.npm.gridsum.com && yarn --prefer-offline --frozen-lockfile npm run build
以上是build
任務的腳本frontend.sh,總耗時3m33s,其中yarn
命令拉取npm_modules耗時172.52s
緩存
gitlab runner支持緩存
在.gitlab-ci.yaml 文件中定義cache指令
:
cache
被用來在job之間緩存文件,更強大的是能夠定義文件依賴緩存:bash
build: stage: build cache: key: files: - packages/event-analysis/package.json paths: - node_modules script: - ./frontend.sh tags: - my-tag
緩存key是yarn
命令要用到的package.json,緩存內容是npm_modules;
只要這個package.json文件未變動,後續任務就會使用緩存的npm_modules,而不用重建npm_modules依賴。前後端分離
使用runner緩存
優化後build
任務總耗時1m18s,其中yarn
命令耗時22.83s:
以上針對Gitlab-CI的使用經驗點到爲止,足夠應對我當前項目,更多請關注:
Devops的圈子很大,上面的Gitlab-ci也只是點到爲止,應付我當前的先後端分離項目.. 歡迎你們來捶我。