PipelineResources

PipelineResources in a pipeline are the set of objects that are going to beused as inputs to a Task and can be output by a Task.

A Task can have multiple inputs and outputs.

For example:

  • A Task’s input could be a GitHub source which contains your applicationcode.
  • A Task’s output can be your application container image which can be thendeployed in a cluster.
  • A Task’s output can be a jar file to be uploaded to a storage bucket.

Syntax

To define a configuration file for a PipelineResource, you can specify thefollowing fields:

  • Required:
    • apiVersion - Specifies the API version, forexample tekton.dev/v1alpha1.
    • kind - Specify the PipelineResource resourceobject.
    • metadata - Specifies data to uniquely identifythe PipelineResource object, for example a name.
    • spec - Specifies the configuration informationfor your PipelineResource resource object.
      • type - Specifies the type of thePipelineResource
  • Optional:
    • description - Description of the Resource.
    • params - Parameters which are specific to each typeof PipelineResource
    • optional - Boolean flag to mark a resourceoptional (by default, optional is set to false making resourcesmandatory).

Using Resources

Resources can be used in Tasks andConditions.

Input resources, like source code (git) or artifacts, are dumped at path/workspace/task_resource_name within a mountedvolume and are availableto all steps of your Task. The path that the resources are mountedat can beoverridden with the targetPath field.Steps can use the pathvariable substitution key torefer to the local path to the mounted resource.

Variable substitution

Task and Condition specs can refer resource params as well as predefinedvariables such as path using the variable substitution syntax below where<name> is the resource’s name and <key> is one of the resource’s params:

In Task Spec:

For an input resource in a Task spec: shell $(resources.inputs.<name>.<key>)

Or for an output resource:

  1. $(outputs.resources.<name>.<key>)

In Condition Spec:

Input resources can be accessed by:

  1. $(resources.<name>.<key>)

Accessing local path to resource

The path key is predefined and refers to the local path to a resource on themounted volume shell $(resources.inputs.<name>.path)

Controlling where resources are mounted

The optional field targetPath can be used to initialize a resource in aspecific directory. If targetPath is set, the resource will be initializedunder /workspace/targetPath. If targetPath is not specified, the resourcewill be initialized under /workspace. The following example demonstrates howgit input repository could be initialized in $GOPATH to run tests:

  1. apiVersion: tekton.dev/v1beta1
  2. kind: Task
  3. metadata:
  4. name: task-with-input
  5. namespace: default
  6. spec:
  7. resources:
  8. inputs:
  9. - name: workspace
  10. type: git
  11. targetPath: go/src/github.com/tektoncd/pipeline
  12. steps:
  13. - name: unit-tests
  14. image: golang
  15. command: ["go"]
  16. args:
  17. - "test"
  18. - "./..."
  19. workingDir: "/workspace/go/src/github.com/tektoncd/pipeline"
  20. env:
  21. - name: GOPATH
  22. value: /workspace/go

Overriding where resources are copied from

When specifying input and output PipelineResources, you can optionally specifypaths for each resource. paths will be used by TaskRun as the resource’snew source paths i.e., copy the resource from a specified list of paths.TaskRun expects the folder and contents to be already present in specifiedpaths. The paths feature could be used to provide extra files or alteredversion of existing resources before the execution of steps.

The output resource includes the name and reference to the pipeline resource andoptionally paths. paths will be used by TaskRun as the resource’s newdestination paths i.e., copy the resource entirely to specified paths. TaskRunwill be responsible for the creation of required directories and contenttransition. The paths feature could be used to inspect the results ofTaskRun after the execution of steps.

paths feature for input and output resources is heavily used to pass the sameversion of resources across tasks in context of PipelineRun.

