|
| 1 | +--- |
| 2 | +title: "Slowly going mad with power using Tekton" |
| 3 | +desc: "Starting the slow migration off of GitHub, one CI pipeline at a time" |
| 4 | +date: 2026-05-09 |
| 5 | +hero: |
| 6 | + ai: "Photo by Xe Iaso" |
| 7 | + file: "" |
| 8 | + prompt: "" |
| 9 | + social: false |
| 10 | +--- |
| 11 | + |
| 12 | +- I'm not feeling good about the future of GitHub |
| 13 | + - https://red-squares.cian.lol/ |
| 14 | + - I have a bunch of repos I'd like to migrate off of GitHub |
| 15 | + - One small problem: all my CI flows assume I'm using GitHub Actions |
| 16 | + - I mean this is reasonable, I've used GitHub Actions for most of my career |
| 17 | + - All my GitHub Actions flows only really work on GitHub |
| 18 | + - I've moved some of them off of GitHub in the past, but it requires some significant modification and hacking because my actions really rely on GitHub platform features |
| 19 | + - Recently I discovered [Tekton](https://tekton.dev/) |
| 20 | + - Tekton is a kubernetes operator that lets you create CI/CD systems on top of Kubernetes clusters |
| 21 | + - I have a lot of slack compute in my homelab cluster |
| 22 | + - I want to see what it's like to use Tekton for CI/CD instead of GitHub Actions |
| 23 | + - Tekton is also supported by [Tack](https://tangled.org/mitchellh.com/tack), a Tangled -> non-Nix CI bridge |
| 24 | + - If I do in fact choose to not move my repos to Tangled long-term, moving the CI to Tekton means that my CI workflows will be fundamentally vendor-neutral, which will have knock-on effects that make me more resilient to enshittification in the future |
| 25 | +- Tekton in a nutshell |
| 26 | + - Think about Tekton as the layer _under_ something like GitHub Actions. |
| 27 | + - It uses Kubernetes for scheduling, storage, networking, logging, and other orchestration |
| 28 | + - CI/CD jobs are broken out into the following categories: |
| 29 | + - Tasks: individual bits of work to be done, akin to function definitions |
| 30 | + - TaskRuns: binding between Tasks and parameters / workspaces, akin to function invocation |
| 31 | + - Pipeline: A sequence of tasks that may or may not be ordered, akin to function definitions |
| 32 | + - PipelineRun: binding between Pipelines and parameters / workspaces, akin to function invocation |
| 33 | +- A simple pipeline from Kefka |
| 34 | + - Fix permissions on the PVC with repo clone |
| 35 | + - Why? |
| 36 | + - Clone repo |
| 37 | + - Go tests |
| 38 | + - Shared Go mod cache PVC |
| 39 | + - Why? |
| 40 | + - Docker image building |
| 41 | +- Docker image building |
| 42 | + - Setting up automatic builds for ChainGuard's fork of Kaniko |
| 43 | + - `go build` exiting with a vague VCS error |
| 44 | +- |
0 commit comments