---
# System prepended metadata

title: Dependency Management of Tekton resources

---

# 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
     
 ```
 

