第3章 リゾルバーを使用したリモートパイプラインとタスクの指定
パイプラインとタスクは、CI/CD プロセスの再利用可能なブロックです。以前に開発したパイプラインやタスク、または他の人が開発したパイプラインやタスクを、定義をコピーして貼り付けることなく再利用できます。これらのパイプラインまたはタスクは、クラスター上の他の namespace からパブリックカタログに至るまで、いくつかの種類のソースから利用できます。
パイプライン実行リソースでは、既存のソースからパイプラインを指定できます。パイプラインリソースまたはタスク実行リソースでは、既存のソースからタスクを指定できます。
このような場合、Red Hat OpenShift Pipelines の リゾルバー は、実行時に指定されたソースからパイプラインまたはタスク定義を取得します。
以下のリゾルバーは、Red Hat OpenShift Pipelines のデフォルトのインストールで使用できます。
- ハブリゾルバー
- Artifact Hub または Tekton Hub で利用可能な Pipelines Catalog からタスクまたはパイプラインを取得します。
- バンドルリゾルバー
- Tekton バンドルからタスクまたはパイプラインを取得します。Tekton バンドルは、OpenShift コンテナーリポジトリーなどの任意の OCI リポジトリーから利用できる OCI イメージです。
- クラスターリゾルバー
- 特定の namespace の同じ OpenShift Container Platform クラスター上にすでに作成されているタスクまたはパイプラインを取得します。
- Git リゾルバー
- Git リポジトリーからタスクまたはパイプラインバインディングを取得します。リポジトリー、ブランチ、パスを指定する必要があります。
OpenShift Pipelines のインストールには、パイプラインで使用できる一連の標準タスクが含まれています。これらのタスクは、OpenShift Pipelines インストール namespace (通常は openshift-pipelines
namespace) にあります。クラスターリゾルバーを使用してタスクにアクセスできます。
3.1. Tekton カタログからのリモートパイプラインまたはタスクの指定
ハブリゾルバーを使用して、Artifact Hub のパブリック Tekton カタログまたは Tekton Hub のインスタンスで定義されたリモートパイプラインまたはタスクを指定できます。
Artifact Hub プロジェクトは、Red Hat OpenShift Pipelines ではサポートされていません。Artifact Hub の設定のみがサポートされます。
3.1.1. ハブリゾルバーの設定
ハブリゾルバーを設定することで、リソースをプルするためのデフォルトのハブとデフォルトのカタログ設定を変更できます。
手順
TektonConfig
カスタムリソースを編集するには、次のコマンドを入力します。$ oc edit TektonConfig config
TektonConfig
カスタムリソースで、pipeline.hub-resolver-config
仕様を編集します。apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: pipeline: hub-resolver-config: default-tekton-hub-catalog: Tekton 1 default-artifact-hub-task-catalog: tekton-catalog-tasks 2 default-artifact-hub-pipeline-catalog: tekton-catalog-pipelines 3 defailt-kind: pipeline 4 default-type: tekton 5 tekton-hub-api: "https://my-custom-tekton-hub.example.com" 6 artifact-hub-api: "https://my-custom-artifact-hub.example.com" 7
- 1
- リソースをプルするためのデフォルトの Tekton Hub カタログ。
- 2
- タスクリソースをプルするためのデフォルトの Artifact Hub カタログ。
- 3
- パイプラインリソースをプルするためのデフォルトの Artifact Hub カタログ。
- 4
- 参照のデフォルトのオブジェクトの種類。
- 5
- リソースをプルするためのデフォルトのハブ。Artifact Hub の場合は
artifact
、Tekton Hub の場合はtekton
です。 - 6
default-type
オプションがtekton
に設定されている場合に使用される Tekton Hub API。- 7
- オプション:
default-type
オプションがartifact
に設定されている場合に使用される Artifact Hub API。
重要default-type
オプションをtekton
に設定する場合は、tekton-hub-api
値を設定して Tekton Hub の独自のインスタンスを設定する必要があります。default-type
オプションをartifact
に設定すると、リゾルバーはデフォルトで https://artifacthub.io/ のパブリックハブ API を使用します。artifact-hub-api
値を設定することで、独自の Artifact Hub API を設定できます。
3.1.2. ハブリゾルバーを使用したリモートパイプラインまたはタスクの指定
パイプライン実行を作成するときに、Artifact Hub または Tekton Hub からリモートパイプラインを指定できます。パイプラインまたはタスク実行を作成するときに、Artifact Hub または Tekton Hub からリモートタスクを指定できます。
手順
Artifact Hub または Tekton Hub からリモートパイプラインまたはタスクを指定するには、
pipelineRef
またはtaskRef
仕様で次の参照形式を使用します。# ... resolver: hub params: - name: catalog value: <catalog> - name: type value: <catalog_type> - name: kind value: [pipeline|task] - name: name value: <resource_name> - name: version value: <resource_version> # ...
表3.1 ハブリゾルバーでサポートされるパラメーター パラメーター 説明 値の例 catalog
リソースを取得するためのカタログ。
デフォルト:
tekton-catalog-tasks
(task
の種類)。tekton-catalog-pipelines
(pipeline
の種類の場合)。type
リソースをプルするカタログのタイプ。Artifact Hub の場合は
Artifact
、Tekton Hub の場合はtekton
のいずれかです。デフォルト:
artifact
kind
task
またはpipeline
のいずれか。デフォルト:
task
name
ハブから取得するタスクまたはパイプラインの名前。
golang-build
version
ハブから取得するタスクまたはパイプラインのバージョン。数値を引用符 (
"
) で囲む必要があります。"0.5.0"
パイプラインまたはタスクに追加のパラメーターが必要な場合は、パイプライン、パイプライン実行、またはタスク実行の仕様の
params
セクションでこれらのパラメーターの値を指定します。pipelineRef
またはtaskRef
仕様のparams
セクションには、リゾルバーがサポートするパラメーターのみを含める必要があります。
次のパイプライン実行の例では、カタログからリモートパイプラインを参照します。
apiVersion: tekton.dev/v1 kind: PipelineRun metadata: name: hub-pipeline-reference-demo spec: pipelineRef: resolver: hub params: - name: catalog value: tekton-catalog-pipelines - name: type value: artifact - name: kind value: pipeline - name: name value: example-pipeline - name: version value: "0.1" params: - name: sample-pipeline-parameter value: test
次のパイプラインの例は、カタログからリモートタスクを参照します。
apiVersion: tekton.dev/v1 kind: Pipeline metadata: name: pipeline-with-cluster-task-reference-demo spec: tasks: - name: "cluster-task-reference-demo" taskRef: resolver: hub params: - name: catalog value: tekton-catalog-tasks - name: type value: artifact - name: kind value: task - name: name value: example-task - name: version value: "0.6" params: - name: sample-task-parameter value: test
次のタスク実行例では、カタログからリモートタスクを参照します。
apiVersion: tekton.dev/v1 kind: TaskRun metadata: name: cluster-task-reference-demo spec: taskRef: resolver: hub params: - name: catalog value: tekton-catalog-tasks - name: type value: artifact - name: kind value: task - name: name value: example-task - name: version value: "0.6" params: - name: sample-task-parameter value: test