In the following example, Task and TaskRun are defined with an inputresource, output resource and step, which builds a war artifact. After theexecution of TaskRun(volume-taskrun), custom volume will have the entireresource java-git-resource (including the war artifact) copied to thedestination path /custom/workspace/.

  1. apiVersion: tekton.dev/v1beta1
  2. kind: Task
  3. metadata:
  4. name: volume-task
  5. namespace: default
  6. spec:
  7. resources:
  8. inputs:
  9. - name: workspace
  10. type: git
  11. outputs:
  12. - name: workspace
  13. steps:
  14. - name: build-war
  15. image: objectuser/run-java-jar #https://hub.docker.com/r/objectuser/run-java-jar/
  16. command: jar
  17. args: ["-cvf", "projectname.war", "*"]
  18. volumeMounts:
  19. - name: custom-volume
  20. mountPath: /custom
  1. apiVersion: tekton.dev/v1beta1
  2. kind: TaskRun
  3. metadata:
  4. name: volume-taskrun
  5. namespace: default
  6. spec:
  7. taskRef:
  8. name: volume-task
  9. resources:
  10. inputs:
  11. - name: workspace
  12. resourceRef:
  13. name: java-git-resource
  14. outputs:
  15. - name: workspace
  16. paths:
  17. - /custom/workspace/
  18. resourceRef:
  19. name: java-git-resource
  20. podTemplate:
  21. volumes:
  22. - name: custom-volume
  23. emptyDir: {}

Resource Status

When resources are bound inside a TaskRun, they can include extra informationin the TaskRun Status.ResourcesResult field. This information can be usefulfor auditing the exact resources used by a TaskRun later. Currently the Imageand Git resources use this mechanism.

For an example of what this output looks like:

  1. resourcesResult:
  2. - key: digest
  3. value: sha256:a08412a4164b85ae521b0c00cf328e3aab30ba94a526821367534b81e51cb1cb
  4. resourceRef:
  5. name: skaffold-image-leeroy-web

Description

The description field is an optional field and can be used to provide description of the Resource.

Optional Resources

By default, a resource is declared as mandatory unless optional is set to truefor that resource. Resources declared as optional in a Task does not have bespecified in TaskRun.

  1. apiVersion: tekton.dev/v1beta1
  2. kind: Task
  3. metadata:
  4. name: task-check-optional-resources
  5. spec:
  6. resources:
  7. inputs:
  8. - name: git-repo
  9. type: git
  10. optional: true

Similarly, resources declared as optional in a Pipeline does not have to bespecified in PipelineRun.

  1. apiVersion: tekton.dev/v1beta1
  2. kind: Pipeline
  3. metadata:
  4. name: pipeline-build-image
  5. spec:
  6. resources:
  7. - name: workspace
  8. type: git
  9. optional: true
  10. tasks:
  11. - name: check-workspace
  12. ...

You can refer to different examples demonstrating usage of optional resources inTask, Condition, and Pipeline:

Resource Types

Git Resource

The git resource represents a git repository, thatcontains the source code to be built by the pipeline. Adding the git resourceas an input to a Task will clone this repository and allow the Task toperform the required actions on the contents of the repo.

To create a git resource using the PipelineResource CRD:

  1. apiVersion: tekton.dev/v1alpha1
  2. kind: PipelineResource
  3. metadata:
  4. name: wizzbang-git
  5. namespace: default
  6. spec:
  7. type: git
  8. params:
  9. - name: url
  10. value: https://github.com/wizzbangcorp/wizzbang.git
  11. - name: revision
  12. value: master

Params that can be added are the following:

  • url: represents the location of the git repository, you can use this tochange the repo, e.g. to use a fork
  • revision: Git revision (branch, tag, commit SHA or ref) toclone. You can use this to control what commit or branchis used. If no revision is specified, the resource will default to latestfrom master.
  • submodules: defines if the resource should initialize and fetch thesubmodules, value is either true or false. If not specified, this willdefault to true
  • depth: performs a shallow clone where only the most recentcommit(s) will be fetched. If set to '0', all commits will be fetched. Ifnot specified, the default depth is 1.
  • sslVerify: defines if http.sslVerify should be setto true or false in the global git config. Defaults to true ifomitted. When used as an input, the Git resource includes the exact commit fetched in theresourceResults section of the taskRun’s status object:
  1. resourceResults:
  2. - key: commit
  3. value: 6ed7aad5e8a36052ee5f6079fc91368e362121f7
  4. resourceRef:
  5. name: skaffold-git

Using a fork

The Url parameter can be used to point at any git repository, for example touse a GitHub fork at master:

  1. spec:
  2. type: git
  3. params:
  4. - name: url
  5. value: https://github.com/bobcatfish/wizzbang.git

Using a branch

The revision can be anygit commit-ish (revision).You can use this to create a git PipelineResource that points at a branch, forexample:

  1. spec:
  2. type: git
  3. params:
  4. - name: url
  5. value: https://github.com/wizzbangcorp/wizzbang.git
  6. - name: revision
  7. value: some_awesome_feature

