1.4. 构建的参数值定义
您可以在 Build
CR 中为构建策略参数指定值。通过指定参数值,您可以控制构建策略的工作方式。您还可以覆盖 BuildRun
资源中的值。
对于所有参数,您必须直接指定值,也可以使用配置映射或 secret 中的引用键指定值。
在构建策略步骤中使用该参数限制了配置映射和 secret 的使用。只有命令、参数或环境变量中使用了参数时,才能使用配置映射和 secret。
在 Build
CR 中使用 paramValues
字段时,请避免以下情况:
-
指定与
BuildStrategy
CR 中定义的spec.parameters
之一不匹配的spec.paramValues
名称。 -
指定与 Shipwright 保留参数冲突的
spec.paramValues
名称。这些参数包括BUILDER_IMAGE
、CONTEXT_DIR
以及从shp-
开始的任何名称。
另外,在 Build
CR 中定义 paramValues
字段前,请确保了解您的策略的内容。
1.4.1. 定义参数值的配置示例
以下示例演示了如何在构建策略中定义参数,并使用 Build
CR 为这些参数分配值。您还可以为 Build
CR 中的 type 数组
的参数分配一个值。
示例:在 ClusterBuildStrategy
CR 中定义参数
以下示例显示了定义几个参数的 ClusterBuildStrategy
CR:
apiVersion: shipwright.io/v1beta1 kind: ClusterBuildStrategy metadata: name: buildah spec: parameters: - name: build-args description: "The values for the args in the Dockerfile. Values must be in the format KEY=VALUE." type: array defaults: [] # ... - name: storage-driver description: "The storage driver to use, such as 'overlay' or 'vfs'." type: string default: "vfs" # ... steps: # ...
示例:将值分配给 Build
CR 中的参数
以上 ClusterBuildStrategy
CR 定义了一个 storage-driver
参数,您可以在 Build
CR 中指定 storage-driver
参数的值,如下例所示:
apiVersion: shipwright.io/v1beta1 kind: Build metadata: name: <your_build> namespace: <your_namespace> spec: paramValues: - name: storage-driver value: "overlay" strategy: name: buildah kind: ClusterBuildStrategy output: # ...
示例:创建 ConfigMap
CR 以集中控制参数
如果要将 storage-driver
参数用于多个构建并集中控制其使用,您可以创建一个 ConfigMap
CR,如下例所示:
apiVersion: v1 kind: ConfigMap metadata: name: buildah-configuration namespace: <your_namespace> data: storage-driver: overlay
您可以使用创建的 ConfigMap
CR 作为 Build
CR 中的参数值,如下例所示:
apiVersion: shipwright.io/v1beta1 kind: Build metadata: name: <your_build> namespace: <your_namespace> spec: paramValues: - name: storage-driver configMapValue: name: buildah-configuration key: storage-driver strategy: name: buildah kind: ClusterBuildStrategy output: # ...
示例:将值分配给 Build
CR 中的 type 数组
的参数
您可以为类型 数组
的参数分配值。如果使用 buildah
策略,您可以定义一个 registry-search
参数来在特定 registry 中搜索镜像。以下示例演示了如何为 registry-search
数组参数分配值:
apiVersion: shipwright.io/v1beta1 kind: Build metadata: name: <your_build> namespace: <your_namespace> spec: paramValues: - name: storage-driver configMapValue: name: buildah-configuration key: storage-driver - name: registries-search values: - value: registry.redhat.io strategy: name: buildah kind: ClusterBuildStrategy output: # ...
示例:在构建 CR 中引用
secret
您可以引用 registry-block
数组参数的 secret,如下例所示:
apiVersion: shipwright.io/v1beta1
kind: Build
metadata:
name: <your_build>
namespace: <your_namespace>
spec:
paramValues:
- name: storage-driver
configMapValue:
name: buildah-configuration
key: storage-driver
- name: registries-block
values:
- secretValue: 1
name: registry-configuration
key: reg-blocked
strategy:
name: buildah
kind: ClusterBuildStrategy
output:
# ...
- 1
- 该值引用一个 secret。