Skip to content

feat: introduce base-slim and golang images to streamline builds - #81

Merged
dclong merged 4 commits into
mainfrom
dev
Sep 30, 2026
Merged

dclong merged 4 commits into
mainfrom
dev

Conversation

@dclong

@dclong dclong commented Sep 30, 2026

Copy link
Copy Markdown
Contributor

Summary

  • feat: introduce base-slim and golang images to streamline builds

Changed files

Added

  • base-slim/Containerfile (+35/-0)
  • golang/Containerfile (+19/-0)
    Modified
  • base/Containerfile (+3/-0)
  • images.yaml (+25/-18)
  • jupyterhub-more/Containerfile (+10/-5)
  • lint/Containerfile (+12/-17)
  • rust/Containerfile (+7/-3)
    Removed
  • rust/scripts/pre-010-rust.sh (+0/-3)
    Renamed
  • base-slim/scripts/purge_cache.sh (+0/-0)

Commits

@dclong

dclong commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor Author

Claude finished @dclong's task in 35s —— View job


Review of PR #81: introduce base-slim and golang images

I read the diff and did not build any images. I could not run /code-review:code-review, so this is a manual review.

What it does: adds base-slim (fedora-minimal plus git, tar, gzip and icon) and golang (Go and golangci-lint pinned in one place). rust, lint and jupyterhub-more now build on or copy from these, and images.yaml is reordered to match. purge_cache.sh moves from base/ to base-slim/, and base copies it back with COPY --from.

Issues to verify before merging

  1. golangci-lint location is unverified.

    • lint/Containerfile:65 and jupyterhub-more/Containerfile now copy only /usr/local/go from golang:next.
    • The old lint image also copied /usr/bin/golangci-lint to /usr/local/bin. That copy is gone.
    • golang/Containerfile installs Go with icon golang -i --go-version ... --golangci-lint-version .... I couldn't confirm where icon puts the golangci-lint binary.
    • If it lands outside /usr/local/go (for example /usr/local/bin, ~/go/bin or a symlink), both images will lose golangci-lint without any build error.
    • The comment in jupyterhub-more claims golangci-lint "on PATH" comes from this copy, so check that it does.
    • Please run golangci-lint --version in a built lint and jupyterhub-more. If it is missing, also COPY the binary's real path.
  2. Bootstrap ordering.

    • base now depends on quay.io/legendu/base-slim:next existing in the registry.
    • images.yaml orders the builds correctly.
    • The first build will fail if base-slim:next hasn't been pushed, for example if someone builds base alone or in parallel.

Non-blocking notes

  • rust/scripts/pre-010-rust.sh (export CARGO_HOME=) is gone, and rust no longer includes base's init.sh and related scripts. That is reasonable for a non-interactive image, but check that nothing relies on the CARGO_HOME reset.
  • The icon version is pinned by hand in base-slim (ARG ICON_VERSION=v0.51.0) and in base. Nothing checks that they stay in sync, which the comment admits. Consider a check in check_versions.py.
  • purge_cache.sh has a #!/bin/bash shebang. Bash is present in fedora-minimal, so this should be fine.

I am not adding the auto-merge approval token, because item 1 is unverified and could silently drop a tool.

dclong and others added 2 commits September 30, 2026 13:48
build: copy icon binary from base-slim instead of installing it directly
@dclong

dclong commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor Author

Claude finished @dclong's task in 19s —— View job


Review of PR #81: introduce base-slim and golang images

I read the Containerfiles and images.yaml changes and did not build any images. The /code-review:code-review command was not run; this is a manual review.

Blocking issue to verify (golangci-lint location)

  • lint/Containerfile:65 and jupyterhub-more/Containerfile:38 now copy only /usr/local/go from golang:next.
  • The old lint image also copied /usr/bin/golangci-lint to /usr/local/bin. That line is gone.
  • golang/Containerfile installs both tools with icon golang -i --go-version ... --golangci-lint-version .... I could not check icon's source here, so I don't know whether golangci-lint ends up under /usr/local/go/bin. The jupyterhub-more comment implies it does, but nothing confirms it.
  • If it lands elsewhere (for example ~/go/bin or /usr/local/bin), lint and jupyterhub-more will lose golangci-lint and the build will not fail.
  • To check: run golangci-lint --version in a built golang, lint and jupyterhub-more. A cheap guard is RUN golangci-lint --version at the end of golang/Containerfile, plus the same check in lint.

Bootstrap ordering

  • base, rust and golang now need quay.io/legendu/base-slim:next to be in the registry.
  • images.yaml orders the builds correctly. Building base alone on a fresh registry will fail.

Non-blocking notes

  • Deleting rust/scripts/pre-010-rust.sh (export CARGO_HOME=) is fine for a non-interactive image. Check that nothing relied on it.
  • The icon version is pinned only in base-slim (ARG ICON_VERSION). base now copies the binary, so there is a single source of truth. The workflow change I saw updates it consistently.
  • The purge_cache.sh shebang is #!/bin/bash. Bash is present in fedora-minimal, so this should be fine.

I am not approving auto-merge, because the golangci-lint copy is unverified and could silently drop a tool.

@dclong
dclong merged commit cf640e8 into main Sep 30, 2026
13 of 14 checks passed
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