4.5. カスタムパラメーターの拡張
Pipelines as Code を使用すると、params
フィールドを使用して PipelineRun
リソース内のカスタムパラメーターをデプロイメントできます。Repository
カスタムリソース (CR) のテンプレート内のカスタムパラメーターの値を指定できます。指定された値は、パイプライン実行のカスタムパラメーターを置き換えます。
カスタムパラメーターは次のシナリオで使用できます。
- プッシュまたはプルリクエストに基づいて変化するレジストリー URL などの URL パラメーターを定義します。
-
Git リポジトリー内の
PipelineRun
実行に変更を加えることなく、管理者が管理できるアカウント UUID などのパラメーターを定義します。
Tekton パラメーターは Pipeline
リソースで定義され、Git リポジトリー内でそれに沿ってカスタマイズされるため、Tekton PipelineRun
パラメーターを使用できない場合にのみ、カスタムパラメーター拡張機能を使用してください。ただし、カスタムパラメーターは、Repository
CR が配置されている場所で定義およびカスタマイズされます。したがって、CI/CD パイプラインを 1 つのポイントから管理することはできません。
次の例は、Repository
CR 内の company
という名前のカスタムパラメーターを示しています。
... spec: params: - name: company value: "ABC Company" ...
値 ABC Company
は、パイプライン実行およびリモートでフェッチされたタスクのパラメーター名 company
を置き換えます。
次の例に示すように、Kubernetes シークレットからカスタムパラメーターの値を取得することもできます。
... spec: params: - name: company secretRef: name: my-secret key: companyname ...
Pipelines as Code は、以下の方法でカスタムパラメーターを解析して使用します。
-
value
とsecretRef
が定義されている場合、Pipelines as Code はvalue
を使用します。 -
params
セクションにname
がない場合、Pipelines as Code はパラメーターを解析しません。 -
同じ
name
のparams
が複数ある場合、Pipelines as Code は最後のパラメーターを使用します。
カスタムパラメーターを定義し、指定された条件が CEL フィルターに一致した場合にのみその拡張を使用することもできます。次の例は、プルリクエストイベントがトリガーされたときに company
という名前のカスタムパラメーターに適用される CEL フィルターを示しています。
... spec: params: - name: company value: "ABC Company" filter: - name: event value: | pac.event_type == "pull_request" ...
同じ名前と異なるフィルターを持つ複数のパラメーターがある場合、Pipelines as Code はフィルターに一致する最初のパラメーターを使用します。そのため、Pipelines as Code を使用すると、さまざまなイベントタイプに応じてパラメーターを拡張できます。たとえば、プッシュリクエストイベントとプルリクエストイベントを組み合わせることができます。