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 という名前のタスクが定義したタスクに置き換えられます。