5.3. Pipelines as Code リゾルバーアノテーション
Pipelines as Code リゾルバーアノテーションを使用して、Task
および Pipeline
カスタムリソース (CR) 定義を参照できます。Pipelines as Code リゾルバーは、アノテーションで指定した場所から定義を取得します。リモートタスクのフェッチまたは解析中にエラーが発生した場合、Pipelines as Code はタスクの処理を停止します。
パイプライン実行でリモートタスクを参照する場合や、PipelineRun
または PipelineSpec
オブジェクトでパイプラインを参照する場合、Pipelines as Code リゾルバーは参照されたリソースを自動的に解決し、結果として得る PipelineRun
カスタムリソース (CR) にそれを含めます。
Tekton Hub のパブリックインスタンス (hub.tekton.dev
) は非推奨になり、今後のリリースで削除される予定です。Tekton Pipeline
および Task
リソースの代替として Artifact Hub を使用します。
Artifact Hub はオープンソースであり、セルフホスティングをサポートしているため、Tekton Pipeline
および Task
リソースをより柔軟に管理できます。
5.3.1. リモートタスクアノテーション リンクのコピーリンクがクリップボードにコピーされました!
リモートタスクを含めるには、以下のアノテーションの例を参照してください。
Tekton Hub でのリモートタスクの参照
Tekton Hub で単一のリモートタスクを参照します。
... pipelinesascode.tekton.dev/task: "git-clone" ...
... pipelinesascode.tekton.dev/task: "git-clone"
1 ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Pipelines as Code には、Tekton Hub からのタスクの最新バージョンが含まれています。
Tekton Hub から複数のリモートタスクを参照します。
... pipelinesascode.tekton.dev/task: "[git-clone, golang-test, tkn]" ...
... pipelinesascode.tekton.dev/task: "[git-clone, golang-test, tkn]" ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -<NUMBER>
接尾辞を使用して、Tekton Hub から複数のリモートタスクを参照します。... pipelinesascode.tekton.dev/task: "git-clone" pipelinesascode.tekton.dev/task-1: "golang-test" pipelinesascode.tekton.dev/task-2: "tkn" ...
... pipelinesascode.tekton.dev/task: "git-clone" pipelinesascode.tekton.dev/task-1: "golang-test" pipelinesascode.tekton.dev/task-2: "tkn"
1 ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- デフォルトでは、Pipelines as Code は文字列を Tekton Hub から取得する最新のタスクとして解釈します。
Tekton Hub からリモートタスクの特定のバージョンを参照します。
... pipelinesascode.tekton.dev/task: "[git-clone:0.1]" ...
... pipelinesascode.tekton.dev/task: "[git-clone:0.1]"
1 ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Tekton Hub からの
git-clone
リモートタスクの0.1
バージョンを参照します。
URL を使用するリモートタスク
... pipelinesascode.tekton.dev/task: "<https://remote.url/task.yaml>" ...
...
pipelinesascode.tekton.dev/task: "<https://remote.url/task.yaml>"
...
- 1
- リモートタスクへの公開 URL。注記
GitHub を使用し、リモートタスク URL が
Repository
カスタムリソース定義 (CRD) と同じホストを使用する場合、Pipelines as Code は GitHub トークンを使用し、GitHub API を使用して URL を取得します。たとえば、
https://github.com/<organization>/<repository>
のようなリポジトリー URL があり、リモート HTTP URL がhttps://github.com/<organization>/<repository>/blob/<mainbranch>/<path>/<file>
のような GitHub ブロブを参照している場合に、Pipelines as Code は、GitHub アプリトークンを使用して、そのプライベートリポジトリーからタスク定義ファイルをフェッチします。パブリック GitHub リポジトリーで作業する場合、Pipelines as Code は
https://raw.githubusercontent.com/<organization>/<repository>/<mainbranch>/<path>/<file>
などの GitHub の raw URL と同様に機能します。- GitHub アプリケーショントークンは、リポジトリーが置かれている所有者または組織に対してスコープが設定されます。GitHub Webhook メソッドを使用すると、個人トークンが許可されている任意の組織のプライベートまたはパブリックリポジトリーを取得できます。
リポジトリー内の YAML ファイルからのタスク参照
... pipelinesascode.tekton.dev/task: "<share/tasks/git-clone.yaml>" ...
...
pipelinesascode.tekton.dev/task: "<share/tasks/git-clone.yaml>"
...
- 1
- タスク定義を含むローカルファイルへの相対パス。
5.3.2. リモートパイプラインアノテーション リンクのコピーリンクがクリップボードにコピーされました!
リモートパイプラインアノテーションを使用すると、複数のリポジトリーでパイプライン定義を共有できます。
... pipelinesascode.tekton.dev/pipeline: "<https://git.provider/raw/pipeline.yaml>" ...
...
pipelinesascode.tekton.dev/pipeline: "<https://git.provider/raw/pipeline.yaml>"
...
- 1
- リモートパイプライン定義への URL。同じリポジトリー内のファイルの場所を指定することもできます。
アノテーションを使用してパイプライン定義を 1 つだけ参照できます。
5.3.2.1. リモートパイプラインのタスクをオーバーライドする リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、パイプライン実行でリモートパイプラインアノテーションを使用する場合、Pipelines as Code はリモートパイプラインの一部であるすべてのタスクを使用します。
パイプラインの実行にタスクのアノテーションを追加することで、リモートパイプラインのタスクをオーバーライドできます。追加されたタスクは、リモートパイプライン内のタスクと同じ名前を持つ必要があります。
たとえば、次のパイプライン実行定義を使用できます。
リモートパイプラインを参照し、タスクをオーバーライドするパイプライン実行定義の例
この例では、https://git.provider/raw/pipeline.yaml
にあるリモートタスクに git-clone
という名前のタスクが含まれており、my-git-clone-task.yaml
ファイルで定義されているタスクの名前も git-clone
であると仮定します。
この場合は、パイプライン実行によりリモートパイプラインが実行されますが、パイプライン内の git-clone
という名前のタスクが定義したタスクに置き換えられます。