Skip to content

build: replace kit with Tilt for local development and CI#41

Closed
Joibel wants to merge 52 commits into
mainfrom
replace-kit-with-tilt
Closed

build: replace kit with Tilt for local development and CI#41
Joibel wants to merge 52 commits into
mainfrom
replace-kit-with-tilt

Conversation

@Joibel

@Joibel Joibel commented Jun 5, 2026

Copy link
Copy Markdown
Owner

Draft PR to exercise CI on the fork before proposing upstream.

Replaces kit (tasks.yaml) with Tilt for local dev and CI e2e. See the commit message for the full breakdown. Key CI changes under test here:

  • e2e jobs build and deploy via tilt up -- --mode=ci, kept running through the test steps so Tilt's port-forwards serve the tests (replaces kubeauto); readiness gated on tilt wait
  • use-api / secure / retries matrix keys are honoured again (--api, --secure + HTTPS probe patch, TEST_RETRIES)
  • Tilt and k3d pinned via the Makefile (renovate-managed)
  • kubelet image-GC protection applied by hack/tilt/k3d-up.sh

🤖 Generated with Claude Code

@Joibel
Joibel force-pushed the replace-kit-with-tilt branch from 282da97 to 3729f4a Compare June 5, 2026 15:23
@Joibel
Joibel force-pushed the main branch 2 times, most recently from a7c89b3 to ec715a4 Compare June 5, 2026 16:05
@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown

👋 PR readiness check

Thanks for your contribution! A few automated checks need attention before a maintainer reviews — these are all things you can fix yourself:

PR description / template

The PR description does not appear to follow the template:

  • Fixes: Description contains 'Fixes #TODO', which is not valid
  • AI: AI section is incomplete, still has the placeholder comment
  • Motivation: Motivation section is empty, no content provided
  • Modifications: Modifications section is empty, no content provided
  • Verification: Verification section is empty, no content provided
  • Documentation: Documentation section is empty, no content provided

(Advisory — based on an automated read of your description. A maintainer may waive this.)


🤖 Automated PR-readiness helper — it re-checks each time CI finishes. Unit/E2E test results are not covered here. Questions? See the contributing guide or ask a maintainer.

@Joibel
Joibel force-pushed the replace-kit-with-tilt branch 6 times, most recently from 21ab0af to e93727a Compare June 8, 2026 08:26
@Joibel
Joibel force-pushed the main branch 2 times, most recently from 8bf2a9b to 6ffde08 Compare June 16, 2026 10:40
@Joibel
Joibel force-pushed the main branch 2 times, most recently from 98154de to cec6396 Compare June 29, 2026 10:38
renovate Bot and others added 15 commits July 1, 2026 13:32
…roj#16324)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…oproj#16326)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…oproj#16325)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…j#16323)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…roj#16343)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: Alan Clucas <alan@clucas.org>
Signed-off-by: Alan Clucas <alan@clucas.org>
The update-gomod2nix workflow installed gomod2nix via
`nix profile install github:nix-community/gomod2nix`, which builds it
against upstream gomod2nix's own stale nixpkgs (an older Go) with
GOTOOLCHAIN=local. That Go — not the one on PATH — runs `go mod
download`, so it failed with `go.mod requires go >= 1.26.1 (running go
1.24.5)`.

Install from the repo's own dev/nix flake instead. Its overlay builds
gomod2nix against the Go version pinned in dev/nix/conf.nix (single
source of truth, kept in sync with go.mod). Export gomod2nix from the
flake's packages, bump the flake.lock nixpkgs so go_1_26 (>=1.26.1) is
available, and drop the now-redundant setup-go step.