To point at a pull request, you can usethe pull requests’s branch:

  1. spec:
  2. type: git
  3. params:
  4. - name: url
  5. value: https://github.com/wizzbangcorp/wizzbang.git
  6. - name: revision
  7. value: refs/pull/52525/head

Using HTTP/HTTPS Proxy

The httpProxy and httpsProxy parameter can be used to proxy non-SSL/SSL requests, for example to use an enterpriseproxy server for SSL requests:

  1. spec:
  2. type: git
  3. params:
  4. - name: url
  5. value: https://github.com/bobcatfish/wizzbang.git
  6. - name: httpsProxy
  7. value: "my-enterprise.proxy.com"

Using No Proxy

The noProxy parameter can be used to opt out of proxying, for example, to not proxy HTTP/HTTPS requests tono.proxy.com:

  1. spec:
  2. type: git
  3. params:
  4. - name: url
  5. value: https://github.com/bobcatfish/wizzbang.git
  6. - name: noProxy
  7. value: "no.proxy.com"

Note: httpProxy, httpsProxy, and noProxy are all optional but no validation done if all three are specified.

Pull Request Resource

The pullRequest resource represents a pull request event from a source controlsystem.

Adding the Pull Request resource as an input to a Task will populate theworkspace with a set of files containing generic pull request related metadatasuch as base/head commit, comments, and labels.

The payloads will also contain links to raw service-specific payloads whereappropriate.

Adding the Pull Request resource as an output of a Task will update the sourcecontrol system with any changes made to the pull request resource during thepipeline.

Example file structure:

  1. /workspace/
  2. /workspace/<resource>/
  3. /workspace/<resource>/labels/
  4. /workspace/<resource>/labels/<label>
  5. /workspace/<resource>/status/
  6. /workspace/<resource>/status/<status>
  7. /workspace/<resource>/comments/
  8. /workspace/<resource>/comments/<comment>
  9. /workspace/<resource>/head.json
  10. /workspace/<resource>/base.json
  11. /workspace/<resource>/pr.json

More details:

Labels are empty files, named after the desired label string.

Statuses describe pull request statuses. It is represented as a set of jsonfiles.

References (head and base) describe Git references. They are represented as aset of json files.

Comments describe a pull request comment. They are represented as a set of jsonfiles.

Other pull request information can be found in pr.json. This is a read-onlyresource. Users should use other subresources (labels, comments, etc) tointeract with the PR.

For an example of the output this resource provides, seeexample.

To create a pull request resource using the PipelineResource CRD:

  1. apiVersion: tekton.dev/v1alpha1
  2. kind: PipelineResource
  3. metadata:
  4. name: wizzbang-pr
  5. namespace: default
  6. spec:
  7. type: pullRequest
  8. params:
  9. - name: url
  10. value: https://github.com/wizzbangcorp/wizzbang/pulls/1
  11. secrets:
  12. - fieldName: authToken
  13. secretName: github-secrets
  14. secretKey: token
  15. ---
  16. apiVersion: v1
  17. kind: Secret
  18. metadata:
  19. name: github-secrets
  20. type: Opaque
  21. data:
  22. token: github_personal_access_token_secret # in base64 encoded form

Params that can be added are the following:

  • url: represents the location of the pull request to fetch.
  • provider: represents the SCM provider to use. This will be “guessed” basedon the url if not set. Valid values are github or gitlab today.
  • insecure-skip-tls-verify: represents whether to skip verification of certificatesfrom the git server. Valid values are "true" or "false", the default being"false".

Statuses

The following status codes are available to use for the Pull Request resource:https://godoc.org/github.com/jenkins-x/go-scm/scm#State

Pull Request

The pullRequest resource will look for GitHub or GitLab OAuth authenticationtokens in spec secrets with a field name called authToken.

URLs should be of the form: https://github.com/tektoncd/pipeline/pull/1

Self hosted / Enterprise instances

The PullRequest resource works with self hosted or enterprise GitHub/GitLabinstances. Simply provide the pull request URL and set the provider parameter.If you need to skip certificate validation set the insecure-skip-tls-verifyparameter to "true".

  1. apiVersion: tekton.dev/v1alpha1
  2. kind: PipelineResource
  3. metadata:
  4. name: wizzbang-pr
  5. namespace: default
  6. spec:
  7. type: pullRequest
  8. params:
  9. - name: url
  10. value: https://github.example.com/wizzbangcorp/wizzbang/pulls/1
  11. - name: provider
  12. value: github

