定義可引用的 CI/CD 配置檔案中的輸入引數

极狐GitLab發表於2024-09-20

極狐GitLab 是一個一體化的 DevOps 平臺,內建 CI/CD 功能。在極狐GitLab 15.11 中,我們引入了一項令人興奮的新功能,允許使用者為可包含的配置檔案定義輸入引數。 透過在 CI 模板中使用輸入引數的功能,您可以將模板中的任何關鍵字替換為引數,包括階段、指令碼或作業名稱。 例如,您可以向所有作業新增字首,以更好地將它們與您要包含配置的流水線隔離。

這些輸入引數可以針對每個配置檔案宣告為強制引數或可選引數,從而減少對全域性變數的需求,並使 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 模板並在流水線配置中使用它們。 透過使用帶有輸入的模板,您可以簡化流水線配置並使模板更加模組化和可重用。

本文由部落格群發一文多發等運營工具平臺 OpenWrite 釋出

相關文章