上次我們講解了 CI/CD 的相依性,也講解了 stages 工作階段的運作,今天我們來了解 only 的作用,可以幫助我們做甚麼
only 可以指定那些工作,只在哪個分支名運作,假設今天開了一個新分支,名子叫 feature/add_test 這樣子,接著 CI/CD 有定義四個工作,然後四隻分支有指定 only 是在當 develop 這支分支有 push 時才會觸發 CI/CD,如果是 feature/add_test 這支分支 push 上去,是不會觸發 CI/CD 工作的。接下來我們來做一個練習。
要定義 only 只要把分支名稱定義上去就好,可以定義多個分支名稱。以下是範例參閱
run-unit-test:
stage: testing
before_script:
- echo '安裝套件'
script:
- echo '執行單元測試'
after_script:
- echo '刪除不必要資源'
only:
- main
- develop
首先我們先將上次練習 CI/CD 的專案打開,然後我們先開一個 develop 分支 push 到 gitlab。
接著我們定義下面工作,我們來看有甚麼差別。
stages:
- testing
- build
- deploy
test-build:
stage: testing
script:
- echo '測試打包'
only:
- main
- develop
build-docker-image:
stage: build
script:
- echo '打包 docker image'
only:
- main
- develop
deploy-to-development:
stage: deploy
script:
- echo '佈署伺服器 develop'
only:
- develop
deploy-to-production:
stage: deploy
script:
- echo '佈署伺服器 production'
only:
- main
接著 push 到 develop 來看一下 CI/CD 運作,裡面有三個工作,分別是 “test-build”、”build-docker-image” 及 “deploy-to-development”
接著 push 到 develop 來看一下 CI/CD 運作,裡面有三個工作,分別是 “test-build”、”build-docker-image” 及 “deploy-to-production”
我們後續會教一整套的佈署流程,讓各位知道業界在自動化佈署,大概會有哪些流程