container environments • Jenkins needs babysitting and it become an overhead quickly* • Jenkins conﬁguration is brittle • Jenkins doesn’t ﬁt microservices team structures • Jenkins plugins mania • Jenkins at customers is often outside OpenShift, or is a self-created image • OpenShift Pipelines don’t replace Jenkins UI • OpenShift Pipelines are not standard Kubernetes objects (CRD) * https://jenkins.io/blog/2018/08/31/shifting-gears/
Pipelines project provides Kubernetes-style resources for declaring CI/CD-style pipelines.” “A Neutral Home for the Next Generation of Continuous Delivery Collaboration” Contributors: Google Red Hat CloudBees IBM …
• Run on Kubernetes • Have Kubernetes clusters as a ﬁrst class type • Use containers as their building blocks Tekton Pipelines are Decoupled: • One Pipeline can be used to deploy to any k8s cluster • The Tasks which make up a Pipeline can easily be run in isolation • Resources such as git repos can be easily swapped between runs Tekton Pipelines are Typed: • The concept of typed resources means that for a resource such as an Image, implementations can easily be swapped out (e.g. building with kaniko v.s. buildah)
Kubernetes with custom types : deﬁnitions. Task Step Step Pipeline Task Task Task Task Task • Task is a collection of sequential steps you would want to run as part of your continuous integration ﬂow. A task will run inside a container on your cluster. ◦ Steps run on the same node • Pipeline is a collection tasks you want to run as part of your continuous integration ﬂow. Tasks will be executed as a graph (Tasks can depend on each others). ◦ Tasks run on different nodes ◦ Link input and outputs
Kubernetes with custom types: runtimes. Pipeline Run Task Run Pipeline Resource • PipelineResource is an object that is used as Input or Output for a Task. • TaskRun represents an execution of a Task. It binds a Task with resources (PipelineResource) and other constructs (parameters, service accounts, …). • PipelineRun represents an execution of a Pipeline. It binds a Pipeline and its Tasks with resources and other constructs (parameters, service accounts, …).
myproj @ master https://prod.cluster End to End Pipeline End to End Pipeline End to End Pipeline quay.io/ staging-images github.com/myorg/ myproj @ 176efe9 https://staging.cluster quay.io/my-images github.com/myorg/ myproj @ 9af7ced https://my.cluster
application and can "scale to zero". Events Common infrastructure for consuming and producing events that will stimulate applications. Knative is "...an extension to Kubernetes exposing building blocks to build modern, source-centric, and container-based applications that can run anywhere". Build A pluggable model for building artifacts, like jar ﬁles, zips or containers from source code. Tekton Pipeline Knative Can be swapped, e.g with Tekton pipelines
(35 minutes speaking) + 10 minutes Q&A • Steve - 10 minutes ◦ Context, very brief history of pipelines in OpenShift, ◦ Some background on how Knative and Tekton got started • Vincent - 25 minutes ◦ Who am I impersonate ◦ Describe the app, workflow steps, … ◦ Let's deploy my first application (either manually or using the ci/cd) using knative ◦ Let's do some live changes, commit… ◦ … and watch things going \o/ ◦ Conclusion ▪ Overview of what Knative offers for dev'