<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tekton on Backend Engineering Strategy Tools</title><link>https://backend-engineering-strategy-tools.github.io/site/tags/tekton/</link><description>Recent content in Tekton on Backend Engineering Strategy Tools</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Mon, 01 Jan 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://backend-engineering-strategy-tools.github.io/site/tags/tekton/index.xml" rel="self" type="application/rss+xml"/><item><title>CI/CD Platforms</title><link>https://backend-engineering-strategy-tools.github.io/site/public-notes/cicd/platforms/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://backend-engineering-strategy-tools.github.io/site/public-notes/cicd/platforms/</guid><description>&lt;p&gt;There are many CI/CD platforms and the choice between them matters less than it appears. All of them are thin orchestration wrappers — trigger on a git event, run some steps, report the result. The build logic itself should live in &lt;a class="link" href="https://backend-engineering-strategy-tools.github.io/site/public-notes/cicd/make/" &gt;Make&lt;/a&gt; or &lt;a class="link" href="https://backend-engineering-strategy-tools.github.io/site/public-notes/cicd/dagger/" &gt;Dagger&lt;/a&gt;, not inside the pipeline definition. See &lt;a class="link" href="https://backend-engineering-strategy-tools.github.io/site/thinking/one-command-any-pipeline/" &gt;One Command, Any Pipeline&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="cruisecontrol"&gt;CruiseControl
&lt;/h2&gt;&lt;p&gt;The early pioneer, released in 2001. CruiseControl introduced continuous integration as a practice — polling a source repository, building on every change, sending email on failure. Configuration was XML, the dashboard was a web page, and it ran on a server you managed yourself. Most of the concepts in modern CI trace back here. Largely historical today but worth knowing as the origin point.&lt;/p&gt;
&lt;h2 id="hudson"&gt;Hudson
&lt;/h2&gt;&lt;p&gt;Hudson was Sun Microsystems&amp;rsquo; take on CI — a Java application with a plugin ecosystem that made it far more extensible than CruiseControl. It gained wide adoption in enterprise Java shops during the late 2000s. When Oracle acquired Sun, the project forked. The community fork became Jenkins; the Oracle-maintained branch kept the Hudson name and eventually faded. Hudson is effectively dead.&lt;/p&gt;
&lt;h2 id="jenkins"&gt;Jenkins
&lt;/h2&gt;&lt;p&gt;The fork that won. Jenkins took Hudson&amp;rsquo;s plugin architecture and ran with it — today it has over 1800 plugins covering almost every tool in the ecosystem. A Jenkinsfile defines the pipeline as Groovy DSL and lives in the repository alongside the code. Jenkins is the most widely deployed self-hosted CI server and the default answer in many enterprises. The flip side: it is heavyweight, the Groovy DSL has sharp edges, and complex pipelines are difficult to test outside of Jenkins itself.&lt;/p&gt;
&lt;h2 id="jenkins-x"&gt;Jenkins X
&lt;/h2&gt;&lt;p&gt;Jenkins X is a cloud-native reimagining of Jenkins for Kubernetes. It imposes a strongly opinionated GitOps workflow — pull requests promote through environments, preview environments spin up automatically, everything is driven by Git events. Built on Tekton under the hood. If you want opinionated Kubernetes CI/CD without building the conventions yourself, Jenkins X is one answer. If you want more control over the pipeline structure, raw Tekton gives you the primitives without the opinions.&lt;/p&gt;
&lt;h2 id="tekton"&gt;Tekton
&lt;/h2&gt;&lt;p&gt;Kubernetes-native CI/CD where pipelines, tasks, and triggers are all Kubernetes CRDs — defined in YAML and applied to a cluster, running as pods. No separate CI server to maintain, no external SaaS dependency. CI runs in the same cluster as your workloads using the same RBAC, secrets, and storage primitives. The core primitives are &lt;code&gt;Task&lt;/code&gt; (a sequence of container steps), &lt;code&gt;Pipeline&lt;/code&gt; (an ordered set of tasks), &lt;code&gt;PipelineRun&lt;/code&gt; (an execution), and &lt;code&gt;Trigger&lt;/code&gt; (an event listener that creates runs). The pattern that works well: keep Tasks thin and have them call &lt;code&gt;make &amp;lt;target&amp;gt;&lt;/code&gt; — Tekton handles orchestration, Make handles logic.&lt;/p&gt;
&lt;h2 id="github-actions"&gt;GitHub Actions
&lt;/h2&gt;&lt;p&gt;GitHub&amp;rsquo;s built-in CI/CD, available to any repository on GitHub. Zero infrastructure, zero setup — if your code is on GitHub, Actions is already there. Workflows are YAML files in &lt;code&gt;.github/workflows/&lt;/code&gt;, triggered by git events, running on GitHub-managed runners. A large marketplace of pre-built actions covers most common tasks. The zero-friction default for open source projects and small teams. See the &lt;a class="link" href="https://backend-engineering-strategy-tools.github.io/site/public-notes/cicd/github/" &gt;GitHub Actions&lt;/a&gt; note for more detail.&lt;/p&gt;
&lt;h2 id="argo-workflows"&gt;Argo Workflows
&lt;/h2&gt;&lt;p&gt;A Kubernetes-native workflow engine from the Argo project. Where Tekton models CI primitives (Tasks, Pipelines), Argo Workflows is a general-purpose DAG executor — it can run any containerised workload as a directed acyclic graph of steps, with fan-out, fan-in, conditionals, and retry logic. Widely used as the execution layer under other tools (including Dagger on Kubernetes). Pairs well with &lt;a class="link" href="https://backend-engineering-strategy-tools.github.io/site/public-notes/cicd/argo-cd/" &gt;ArgoCD&lt;/a&gt; for a fully Argo-based GitOps stack. See the &lt;a class="link" href="https://backend-engineering-strategy-tools.github.io/site/public-notes/cicd/argo-project/" &gt;Argo&lt;/a&gt; note for coverage of the full Argo ecosystem including Rollouts, Events, and Kargo.&lt;/p&gt;
&lt;h2 id="bitbucket-pipelines"&gt;Bitbucket Pipelines
&lt;/h2&gt;&lt;p&gt;Bitbucket&amp;rsquo;s built-in CI/CD, integrated directly with Atlassian&amp;rsquo;s hosting. If your code is already in Bitbucket, Pipelines is the zero-infrastructure option — the same position GitHub Actions occupies for GitHub users. Workflows are YAML, steps run in Docker containers, and Atlassian handles the runner infrastructure. Tightly integrated with Jira for deployment tracking. The right choice when you&amp;rsquo;re already in the Atlassian ecosystem and don&amp;rsquo;t want to introduce a separate CI tool.&lt;/p&gt;
&lt;h2 id="harness"&gt;Harness
&lt;/h2&gt;&lt;p&gt;A commercial platform with a broader scope than most CI/CD tools — it covers CI, CD, feature flags, cloud cost management, and security testing under one roof. Enterprise-focused, with AI-assisted pipeline generation and strong support for policy and governance across large engineering organisations. Harness is the answer when the organisation needs a managed platform with SLAs, support, and audit trails rather than self-hosted infrastructure. Pricing reflects that positioning.&lt;/p&gt;
&lt;h2 id="resources"&gt;Resources
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://tekton.dev/docs/" target="_blank" rel="noopener"
 &gt;Tekton documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.jenkins.io/doc/" target="_blank" rel="noopener"
 &gt;Jenkins documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://jenkins-x.io/docs/" target="_blank" rel="noopener"
 &gt;Jenkins X documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://argoproj.github.io/argo-workflows/" target="_blank" rel="noopener"
 &gt;Argo Workflows documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://support.atlassian.com/bitbucket-cloud/docs/bitbucket-pipelines/" target="_blank" rel="noopener"
 &gt;Bitbucket Pipelines documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://developer.harness.io/" target="_blank" rel="noopener"
 &gt;Harness documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>