Signed-off-by: Alan Clucas <alan@clucas.org>

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…s action to v5.0.5 (argoproj#16321)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…oj#16337)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…Rs (argoproj#16319)

Signed-off-by: Alan Clucas <alan@clucas.org>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…rgoproj#16339)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…roj#16333)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate Bot and others added 28 commits July 2, 2026 10:00
…o to v0.43.0 (main) (argoproj#16335)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…argoproj#16043)

Signed-off-by: isubasinghe <isitha@pipekit.io>
Signed-off-by: Alan Clucas <alan@clucas.org>
Co-authored-by: Alan Clucas <alan@clucas.org>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…rgoproj#16346)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…o/modules/postgres to v0.43.0 (main) (argoproj#16351)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…argoproj#16330)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…in) (argoproj#16327)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…o/modules/mysql to v0.43.0 (main) (argoproj#16350)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…entity to v1.14.0 (main) (argoproj#16349)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…goproj#16359)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
….2.0 (main) (argoproj#16361)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…in) (argoproj#16355)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…rgoproj#16358)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
argoproj#16360)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…4.0.6 (main) (argoproj#16363)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…main) (argoproj#16362)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…in) (argoproj#16368)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…32.27 (main) (argoproj#16364)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…v0.21.7 (main) (argoproj#16367)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…uth to v1.6.30 (main) (argoproj#16366)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: Alan Clucas <alan@clucas.org>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
… comparison (argoproj#16357)

Signed-off-by: Alan Clucas <alan@clucas.org>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: isubasinghe <isitha@pipekit.io>
argoproj#16374)

Signed-off-by: Alan Clucas <alan@clucas.org>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…6373)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Replace kit (tasks.yaml) with Tilt as the orchestrator for local
development and CI e2e builds:

- Add a Tiltfile that builds the controller, server and executor images
  and runs them in-cluster on k3d. Dev mode (`tilt up`) compiles
  binaries on the host and copies them into lightweight alpine images
  for fast rebuilds; CI mode (`--mode=ci`) builds the real distroless
  production targets for parity.
- Plumb the Makefile-controlled settings through Tilt flags so the old
  `make start` env vars keep working in-cluster: --auth-mode (sso for
  PROFILE=sso), --secure (TLS server + HTTPS readiness probe),
  --api=false (skip the server and its image build) and
  --pod-status-capture-finalizer.
- Tilt port-forwards the Argo Server, controller metrics and the
  profile's backing services (MinIO, MySQL/Postgres, Dex), so e2e
  tests and SSO logins work over localhost with no extra tooling.
- Add hack/tilt/k3d-up.sh and k3d-down.sh to create/destroy the
  cluster, pinned to the centrally-defined supported Kubernetes
  versions and applying the kubelet config that stops images being
  GC'd mid-test-run. Images are delivered with `k3d image import`, so
  no registry is required.
- Add an in-cluster-argo kustomize component (replacing local-argo,
  which ran the controller and server as host processes).
- CI e2e jobs run `tilt up` in the background through the test steps
  (gated on `tilt wait`), dropping the separate build-binaries and
  argo-images jobs and honouring the use-api/secure/retries matrix
  keys. Tilt and k3d are version-pinned via the Makefile and updated
  by renovate.
- Update running-locally.md, the devcontainer and the Makefile
  accordingly; remove tasks.yaml.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Alan Clucas <alan@clucas.org>
Add an opt-in `--debug=controller,server` Tilt flag (surfaced as
`make start DEBUG=...`) that runs the named components under headless
Delve for IDE attach:

- compile with `-gcflags=all=-N -l` (no optimisation/inlining)
- wrap the in-cluster command with `dlv exec --headless --continue
  --accept-multiclient`, add SYS_PTRACE, relax readOnlyRootFilesystem,
  and forward the Delve port (2345 controller, 2346 server)
- set the compile to manual trigger mode so editing source doesn't
  recreate the pod out from under a live debug session
- disable leader election on the controller so pausing at a breakpoint
  doesn't drop its lease and make it exit

The dev images bake in `dlv`; VS Code attach configs (devcontainer.json)
point at the forwarded ports. Ignored under `tilt ci`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Alan Clucas <alan@clucas.org>
Migrate the Nix dev environments off the old kit/host-process flow so
they build and run the stack in-cluster via Tilt, matching `make start`:

- devenv.nix: add tilt/k3d/kubectl; replace the workflow-controller,
  argo-server, ui and kubeauto host processes with a single `tilt up`
  process; create the cluster with `make k3d-up`; drop the `make install`
  manifest sync (Tilt applies manifests itself).
- dev/nix/flake.nix: add tilt to both devShells, create the Tilt cluster
  via `make k3d-up`, and drop the stale kubeauto port-forward messaging.
- .devcontainer/pre-build.sh: install Tilt after the cluster is created.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Alan Clucas <alan@clucas.org>
@Joibel
Joibel force-pushed the replace-kit-with-tilt branch from 1f1bee6 to de434bc Compare July 3, 2026 14:32
@Joibel Joibel closed this Jul 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants