極狐GitLab 是一個一體化的 DevOps 平臺,內建 CI/CD 功能。在極狐GitLab 15.11 中,我們引入了一項令人興奮的新功能,允許使用者為可包含的配置檔案定義輸入引數。 透過在 CI 模板中使用輸入引數的功能,您可以將模板中的任何關鍵字替換為引數,包括階段、指令碼或作業名稱。 例如,您可以向所有作業新增字首,以更好地將它們與您要包含配置的流水線隔離。
極狐GitLab 為 GitLab 的中文發行版,中文版本對國內使用者更友好,可以一鍵私有化部署,也可以選擇使用 SaaS,私有化部署詳情可以檢視官網指南。
這些輸入引數可以針對每個配置檔案宣告為強制引數或可選引數,從而減少對全域性變數的需求,並使 CI/CD 模板更加健壯和隔離。 輸入引數的範圍僅限於包含的配置,這意味著它們對流水線的其餘部分沒有影響。 這允許您宣告和強制執行約束,例如透過強制模板輸入。
這一功能開發是 CI/CD 元件目錄長期路線圖的第一個里程碑,這是一項新功能,允許使用者搜尋和重用具有適合其用例的特定引數的單一用途 CI/CD 配置單元。
在這篇技術部落格文章中,我們將提供有關如何使用輸入引數定義 CI/CD 模板以及如何在包含模板時使用它們的分步說明。
步驟1:建立一個模版YAML文件
第一步是建立一個模板 YAML 文件,該文件描述了模板可以使用哪些輸入引數。 模板的第二部分是作業的定義,其中可能包括對使用插值格式 $[[ input-name ]] 的值的引用。 您應該在兩個部分之間使用三條虛線。
下面是一個部署模板.yml 的示例:
spec:
inputs:
website:
environment:
default: test
---
deploy:
stage: deploy
script: echo "deploy $[[ inputs.website ]] to $[[ inputs.environment ]]"
在此模板中,我們定義了兩個輸入引數:網站和環境。 環境引數有預設值。 在內容部分,我們定義了一個插入輸入引數的作業。
步驟 2:將模板包含在 CI 配置中
在主 CI 配置檔案 .gitlab-ci.yml 中,引用模板並使用 input 關鍵字新增輸入引數。
以下是包含帶有輸入引數的deploy-template.yml的示例:
include:
- local: deploy-template.yml
inputs:
website: my-website.example.com
在此示例中,我們在專案中包含了本地模板。 注意:您可以將輸入與其他包含型別一起使用,例如 include:project、include:template、include:remote。
在下面的示例中,我們使用輸入為作業名稱新增字首,並使階段也變得動態。
spec:
inputs:
website:
environment:
default: staging
stage:
default: test
job_prefix:
default: ""
---
"$[[ inputs.job_prefix ]]deploy":
stage: $[[ inputs.stage ]]
script: echo "deploy $[[ inputs.website ]] to $[[ inputs.environment ]]"
然後我們可以將其從 .gitlab-ci.yml 中包含到輸入引數中:
include:
- local: deploy-template.yml
inputs:
stage: deploy
website: http://example.com
environment: production
job_prefix: "my-app-"
就是這樣! 您已成功建立接受輸入的 CI 模板並在流水線配置中使用它們。 透過使用帶有輸入的模板,您可以簡化流水線配置並使模板更加模組化和可重用。