# Dependency Management of Tekton resources ## Problem statement As a pipeline author, I want to ship all `tasks, conditions, service-accounts, pvc` related to running the pipeline. ## Proposals ### A dep chart like helm A way to package Tekton and required k8s resources like the helm chart ```yaml # path: /package/openwhisk/1.0/openwhisk.yaml apiVersion: tekton.dev/v1alpha1 kind: Package metadata: name: openwhisk annotations: tekton.dev/tags: openwhisk,knative,cloud tekton.dev/displayName: openwhisk,knative,cloud tekton.dev/minPipelineVersion: "0.15.2" labels: io.kubernetes/version: "1.0" spec: catalogs: - name: foobar, url: http/my/catalog # define catalogs # some catalogs are predefined # - community # - official tasks: - url: http://github.com/my/catalog/task/foobar/1.0/foobar.yaml # resolves to: http://github.com/tektoncd/catalog/task/bar/1.0/bar.yaml - catalog: community name: bar version: 1.0 # resolves to http://github.com/tektoncd/official/task/foobar/1.0/foobar.yaml # and everything under support directory - catalog: official name: foobar version: 1.0 # default catalog: is official - name: baz version: 2.0 conditions: - name: openwhisk, version: 1.8 pipelines: - name: openwhisk version: 1.0 - name: openwhisk-knative version: 2.4 others: - ``` ### Built in annotations Allow annotations to resources itself ```yaml ### foo pipeline requires 3 tasks and a condition metadata: kind: Pipeline name: foo labels: version: "0.1" annotations: tekton.dev/dep-01: official:task/foo:1.0 tekton.dev/dep-02: official:task/bar:1.0 tekton.dev/dep-02: official:condition/bar:1.0 ### notice the typo tekton.dev/dep-03: community:task/bar:1.0 ### where bar task requires additional supporting resources metadata: kind: Pipeline name: bar labels: version: "0.1" annotations: tekton.dev/dep-01: official:task/bzzz:1.0 tekton.dev/dep-02: self:support/pvc.yaml ```