GitLab CI/CD 工作相依性

前言

上次我們了解 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 階段,工作出錯,後面的工作並不會往下執行。

留言

此網誌的熱門文章

Docker 之如何安裝 Docker 容器

Gitlab CI/CD 什麼是 CI/CD

Docker 之建立與使用 Docker Image 清理本地 Image