Image Resource

An image resource represents an image that lives in a remote repository. It isusually used as a Task output for Tasks that buildimages. This allows the same Tasks to be used to generically push to anyregistry.

Params that can be added are the following:

  • url: The complete path to the image, including the registry and the imagetag
  • digest: Theimage digestwhich uniquely identifies a particular build of an image with a particulartag. While this can be provided as a parameter, there is not yet a way toupdate this value after an image is built, but this is planned in#216. For example:
  1. apiVersion: tekton.dev/v1alpha1
  2. kind: PipelineResource
  3. metadata:
  4. name: kritis-resources-image
  5. namespace: default
  6. spec:
  7. type: image
  8. params:
  9. - name: url
  10. value: gcr.io/staging-images/kritis

Surfacing the image digest built in a task

To surface the image digest in the output of the taskRun the builder toolshould produce this information in aOCI Image Layoutindex.json file. This file should be placed on a location as specified in thetask definition under the default resource directory, or the specifiedtargetPath. If there is only one image in the index.json file, the digest ofthat image is exported; otherwise, the digest of the whole image index would beexported. For example this build-push task defines the outputImageDir for thebuiltImage resource in /workspace/buildImage

  1. apiVersion: tekton.dev/v1beta1
  2. kind: Task
  3. metadata:
  4. name: build-push
  5. spec:
  6. resources:
  7. inputs:
  8. - name: workspace
  9. type: git
  10. outputs:
  11. - name: builtImage
  12. type: image
  13. targetPath: /workspace/builtImage
  14. steps: ...

If no value is specified for targetPath, it will default to/workspace/output/{resource-name}.

Please check the builder tool used on how to pass this path to create theoutput file.

The taskRun will include the image digest in the resourcesResult field thatis part of the taskRun.Status

for example:

  1. status:
  2. ...
  3. resourcesResult:
  4. - key: "digest"
  5. value: "sha256:eed29cd0b6feeb1a92bc3c4f977fd203c63b376a638731c88cacefe3adb1c660"
  6. resourceRef:
  7. name: skaffold-image-leeroy-web
  8. ...

If the index.json file is not produced, the image digest will not be includedin the taskRun output.

Cluster Resource

A cluster resource represents a Kubernetes cluster other than the currentcluster Tekton Pipelines is running on. A common use case for this resource isto deploy your application/function on different clusters.

The resource will use the provided parameters to create akubeconfigfile that can be used by other steps in the pipeline Task to access the targetcluster. The kubeconfig will be placed in/workspace/<your-cluster-name>/kubeconfig on your Task container

The Cluster resource has the following parameters:

  • url (required): Host url of the master node
  • username (required): the user with access to the cluster
  • password: to be used for clusters with basic auth
  • namespace: The namespace to target in the cluster
  • token: to be used for authentication, if present will be used ahead of thepassword
  • insecure: to indicate server should be accessed without verifying the TLScertificate.
  • cadata (required): holds PEM-encoded bytes (typically read from a rootcertificates bundle).

Note: Since only one authentication technique is allowed per user, either atoken or a password should be provided, if both are provided, the passwordwill be ignored.

The following example shows the syntax and structure of a cluster resource:

  1. apiVersion: tekton.dev/v1alpha1
  2. kind: PipelineResource
  3. metadata:
  4. name: test-cluster
  5. spec:
  6. type: cluster
  7. params:
  8. - name: url
  9. value: https://10.10.10.10 # url to the cluster master node
  10. - name: cadata
  11. value: LS0tLS1CRUdJTiBDRVJ.....
  12. - name: token
  13. value: ZXlKaGJHY2lPaU....

For added security, you can add the sensitive information in a KubernetesSecret and populatethe kubeconfig from them.

For example, create a secret like the following example:

  1. apiVersion: v1
  2. kind: Secret
  3. metadata:
  4. name: target-cluster-secrets
  5. data:
  6. cadatakey: LS0tLS1CRUdJTiBDRVJUSUZ......tLQo=
  7. tokenkey: ZXlKaGJHY2lPaUpTVXpJMU5pSXNJbX....M2ZiCg==

