Gitlab CI/CD 之 needs

前言

上次我們講完了 only 操作方式,接下來我們要來講解 needs 操作方式,讓我們的 CI/CD 更加仔細,更加完整。

needs 作用

needs 可以在我們整個 CI/CD 流程,去定義在哪個工作之前做完,才會去做下一個工作,假設今天有三個工作,分別叫 "test-build"、"build-docker-image"、"deploy-to-development",在 build-docker-image 工作指定 needs 在 "test-build" 工作做完時,才會去做 "build-docker-image",另外在 "deploy-to-development" 工作指定 needs 在 "build-docker-image" 做完時,才會去做 "deploy-to-development" 這項工作。

needs 定義規則

在我們的工作定義 needs,然後寫上我們定義的工作名稱,就可完成這定義。

stages:

    - testing

    - build


test-build:

  stage: testing

  script:

    - echo '測試打包'

  only:

    - main

    - develop


build-docker-image:

  stage: build

  needs:

    - test-build

  script:

    - echo '打包 docker image'

  only:

    - main

    - develop

練習時間

接下來我們將上次練習的 CI/CD 練習專案,加上 needs 來看會有什麼變化,以下是我們加上 needs 範例。

stages:

  - testing

  - build

  - deploy


run-unit-test:

  stage: testing

  before_script:

    - echo '安裝套件'

  script:

    - echo '執行單元測試'

  after_script:

    - echo '刪除不必要資源'

  only:

    - main

    - develop


test-build:

  stage: testing

  needs:

    - run-unit-test

  script:

    - echo '測試打包'

  only:

    - main

    - develop


build-docker-image:

  stage: build

  needs:

    - test-build

  script:

    - echo '打包 docker image'

  only:

    - main

    - develop

  

deploy-to-development:

  stage: deploy

  needs:

    - build-docker-image

  script:

    - echo '佈署伺服器 develop'

  only:

    - develop


deploy-to-production:

  stage: deploy

  needs:

    - build-docker-image

  script:

    - echo '佈署伺服器 production'

  only:

    - main

接下來我們 push 上去,上面有四個工作運作完成,但是上面會多一個東西叫做,Group jobs by 這個模組,這兩個模組一個叫 Stage 另一個叫 Job dependencies。Stage 可以看我們有那些工作在運行,有如以下圖示。

Job dependencies 可以看我們先前定義的 needs 有沒有配置正確。可以切換到 Job dependencies 裡面有一個叫 Show dependencies 這個把它打開,可以看到裡面有線路,這就是我們有定義 needs,gitlab 會幫我們將線路畫出來。

留言

此網誌的熱門文章

Gitlab CI/CD 與 Docker 之間關係

yarn 專案版號管理指令