CI/CD 中的“CI”始終指持續(xù)集成,它屬于開發(fā)人員的自動化流程。成功的 CI 意味著應用代碼的新更改會定期構建、測試并合并到共享存儲庫中。該解決方案可以解決在一次開發(fā)中有太多應用分支,從而導致相互沖突的問題。
CI/CD 中的“CD”指的是持續(xù)交付和/或持續(xù)部署,這些相關概念有時會交叉使用。兩者都事關管道后續(xù)階段的自動化,但它們有時也會單獨使用,用于說明自動化程度。
Hello world
我們通過gitlab.com創(chuàng)建一個空項目用于CI/CD學習

image.png
在根目錄下面添加 .gitlab-ci.yaml
build:
stage: build
script:
- echo 'Hello, World'
這是一個簡單的 "Hello World" 示例,上面的文件我們稱為編排文件,編排文件中job為最小執(zhí)行任務,我們的編排文件中目前只有一個任務
- 第一行的build為該job的名稱
- 第二行表示該job的階段
- 第三行下面的子節(jié)點為該任務的執(zhí)行命令
運行效果

image.png

image.png
多個任務(job)
我們可以通過在.gitlab-ci.yaml添加多個job來實現多任務編排,每個job可以指定不同的image(Docker鏡像)
build:
stage: build
image: image: node:10-alpine
script:
- npm -v
- node -v
- echo 'build done'
test:
stage: test
script:
- echo 'test done'
deploy:
stage: test
script:
- echo 'deploy done'
運行效果

image.png

image.png
簡單應用
我們通過Create React App來創(chuàng)建一個簡單的React工程并對該項目進行CI/CD
$ npx create-react-app test_ci
更新.gitlab-ci.yaml如下
cache:
paths:
- node_modules
build:
image: node:10-alpine
stage: build
script:
- yarn install
- yarn build
artifacts:
paths:
- build
test:
image: node:10-alpine
stage: test
script:
- yarn test
deploy:
stage: deploy
script:
- ls build
上面的文件有兩個新概念cache與artifacts
-
cache是一個跨任務的共享文件和文件夾的方式 -
artifacts是一個能夠被下載的CI/CD附件
效果

image.png
點擊下載后可以將構建后的靜態(tài)資源下載到本地

image.png
我們可以通過serve等命令運行后查看