1.4. 构建的参数值定义
您可以在 Build CR 中为构建策略参数指定值。通过指定参数值,您可以控制构建策略的工作方式。您还可以覆盖 BuildRun 资源中的值。
对于所有参数,您必须直接指定值,也可以使用配置映射或 secret 中的引用键指定值。
在构建策略步骤中使用该参数限制了配置映射和 secret 的使用。只有命令、参数或环境变量中使用了参数时,才能使用配置映射和 secret。
在 Build CR 中使用 paramValues 字段时,请避免以下情况:
-
指定与
BuildStrategyCR 中定义的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:
name: registry-configuration
key: reg-blocked
strategy:
name: buildah
kind: ClusterBuildStrategy
output:
# ...
- 1
- 该值引用一个 secret。