当您在BuildStrategy
或ClusterBuildStrategy
自定义资源 (CR) 中定义环境变量、参数或镜像时,可以使用字符串参数。在构建策略步骤中,您可以使用$(params.your-parameter-name)
语法引用字符串参数。
|
您也可以使用$(params.your-parameter-name) 语法在构建策略步骤中引用系统参数和策略参数。
|
在 pod 中,所有$(params.your-parameter-name)
变量都将被实际字符串替换。但是,当您使用内联脚本在参数中引用字符串参数时,必须注意。例如,为了安全地将参数值传递到使用脚本定义的参数中,您可以选择以下方法之一:
示例:将字符串参数引用到环境变量
您可以将字符串参数传递到环境变量中,而不是直接在脚本中使用它。通过对环境变量使用引号,您可以避免命令注入漏洞。您可以将此方法用于buildah
等策略。以下示例在脚本中使用环境变量来引用字符串参数
apiVersion: shipwright.io/v1beta1
kind: BuildStrategy
metadata:
name: sample-strategy
spec:
parameters:
- name: sample-parameter
description: A sample parameter
type: string
steps:
- name: sample-step
env:
- name: PARAM_SAMPLE_PARAMETER
value: $(params.sample-parameter)
command:
- /bin/bash
args:
- -c
- |
set -euo pipefail
some-tool --sample-argument "${PARAM_SAMPLE_PARAMETER}"
示例:将字符串参数引用到参数
您可以将字符串参数传递到脚本中定义的参数中。适当的 shell 引号可以防止命令注入。您可以将此方法用于buildah
等策略。以下示例使用脚本中定义的参数来引用字符串参数
apiVersion: shipwright.io/v1beta1
kind: BuildStrategy
metadata:
name: sample-strategy
spec:
parameters:
- name: sample-parameter
description: A sample parameter
type: string
steps:
- name: sample-step
command:
- /bin/bash
args:
- -c
- |
set -euo pipefail
SAMPLE_PARAMETER="$1"
some-tool --sample-argument "${SAMPLE_PARAMETER}"
- --
- $(params.sample-parameter)