Skip to content

ci(nix): release from the development shell, and stop compiling in Dockerfiles - #50

Open
Joibel wants to merge 1 commit into
tb-ufbi.6-pr6from
tb-ufbi.7-pr7
Open

ci(nix): release from the development shell, and stop compiling in Dockerfiles#50
Joibel wants to merge 1 commit into
tb-ufbi.6-pr6from
tb-ufbi.7-pr7

Conversation

@Joibel

@Joibel Joibel commented Jul 30, 2026

Copy link
Copy Markdown
Owner

Based on PR #49

Chain of upstream PRs as of 2026-07-30

Fixes #TODO

Motivation

Modifications

Verification

Documentation

AI

🤖 Generated with Claude Code

https://claude.ai/code/session_01H871PuNyYPzjmpUhXCRXGA

@Joibel Joibel self-assigned this Jul 30, 2026
…ckerfiles

The release built Argo three more times, each with its own Go toolchain: a
`golang:alpine` builder stage in `Dockerfile`, a Chocolatey-installed Go on a
Windows servercore stage in `Dockerfile.windows`, and `actions/setup-go` in the
CLI matrix — none of which the development shell pins, and all of which had to
be moved by hand when go.mod moved.

Every binary is now compiled by `nix develop --command make dist/...`, and the
Dockerfiles only assemble what comes out:

* `Dockerfile` loses its `builder` and `argo-ui` stages. The production stages
  COPY from `dist/`, as the Tilt dev stages already did. The only compiler left
  is a small stage that builds Delve for those dev images; `/etc/mime.types`,
  which used to come from the builder, comes from Alpine.
* `Dockerfile.windows` no longer installs Go, make, dep or git. `argoexec.exe`
  is cross-compiled from Linux and the Windows runner assembles the nanoserver
  image around it. Chocolatey stays for one thing the final image needs and
  nanoserver does not ship — the 7-Zip console binary — alongside servercore's
  netapi32.dll.
* `release.yaml` builds the UI, the CLI matrix, the image binaries and the
  release artefacts in the shell. This also settles the Node version: the UI
  was built with 24 here and 22 everywhere else.
* `make argoexec-image` and friends build their binary first, so they still
  work from a clean tree, and Tilt's CI mode compiles before it assembles.

buildx keeps building and pushing the multi-arch images; only what it packages
has changed. The Docker layer cache goes: with nothing compiled in the image
there is nothing left to cache but a base image and a binary that differs every
build, and the Go build cache — now keyed per target — does the work it did.

Deferred, as planned: derivation builds (buildGoModule + vendorHash), the UI in
Nix (fetchYarnDeps), and hermetic image contents.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H871PuNyYPzjmpUhXCRXGA
Signed-off-by: Alan Clucas <alan@clucas.org>
@Joibel
Joibel changed the base branch from tb-ufbi.4-pr4 to tb-ufbi.6-pr6 July 31, 2026 11:24
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.

1 participant