2.5. 文字列パラメーターの安全な参照
文字列パラメーターは、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}"
例: 引数への文字列パラメーターの参照
文字列パラメーターをスクリプト内で定義した引数に渡すことができます。適切なシェル引用符を使用すると、コマンドインジェクションを回避できます。このアプローチは、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)