4.5. 自定义参数扩展
您可以使用 params
字段使用 Pipelines as Code 在 PipelineRun
资源中扩展自定义参数。您可以为 Repository
自定义资源 (CR) 模板中的 custom 参数指定一个值。指定的值替换管道运行中的 custom 参数。
在以下情况下可以使用自定义参数:
- 定义 URL 参数,如因推送或拉取请求而异的 registry URL。
-
要定义一个参数,如管理员可在不需要 Git 仓库中执行
PipelineRun
的更改的情况下管理的帐户 UUID。
只有在无法使用 Tekton PipelineRun
参数时,才使用自定义参数扩展功能,因为 Tekton 参数在 Pipeline
资源中定义,并在 Git 仓库内自定义它。但是,自定义参数会被定义和自定义 Repository
CR 所在的位置。因此,您无法从单一点管理 CI/CD 管道。
以下示例显示了 Repository
CR 中名为 company
的自定义参数:
... spec: params: - name: company value: "ABC Company" ...
ABC Company
取代了您的管道运行和远程获取任务中的参数名称 company
。
您还可以从 Kubernetes secret 检索自定义参数的值,如下例所示:
... spec: params: - name: company secretRef: name: my-secret key: companyname ...
Pipelines as Code 解析并使用以下自定义参数:
-
如果您定义了一个
value
和一个secretRef
,Pipelines as Code 将使用value
。 -
如果您在
params
部分中没有name
,Pipelines as Code 不会解析参数。 -
如果您有多个带有相同
名称
的参数
,Pipelines as Code 将使用最后一个参数。
您还可以定义自定义参数,仅在指定条件与 CEL 过滤器匹配时才使用其扩展。以下示例显示了当触发拉取请求事件时,适用于名为 company
的自定义参数的 CEL 过滤器:
... spec: params: - name: company value: "ABC Company" filter: - name: event value: | pac.event_type == "pull_request" ...
当您有多个具有相同名称和不同过滤器的参数时,Pipelines as Code 会使用与过滤器匹配的第一个参数。因此,Pipelines as Code 允许您根据不同的事件类型扩展参数。例如,您可以组合一个推送和拉取请求事件。