在GitLab CI/CD中使用environment對部署環境進行管理
在GitLab CI/CD中使用environment對部署環境進行管理
每一個應用都在研發階段都會有幾套環境,開發環境,整合環境,測試環境,生產環境。對於不同的環境,CI/CD的處理方式可能有所不同。在GitLab CI/CD中,如果開發者想要快速查詢某一個部署環境的部署歷史,可以在流水線列表中,使用分支名稱,觸發使用者,tag名稱,以及流水線狀態來進行搜尋,如下圖:
但如果開發者想要查詢某一個部署環境的部署歷史,在這種情況下,流水線的搜尋是無法滿足需要的。即使開發團隊規定 特定分支部署特定環境。
environment關鍵詞
解決部署環境管理的問題需要使用GitLab CI/CD關鍵詞environment。使用它,開發者可以將一個作業設定為某一環境的部署作業,同一個環境的部署作業會被收集到一起,執行部署作業,或者停止作業都將觸發一個鉤子。開發者可以自定義執行相關業務邏輯。下圖是一個部署環境的管理頁面( 本文環境為GitLab 14.1)
開發者可以通過UI頁面自行建立 部署環境,也可以在一個作業中定義environment的值
通過UI建立部署環境
點選上圖的 New environment
填寫環境名稱,以及環境的訪問路徑,儲存。
通過作業部署環境
deploy_test_env:
script: echo 'deploy test env'
environment:
name: test
url: https://fizzz.blog.csdn.net/
環境名稱只能包含字母,數字,空格以及這些字元 -,_, /, $, {, }。
同一個環境的作業會被歸納到同一個環境中,通過UI頁面,點選環境名稱即可檢視該環境下已經部署的作業,如下:
URL的作用
定義了 環境URL,開發者可以點選頁面一個按鈕來快捷地訪問到部署環境。
下面是三處可以訪問的按鈕
第一處,environment列表
第二處 environment 詳情
第三處 合併請求時
environment關鍵詞除了name和url兩個配置項外,還有on_stop,auto_stop_in, action,kubernetes, deployment_tier。
下面通過作者的實踐結合官方文件,簡單介紹一下各個配置項的作用
其他配置項
on_stop是用於定義一個在移除環境時觸發的作業,它的值必須是一個同流水線,同環境的作業名稱。表明在通過UI移除部署環境或者自動移除部署環境時 執行配置的作業。
auto_stop_in 配置項用於到期自動移除部署環境,如一天後,一週後
action配置項是用於定義當期作業是部署環境的動作,有三個值,start 預設值),prepare,stop。
start 表明當期作業是建立一個部署環境
prepare 準備部署環境
stop停止部署環境 on_stop選擇的作業必須配置 action: stop。
下面是一個例子大家可以參考一下
# 部署test環境,停止環境時執行clean_test_env作業
deploy_test_env:
script: echo 'deploy test env'
environment:
name: test
url: https://fizzz.blog.csdn.net/
on_stop: clean_test_env
# 部署dev環境,一週後自動停止
deploy_dev_env:
script: echo 'deploy test env'
environment:
name: test
url: https://fizzz.blog.csdn.net/
auto_stop_in: 1 week
# 停止test環境,停止環境的指令碼需自行編寫
clean_test_env:
script: echo 'stop deploy and clean test env'
when: manual
environment:
name: test
action: stop
kubernetes 可以設定部署的Kubernetes叢集名稱空間,前提是當前專案已整合Kubernetes。
deployment_tier 用於設定的部署等級,沒有太多意義。只是用於區分。常用等級有這些 production,staging,testing,development,other