1. 程式人生 > 其它 >在GitLab CI/CD中使用environment對部署環境進行管理

在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