This blog post has been written by the owners of the different projects, and in particular, huge thanks to Christie Wilson, Andrea Frittoli, Adam Roberts and Vincent Demeester!
At the end of last year Dan wrote the blog post: A Year of Tekton. It was a great retrospective on what happened since the bootstrap of the project; a highly recommended read! Now that weāre getting into the swing of 2020, letās reflect again back on 2019 and look forward to what we can expect for Tekton this year!
Tekton in 2019
We can safely say 2019 (more or less the projectās first year!) was a great year for Tekton. Just like a toddler we tried things, sometimes failed and learned a lot; we are growing fast!
The year 2019 saw 9 releases of Tekton Pipelines, from the first one (0.1.0) to the latest (0.9.2). We shared the work of creating the releases as much as possible, though many contributors are behind the work in each!!
- 0.1.x (Jason Hall) First Tekton Pipelines release!
- 0.2.x (Christie Wilson) Tekton Pipelines with graphs; without init containers!
- 0.3.x Chartreux C-3PO (Vincent Demeester) Released using Tekton itself!
- 0.4.x Aegean Brackenridge (Dan Lorenc) Exposes digests of built images
- 0.5.x Tuxedo Kilim (Christie Wilson) Pull Request and better sidecar support!
- 0.6.x Toyger Ultron (Dibyo Mukherjee) Conditional execution
- 0.7.x Lynx Point (Andrea Frittoli) Sidecars and CloudEvents
- 0.8.x Peterbald Maria (Scott Seaward) Embedded CRDs and S3
- 0.9.x Bengal Bender (Andrea Frittoli) Step scripts
If you are curious about the naming of the release starting from 0.3.x, we decide to spice things up a bit and name our release with a composition of a cat breed and a robot name (in reference to our amazing logo, a robot cat).
Aside from the initial project (tektoncd/pipeline), we bootstrapped a bunch of new projects:
- tektoncd/cli: This project aims to provide an easy to use command line interface to interact with the tekton components. As Tekton objects are Kubernetes components you can always interact with them via the Kubernetes CLI — kubectl, but the kubectl experience can be very ‘raw’ and not very focused. The `tkn` CLI has the ambition to provide an easy to use user experience without having to know anything about kubectl (or Kubernetes for that matter).
- tektoncd/dashboard: Alongside the CLI project, the Tekton Dashboard provides a user interface for the Tekton components, in a browser. It allows users to manage and view Tekton PipelineRuns and TaskRuns and the resources involved in their creation, execution, and completion.
- tektoncd/catalog: Tekton pipeline is designed to provide highly shareable objects (Task, Pipeline, Condition, ā¦), so creating a repo to store a catalog of shared Tasks and Pipelines came naturally!
- tektoncd/experimental: With growing interest in Tekton came a growing number of āfeature requestsā. In order to be careful about how we expand the scope of Tekton pipeline while still allowing contributors to experiment, we created this repository to allow experiments to happen more easily. Experiments can graduate with enough traction. The biggest project so far is the webhooks extension which combines using the Dashboard project and Triggers to allow users to create webhooks for Git that trigger PipelineRuns.
- tektoncd/operator: This project aims to provide an operator to manage installation, updation and uninstallation of tektoncd projects (pipeline, ā¦). It has yet to be published in the community OperatorHub.
- tektoncd/triggers: And speaking of the experimental repo, we have Triggers which started its life there! This project provides lightweight event triggering for Pipelines.
Looking forward into 2020 š®
Weāve come a long way but weāve got more to do! Though we canāt predict what will happen for sure, here is a preview of what weād like to make happen in 2020!
Beta API, GA
As youāve seen, weāve made a lot of changes! Going forward we want to make sure folks who are using and building on top of Tekton can have more stability guarantees. With that in mind, we are pushing for Tekton Pipelines to have a beta release early in 2020. If you are interested in following along with your progress, please join the beta working group! Or keep an eye on our Twitter for the big announcement.
Once weāve announced beta, users should be able to expect increased stability as weāll be taking our lead from kubernetes and mirroring their deprecation policy, for example any breaking changes will need to be rolled out across 9 months or 3 releases (whichever is longer).
And once we get to beta, why stop there? Weād love to be able to offer users GA stability as soon as we possibly can. After we get to beta, weāll be looking to progress the types that we didnāt promote to beta (e.g. Conditions), add any important features we donāt yet have (weāre looking at you on failure handling and āpause and resumeā aka āthe feature that enables manual approvalā!), and then we should be ready to announce GA!
Task Interfaces and PipelineResources
Speaking of types that wonāt be going beta right away: PipelineResources! PipelineResources are a type in Tekton that is meant to encapsulate and type data as it moves through your Pipelines, e.g. an image you are building and deploying, or a git commit youāre checking out and building from.
This concept was introduced early on in Tekton and bares a close resemblance to Concourse resources. However as we started trying to add more features to them, we started discovering some interesting edges to the way we had implemented them that caused us to step back and give them a re-think. Plus, some folks in our community asked the classic question āwhy PipelineResourcesā and we found our answer wasnāt as clear as weād like!
As we started down the path of re-designing, and re-re-designing again, we started to get some clarity on what exactly it was we were trying to create: the interface between Tasks in a Pipeline! And thanks to a revolutionary request to improve our support for volumes, we finally feel we are on the right path! The next steps along this path are to add a few key features, namely the concept of workspaces (i.e. files a Task operates on) and allow Tasks to output values (aka āresultsā).
Once we have these in place weāll revisit our designs and our re-designs.
tekton.dev
Hand in hand with our beta plans, weāre revamping our website! Soon at tekton.dev youāll be able to find introductory material, tutorials, and versioned docs.
The Tekton Catalog
Besides making it easy for folks to implement cloud native CI/CD, one of the most important goals of Tekton is for folks to be able to share and reuse the components that make up your Pipeline. For example, say you want to update Slack with the results of a Task – wouldnāt it be great if there were one battle tested way to do that, with a clean interface?
Thatās what the Tekton catalog is all about! To date weāve received more than 20 Tasks from the community to do everything from running Argo CD to testing your configuration with conftest.
But thereās so much more we want to do! We want to offer versioning and test guarantees that can make it painless for folks to depend on Tasks in the Catalog – and for companies to create Catalogs of their own.
Plus, the Catalog is a great place for us to build better interoperability even between the Tekton projects, for example with the Task that runs tkn (the Tekton CLI).
Shout outs š»
A community is nothing without its users, contributors, adopters and friends, so we want to explicitly shout outs to our community for their tremendous effort and support in 2019 and hopefully even more in 2020.
Friends
Weāve gained friends and more are always welcome! Our current list of āknown friendsā includes:
- Alibaba
- Ant Financial
- Cloudbees
- Elastic
- IBM
- Puppet
- Red Hat
- TriggerMesh
We welcome friend requests! Please submit a PR to https://github.com/tektoncd/friends, this repository acts as a place that allows members of the ecosystem (known as “Tekton Friends”) to self-report in a way that is beneficial to everyone. Weād love to have you as a friend if your company is using Tekton and/or contributing to it š
Projects
Adoption of Tekton has grown and became a part of both free and commercial offerings by various companies, demonstrating that Tektonās valuable and ready for anything
In mid-2019, Puppet launched a new cloud-native CD service called Project Nebula that’s built on Tekton Pipelines. It provides a friendly YAML workflow syntax and niceties like secrets management and a spiffy GUI on top of Tekton instance running in GCP. To coincide with the public beta of Nebula, Scott Seaward keynoted at the Puppetize PDX user conference to talk about how Tekton works under the hood. Since then, the Nebula team has contributed several PRs to the Pipelines repo and are looking forward to working on step interoperability, triggers, and other awesome upstream features in 2020.
Other notable examples include:
- Jenkins X
- OpenShift Pipelines
- IBM Cloud DevOps and Kabanero
- https://github.com/rancher/rio
- https://github.com/google/kf
Talks, Tweets and Moar š£
It has been such a privilege to see more and more people get excited about Tekton and share it with the world! Here are some (but not all!!) of the great talks and tweets we saw about Tekton in 2020, not to mention our Tekton contributor summit!
- Puppetize Keynote
- Debugging Tekton Pipelines
- Next Generation CI/CD with GKE and Tekton (Cloud Next ’19)
- Modern CI/CD with Tekton and Prow Automated via Jenkins X
- Releasing Elasticsearch with Tekton
- Building a ChatOps bot with Tekton
- Simple CI/CD with Tekton and the Tekton Webhooks Extension
- Tekton Pipelines for vscode
- Russian Doll: Extending Containers with Nested Processes
- Multiple Tekton talks coming up at Fosdem
- Tekton vs. Jenkins X at DevConf Czech Republic
- Our first stackoverflow question
- How to Build Cloud-Native CI/CD Pipelines with Tekton on Kubernetes
- Marioās adventures in Tekton land
- A Series of Fortunate Cloud Events
- Applying Policy Throughout the Application Lifecycle with Open Policy Agent
- Running Tekton in a GitHub Action
- Cloud Native Buildpacks integration with Tekton
- From Sheepdogs to Robot Cats
- Netflix, Google Talk Continuous Delivery at DevOps World
- Our first meme
- Tekton at Open Source Summit Japan
- Tekton at Devoxx France
Contributors
Huge shoutouts to all of the tektoncd projects contributors ā¤ļøā¤ļøā¤ļø:
- tektoncd/pipeline contributors
- tektoncd/cli contributors
- tektoncd/dashboard contributors
- tektoncd/triggers contributors
- tektoncd/catalog contributors
- tektoncd/operator contributors
- tektoncd/plumbing contributors
- tektoncd/experimental contributors
If you are even more curious on the contributions happening in the tektoncd project, you can visit the tekton.devstats.cd.foundation site (e.g. a page showing the overall contributors on all tektoncd projects).
Join us!
If you are interested in contributing to Tekton, weād love to have you join us! Every tektoncd project has a CONTRIBUTING.md that can point you in the right direction, and our community contains helpful links and guidelines. Feel free to open issues, join slack, or pop into one of our working groups! Hope to see you soon š