and then apply secrets to the cluster resource

  1. apiVersion: tekton.dev/v1alpha1
  2. kind: PipelineResource
  3. metadata:
  4. name: test-cluster
  5. spec:
  6. type: cluster
  7. params:
  8. - name: url
  9. value: https://10.10.10.10
  10. - name: username
  11. value: admin
  12. secrets:
  13. - fieldName: token
  14. secretKey: tokenKey
  15. secretName: target-cluster-secrets
  16. - fieldName: cadata
  17. secretKey: cadataKey
  18. secretName: target-cluster-secrets

Example usage of the cluster resource in a Task, usingvariable substitution:

  1. apiVersion: tekton.dev/v1beta1
  2. kind: Task
  3. metadata:
  4. name: deploy-image
  5. namespace: default
  6. spec:
  7. resources:
  8. inputs:
  9. - name: workspace
  10. type: git
  11. - name: dockerimage
  12. type: image
  13. - name: testcluster
  14. type: cluster
  15. steps:
  16. - name: deploy
  17. image: image-with-kubectl
  18. command: ["bash"]
  19. args:
  20. - "-c"
  21. - kubectl --kubeconfig
  22. /workspace/$(resources.inputs.testcluster.name)/kubeconfig --context
  23. $(resources.inputs.testcluster.name) apply -f /workspace/service.yaml'

To use the cluster resource with Google Kubernetes Engine, you should use thecadata authentication mechanism.

To determine the caData, you can use the following gcloud commands:

  1. gcloud container clusters describe <cluster-name> --format='value(masterAuth.clusterCaCertificate)'

To create a secret with this information, you can use:

  1. CADATA=$(gcloud container clusters describe <cluster-name> --format='value(masterAuth.clusterCaCertificate)')
  2. kubectl create secret generic cluster-ca-data --from-literal=cadata=$CADATA

To retrieve the URL, you can use this gcloud command:

  1. gcloud container clusters describe <cluster-name> --format='value(endpoint)'

