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。