Skip to content

Tekton Pipeline release v0.10.0 "Bombay Robbie"

Compare
Choose a tag to compare
@vdemeester vdemeester released this 23 Jan 11:46

πŸŽ‰ Happy new year release with a lot of gift πŸŽ‰

Go modules switch, Enhancements of scripts (no shebang required, Condition support, …), workspace addition, embedded TaskSpec in PipelineSpec, More PodTemplate (and defaults support), Optional and allowing unused PipelineResources.

Note: starting from this release, there will be a release.notags.yaml in addition to the usual release.yaml. This file (release.notags.yaml) is meant to be used if the container runtime used by your kubernetes distribution is not compatible with the image reference notation name:tag@digest (which is currently the case for cri-o and thus for OpenShift 4.x).

-Docs @ v0.10.0
-Examples @ v0.10.0

Changes

Features

  • ✨ Script enhancements

    Task steps that use script mode no longer need to specify a shebang line. Scripts that do not start with a shebang will use a default value of "#!/bin/sh". (#1691)
    Allow args with script mode (#1656)
    Script mode will now insert set -xe to scripts that don't include a shebang #!, which will in turn fail scripts with commands that error our and also print the command that is about to run. This default behaviour can be disabled by simply specifying your own #! at the top of the script. (#1736)
    Add script mode for Conditions (#1798)

  • ✨ Add workspace support to Task{,Run} and Pipeline{,Run}

    Adds the concept of "workspaces" to Tasks. This allows Task authors to declare directories they expect to be provided via Volumes at runtime. At runtime, TaskRuns can provide PVCs or EmptyDirs to use for these directories. (#1639)
    A Task's workspaces can be declared as readOnly: true. When this is set, the underlying volume mount will likewise be marked as read-only and the task will not be able to write to the volume. (#1760)
    A ConfigMap can be bound to a workspace. This allows users to easily expose the contents of a ConfigMap as a volume in Task containers. (#1800)
    Secrets can now be used for the contents of task workspaces. Users can now more easily declare and expose a secret as a volume for tasks to use in their step containers. (#1801)
    Pipelines and PipelineRuns can now declare workspaces to more easily thread shared storage through the tasks in a pipeline (#1866)

  • ✨ PipelineResource enhancements

    Do not error out in case of extra, unused resource (#1679)
    PullRequestResource: Adds read-only pr.json to include other various pull request information. (#1685)
    Introducing a new key called optional as part of the PipelineResourceDeclaration by default a resource is required (as is - no change in behavior). (#1601)

  • ✨ Adding support for taskSpec with pipelineSpec
    Allow embedding task specification with taskSpec under pipelineSpec (#1554)

  • ✨ Add Go module support for pipelines. (#1607)

  • ✨ PodTemplates enhancements

    Support the automountServiceAccountToken, dnsPolicy, dnsConfig, and enableServiceLinks fields in pod templates (#1781)
    Add support for default pod template (#1901)

  • ✨ Use tekton instead of all as categories 🎿

    Remove the category all for our CRD and have a tekton categorie that is shared with other tektoncd projects (#1884)

  • ✨ Changes to add results to a task

    Add results to the task spec and handle all changes in the entrypoint code. (#1888)

  • ✨ Don't hard-code too much 😝
    The webhook service and deployment can have a name specified by the user. (#1724)
    ConfigMaps used to configure artifact storage can have a name specified by the user (#1723)

  • ✨ Reflect tektoncd/pipeline release version as an annotation on pod
    tekton.dev/release annotation will be added to all pods created by the controller which would let us know what release of tekton is running. (#1758)

  • ✨ Add support for from usage in Pipeline Conditions

    Resources in Pipeline Conditions can now declare that they depend on the output of previous tasks using the from clause. (#1527)

  • ✨ Issue 1182: Add sslVerify flag to pipelineresource type git

    The sslVerify parameter is now available on PipelineResource's of type git. This property defines whether http.sslVerify should be set to true or false in the global git config. Setting the property to false will disable certificate validation during the running of the git fetch against the git server and will be of use to people hosting git servers with self signed certificates. The parameter sslVerify defaults to true if omitted. (#1752)

  • ✨ Add Description to ResourceDeclaration (#1875)

  • ✨ Make default managed-by label configurable

    The default app.kubernetes.io/managed-by label value is configurable in a ConfigMap (#1893)

  • ✨ Add gitlab support to the PR resource. (#1550)

Additionaly there has been ground work on the next API version, v1alpha2:

  • ❇️ Add Task to v1alpha2 πŸŽ‹ (#1651)
  • ❇️ Port workspace and script without shebang to v1alpha2 (#1841)
  • ❇️ Add TaskRun to v1alpha2 πŸŽ‹ (#1725)
  • ❇️ Add Pipeline to v1alpha2 πŸŽ‹ (#1864)

Deprecation Notices

  • 🚨 Removes unused status fields from Pipeline and PipelineResource.

    Those fields stays in v1alpha1 but should be gone in the next API version (#1640, #1762, #1766)

  • 🚨 Don't rely on .status.podName to find Pod associated with a TaskRun

    TaskRuns identify Tekton-owned Pods using label selectors, instead of relying on the value of .status.podName. This valus is still provided in case clients rely on its presence. (#1709)

Backwards incompatible changes

In current release:

  • 🚨 Remove /builder/home mount (#1700)

    Possibly breaking: Remove /builder/home volume mount; users should use the value of $HOME, which points to /tekton/home```

  • 🚨 Reserve /tekton/ paths and "tekton-internal-" volume names

    Reject volune names starting with "tekton-internal-" and volume mounts mounting under /tekton/* -- these are reserved for Tekton internal implementation details. (#1701)

  • 🚨 Remove the support for legacy image output paths.

    Support for the legacy image output path (/builder/home/image-outputs) has been removed. The new location (/workspace/output/) should be used instead. (#1671)

  • 🚨 Remove support for the name parameter to cluster resources.

    Support for the "name" parameter to the cluster resource has been removed. Users should use the standard "name" parameter on the resource object itself instead. (#1672)

Fixes

  • πŸ› Restrict length of volumes generated from secret names (#1756)
  • πŸ› Fix bug in entrypoint lookup for steps by digest (#1675)
  • πŸ› Handle injected sidecars more correctly (#1688)
  • πŸ› Set scm.PR.Sha to scm.PR.Head.Sha when loading from disk. (#1693)
  • πŸ› Mark task as failed if OOMKilled. (#1812)
  • πŸ› Fix passing -submodules flag to git-init (#1813)
  • πŸ› Correctly report step start times (#1722)
  • πŸ› Issue 1862: Gitlab status upload fails with missing commit error (#1863)
  • πŸ› Avoid stuck on pending when hit "CreateContainerConfigError" (#1907)

Misc

  • πŸ”¨ Split out step resource request management (#1655)
  • πŸ”¨ Don't fail if there are no comments, labels or statuses. (#1666)
  • πŸ”¨ Generate Pod name using names package (#1664)
  • πŸ”¨ Restore builder/home for publish nightly (#1667)
  • πŸ”¨ Add workingdir integration test (#1625)
  • πŸ”¨ Set default resource requests in Pod test builder (#1668)
  • πŸ”¨ Add copyright headers in pkg/pod (#1669)
  • πŸ”¨ Fetch {Cluster}Tasks using generated client (#1662)
  • πŸ”¨ Address review comments from #1653 (#1670)
  • πŸ”¨ Store tektoncd/pipeline release version to a variable during build (#1650)
  • πŸ”¨ Use dogfooding ko image during release and nightly 🌞 (#1678)
  • πŸ”¨ Move image data extraction into entrypoint_lookup.go (#1686)
  • πŸ”¨ Add golint to the linters (#1682)
  • πŸ”¨ Bump plumbing to get latest fixes πŸ‘¨β€πŸš€ (#1699)
  • πŸ”¨ Fix lint failure (#1708)
  • πŸ”¨ Remove imports of golang.org/x/xerrors (#1711)
  • πŸ”¨ Fix linter errors in log messages (#1719)
  • πŸ”¨ Increase the linter timeout to 5m (#1726)
  • πŸ”¨ Simplify variable substitution tests βš—οΈ (#1702)
  • πŸ”¨ Fix golint error strings. (#1732)
  • πŸ”¨ Rename constants.go to storagetypes.go πŸ’Ž (#1730)
  • πŸ”¨ Fixes flaky metrics unit tests (#1731)
  • πŸ”¨ Cleanup the prow nightly release task and pipeline (#1718)
  • πŸ”¨ Format pullrequest-init example JSON files. (#1728)
  • πŸ”¨ Move context*.go to pkg/contexts and add tests 🎐 (#1720)
  • πŸ”¨ Use the ko image with gcloud for release (#1734)
  • πŸ”¨ Pin the version of golangci-lint in release pipeline (#1721)
  • πŸ”¨ Fix nightly modules tags (#1737)
  • πŸ”¨ Fix the release docs (#1738)
  • πŸ”¨ (Temporarly) disable markdown link check πŸ˜… (#1743)
  • πŸ”¨ Parameterize git clone depth and fix disabling submodules (#1729)
  • πŸ”¨ Move *RunControllerName out of v1alpha1 🐸 (#1706)
  • πŸ”¨ Call gcloud auth activate-service-account if GOOGLE_APPLICATION_CREDENTIALS is set (#1757)
  • πŸ”¨ go.mod changes: less replace (#1751)
  • πŸ”¨ Use vendored version of plumbing instead of go get 🦸 (#1763)
  • πŸ”¨ Running ./hack/update-deps.sh on master 🍢 (#1767)
  • πŸ”¨ Correcting Comment Typos and Updating cancelPipelineRun Error Message (#1780)
  • πŸ”¨ Ignore code coverage for auto generated file (#1778)
  • πŸ”¨ Python2 has been deprecated (#1799)
  • πŸ”¨ Change variable name: non-existent variable of testCluster (#1804)
  • πŸ”¨ Fix parallel test + for range value overwrite bug (#1793)
  • πŸ”¨ Use vendor-ed version of plumbing instead of go get 🦸 (#1807)
  • πŸ”¨ Propagate Condition labels to the TaskRun/Pod (#1787)
  • πŸ”¨ PullRequest Resource: Derive API URL from PR URL (#1817)
  • πŸ”¨ Fix typo and some comments on uppercase variables in pkg/pod. (#1821)
  • πŸ”¨ Allow keeping namespaces after running tests for investigation (#1810)
  • πŸ”¨ Migrate PipelineResource in their own package… πŸ“¦ (#1773)
  • πŸ”¨ Ignore all generated files in pkg/client for golangci (#1837)
  • πŸ”¨ Make sure all alpine packages are updated to their latest versions. (#1835)
  • πŸ”¨ Factor out a method to parse termination messages (#1827)
  • πŸ”¨ Update go.mod comment with the correct k8s version 😈 (#1834)
  • πŸ”¨ Use the same kaniko version everywhere (and update to latest) (#1847)
  • πŸ”¨ Don't assume $0 is the script source (#1808)
  • πŸ”¨ Rename some test to be closer to golang naming convention πŸ’… (#1850)
  • πŸ”¨ Unexport validate Workspace function πŸ‘Ό (#1848)
  • πŸ”¨ Explain why resource code generation is separate πŸ₯š (#1842)
  • πŸ”¨ Fix spelling errors (#1849)
  • πŸ”¨ Enable sidecars to partake in substitution (#1770)
  • πŸ”¨ Deduplicate and sort termination message items (#1851)
  • πŸ”¨ Correct "outputs.resources.%s.path" (#1854)
  • πŸ”¨ Use correct name for embedded pipelines to prevent reconciler panic (#1852)
  • πŸ”¨ Group pipeline_validation_test together 😁 (#1865)
  • πŸ”¨ Add JSON struct tag for Workspaces field (#1873)
  • πŸ”¨ Update service port naming inline with istio naming conventions (#1828)
  • πŸ”¨ Bump go-containerregistry to latest version (#1882)
  • πŸ”¨ CI: Fix shell expansion when creating resources (#1889)
  • πŸ”¨ Address review comments from #1893 (#1895)
  • πŸ”¨ fix: camel spelling (#1891)
  • πŸ”¨ code simplify of bool check and return (#1899)
  • πŸ”¨ test/builder.Step name is optional (#1897)
  • πŸ”¨ Correct the output of a "failed" taskrun (#1906)
  • πŸ”¨ Issue 1880: Adds ability to disable certificate validation in pullrequest resource (#1881)
  • πŸ”¨ Fix lint on master 🚚 (#1914)
  • πŸ”¨ TaskRun reconcile and timeout found, updateTaskRunStatusForTimeout delete pod optimization (#1911)
  • πŸ”¨ Update v1alpha1 status types to inline fields (#1638)

Docs

  • πŸ“– Use script mode in even more examples (#1695)
  • πŸ“– Fix task.md typo workingdir to workingDir (#1759)
  • πŸ“– Fix link (#1774)
  • πŸ“– Fix spelling errors (#1772)
  • πŸ“– Add documentation about timeout format (#1840)
  • πŸ“– An example in the taskrun doc is not runnable (#1858)
  • πŸ“– Separate pod template doc (#1853)
  • πŸ“– Add missing podTemplate element (#1869)
  • πŸ“– Update documentation to add points on PVC binding (#1885)
  • πŸ“– doc(dev): never use "here" as a link (#1892)
  • πŸ“– Add missing docs link to README πŸ” (#1908)
  • πŸ“– doc(dev/install): Clarify PVC behavior for PipelineResources (#1918)

Thanks

Thanks to these contributors who contributed to v0.10.0!

Extra shout-out for awesome release notes: