2023-11-08|閱讀時間 ‧ 約 25 分鐘

GitLab CI/CD 工作相依性

raw-image

前言

上次我們了解 Pipeline 各自在做什麼是,今天來講解 Gitlab CI/CD 工作相依性,來了解 CI/CD 怎麼依據不同階段,進行工作。

上傳四個工作查看 CI/CD 運作

首先我們先定義我們要做的工作,然後上傳到 GitLab,看結果怎麼樣

run-unit-test:
before_script:
- echo '安裝套件'
script:
- echo '執行單元測試'
after_script:
- echo '刪除不必要資源'

test-build:
script:
- echo '測試打包'

build-docker-image:
script:
- echo '打包 docker image'

deploy-to-production:
script:
- echo '佈署伺服器'

接著上傳至 Gitlab 跑 CI/CD,可以看到 CI/CD 腳本一起處理完成。

再上傳一個故意帶有錯誤的工作

接下來我們上傳故意帶有錯誤的工作,看結過會怎麼樣

run-unit-test:
before_script:
- echo '安裝套件'
script:
- echo '執行單元測試
after_script:
- echo '刪除不必要資源'

test-build:
script:
- echo '測試打包'

build-docker-image:
script:
- echo '打包 docker image'
- alksdjfajslkd;fjalsdj

deploy-to-production:
script:
- echo '佈署伺服器'

這邊可以看到,CI/CD 雖然有錯誤不能運行的工作,但是其他工作還是照長處理

CI/CD 工作處理方式

剛剛看到四個工作一起工作,雖然有一個工作有錯誤,但是其他工作還是照長處理,那是因為Gitlab CI/CD 這四個工作是平行處理,所以當一個工作有錯時,還是會處理其他工作。

那如果我們想要當有一個工作有錯誤時,其他工作就不要處理了,因為其他工作再做下去也沒有意義。那有沒有甚麼方式處理 ?

Gitlab CI/CD 有一個指令叫做 “stages”,他可以去定義我們工作流程階段,而在工作裡面定義 “stage”,宣告這個工作再什麼階段使用,當我們有一個工作有錯時,就不會繼續往後面工作做下去。讓我們來看範例。

stages:

- testing

- build

- deploy

run-unit-test:
stage: testing
before_script:
- echo '安裝套件'
script:
- echo '執行單元測試'
after_script:
- echo '刪除不必要資源'

test-build:
stage: testing
script:
- echo '測試打包'

build-docker-image:
stage: build
script:
- echo '打包 docker image'
- alksdjfajslkd;fjalsdj

deploy-to-production:
stage: deploy
script:
- echo '佈署伺服器'

定義好工作階段,讓我們來上傳到 Gitlab,並查看 CI/CD 工作狀態。

可以看到我們在 build 階段,工作出錯,後面的工作並不會往下執行。

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.