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 會幫我們將線路畫出來。

留言

此網誌的熱門文章

Docker 之如何安裝 Docker 容器

Gitlab CI/CD 什麼是 CI/CD

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