Then to use these in a resource, reference the cadata from the secret youcreated above, and use the IP address from the gcloud command as your url(prefixed with https://):

  1. spec:
  2. type: cluster
  3. params:
  4. - name: url
  5. value: https://<ip address determined above>
  6. secrets:
  7. - fieldName: cadata
  8. secretName: cluster-ca-data
  9. secretKey: cadata

Storage Resource

The storage resource represents blob storage, that contains either an objector directory. Adding the storage resource as an input to a Task will downloadthe blob and allow the Task to perform the required actions on the contents ofthe blob.

Only blob storage typeGoogle Cloud Storage(gcs) is supported asof now via GCS storage resource andBuildGCS storage resource.

GCS Storage Resource

The gcs storage resource points toGoogle Cloud Storage blob.

To create a GCS type of storage resource using the PipelineResource CRD:

  1. apiVersion: tekton.dev/v1alpha1
  2. kind: PipelineResource
  3. metadata:
  4. name: wizzbang-storage
  5. namespace: default
  6. spec:
  7. type: storage
  8. params:
  9. - name: type
  10. value: gcs
  11. - name: location
  12. value: gs://some-bucket
  13. - name: dir
  14. value: "y" # This can have any value to be considered "true"

Params that can be added are the following:

  • location: represents the location of the blob storage.
  • type: represents the type of blob storage. For GCS storage resource thisvalue should be set to gcs.
  • dir: represents whether the blob storage is a directory or not. By defaulta storage artifact is not considered a directory.

    • If the artifact is a directory then -r(recursive) flag is used, tocopy all files under the source directory to a GCS bucket. Eg: gsutil cp -r source_dir/* gs://some-bucket
    • If an artifact is a single file like a zip or tar, then the copy will beonly 1 level deep(not recursive). It will not trigger a copy of subdirectories in the source directory. Eg: gsutil cp source.tar gs://some-bucket.tar. Private buckets can also be configured as storage resources. To access GCSprivate buckets, service accounts with correct permissions are required. Thesecrets field on the storage resource is used for configuring thisinformation. Below is an example on how to create a storage resource with aservice account.
  • Refer to theofficial documentationon how to create service accounts and configuringIAM permissionsto access buckets.

  • Create a Kubernetes secret from a downloaded service account json key

  1. kubectl create secret generic bucket-sa --from-file=./service_account.json
  • To access the GCS private bucket environment variableGOOGLE_APPLICATION_CREDENTIALSshould be set, so apply the above created secret to the GCS storage resourceunder the fieldName key.
  1. apiVersion: tekton.dev/v1alpha1
  2. kind: PipelineResource
  3. metadata:
  4. name: wizzbang-storage
  5. namespace: default
  6. spec:
  7. type: storage
  8. params:
  9. - name: type
  10. value: gcs
  11. - name: location
  12. value: gs://some-private-bucket
  13. - name: dir
  14. value: "y"
  15. secrets:
  16. - fieldName: GOOGLE_APPLICATION_CREDENTIALS
  17. secretName: bucket-sa
  18. secretKey: service_account.json

BuildGCS Storage Resource

The build-gcs storage resource points to aGoogle Cloud Storage blob likeGCS Storage Resource, either in the form of a .ziparchive, or based on the contents of a source manifest file.

In addition to fetching an .zip archive, BuildGCS also unzips it.

ASource Manifest Fileis a JSON object, which is listing other objects in a Cloud Storage that shouldbe fetched. The format of the manifest is a mapping of the destination file pathto the location in a Cloud Storage, where the file’s contents can be found. Thebuild-gcs resource can also do incremental uploads of sources via the SourceManifest File.

To create a build-gcs type of storage resource using the PipelineResourceCRD:

  1. apiVersion: tekton.dev/v1alpha1
  2. kind: PipelineResource
  3. metadata:
  4. name: build-gcs-storage
  5. namespace: default
  6. spec:
  7. type: storage
  8. params:
  9. - name: type
  10. value: build-gcs
  11. - name: location
  12. value: gs://build-crd-tests/rules_docker-master.zip
  13. - name: artifactType
  14. value: Archive

Params that can be added are the following:

  • location: represents the location of the blob storage.
  • type: represents the type of blob storage. For BuildGCS, this value shouldbe set to build-gcs
  • artifactType: represent the type of gcs resource. Right now, we supportfollowing types:

  • ZipArchive:

    • ZipArchive indicates that the resource fetched is an archive file in thezip format.
    • It unzips the archive and places all the files in the directory, whichis set at runtime.
    • Archive is also supported and is equivalent to ZipArchive, but isdeprecated.
  • TarGzArchive:
    • TarGzArchive indicates that the resource fetched is a gzipped archivefile in the tar format.
    • It unzips the archive and places all the files in the directory, whichis set at runtime.
  • Manifest:
    • Manifest indicates that the resource should be fetched using a sourcemanifest file.

Private buckets other than the ones accessible by aTaskRun Service Account can not be configuredas storage resources for the build-gcs storage resource right now. This isbecause the container imagegcr.io/cloud-builders//gcs-fetcherdoes not support configuring secrets.

Cloud Event Resource

The cloudevent resource represents acloud event that is sent to a targetURI upon completion of a TaskRun. The cloudevent resource sends Tektonspecific events; the body of the event includes the entire TaskRun spec plusstatus; the types of events defined for now are:

  • dev.tekton.event.task.unknown
  • dev.tekton.event.task.successful
  • dev.tekton.event.task.failed

cloudevent resources are useful to notify a third party upon the completionand status of a TaskRun. In combinations with theTekton triggers project they can be usedto link Task/PipelineRuns asynchronously.

To create a CloudEvent resource using the PipelineResource CRD:

  1. apiVersion: tekton.dev/v1alpha1
  2. kind: PipelineResource
  3. metadata:
  4. name: event-to-sink
  5. spec:
  6. type: cloudEvent
  7. params:
  8. - name: targetURI
  9. value: http://sink:8080

The content of an event is for example:

  1. Context Attributes,
  2. SpecVersion: 0.2
  3. Type: dev.tekton.event.task.successful
  4. Source: /apis/tekton.dev/v1beta1/namespaces/default/taskruns/pipeline-run-api-16aa55-source-to-image-task-rpndl
  5. ID: pipeline-run-api-16aa55-source-to-image-task-rpndl
  6. Time: 2019-07-04T11:03:53.058694712Z
  7. ContentType: application/json
  8. Transport Context,
  9. URI: /
  10. Host: my-sink.default.my-cluster.containers.appdomain.cloud
  11. Method: POST
  12. Data,
  13. {
  14. "taskRun": {
  15. "metadata": {...}
  16. "spec": {
  17. "inputs": {...}
  18. "outputs": {...}
  19. "serviceAccount": "default",
  20. "taskRef": {
  21. "name": "source-to-image",
  22. "kind": "Task"
  23. },
  24. "timeout": "1h0m0s"
  25. },
  26. "status": {...}
  27. }
  28. }