Skip to content

containers: add build images and the Build Images workflow - #62

Open
KonradBreitsprecherBkd wants to merge 2 commits into
mainfrom
feature/build-containers
Open

KonradBreitsprecherBkd wants to merge 2 commits into
mainfrom
feature/build-containers

Conversation

@KonradBreitsprecherBkd

@KonradBreitsprecherBkd KonradBreitsprecherBkd commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

The packaging containers move into this repository, so the packages no longer depend on sil-kit-docker-build (outdated, private images) or on internal images. Part 1 of 3, followed by #64 (tarballs) which builds on these images.

Images

containers/ Base Toolchain Used for
ubuntu-2004 ubuntu:20.04 gcc 9, clang 10 deb + tarball, Ubuntu 20.04
ubuntu-2204 ubuntu:22.04 clang arm64 deb (arm64 runner)
centos-7 centos:7 devtoolset-11, rh-python38 el7 tarball
alma-8 almalinux:8 gcc-toolset-12 el8 tarball
fedora-40 fedora:40 fedpkg/mock el9 rpm

The Ubuntu package lists follow ptv/docker-images dockerfiles/sil-kit-build, which is what the delivery builds use today.

Only public, pinned sources

  • Base images are pinned by digest.
  • apt reads from a fixed snapshot.ubuntu.com timestamp. ca-certificates comes from the regular archive first, because the snapshot is https only.
  • CentOS 7 reads from vault.centos.org (base, extras, SCLo), which is frozen.
  • CMake 4.3.4 comes from the Kitware release and is checked by sha256.
  • On CentOS 7, ninja 1.13.2 comes from the PyPI manylinux2014 wheel and is checked by sha256. The GitHub release binary needs GLIBCXX_3.4.21 and does not run on CentOS 7.
  • Every image writes its installed package versions to /etc/sil-kit-pkg-image-packages.txt.

.gitattributes keeps *.sh and Dockerfile at LF, so builds from Windows checkouts work.

Workflow

build-images.yml builds all images on pull requests that touch containers/**. On main it pushes them to ghcr.io/vectorgrp/sil-kit-pkg/<name> (:main, :sha-<short>) and writes the digests to the job summary.

After merging

Tested

I built ubuntu-2004, centos-7 and alma-8 locally with podman. Locally the corporate CA had to be injected temporarily; the committed Dockerfiles do not contain it. All three were then used for full package builds (see #64). ubuntu-2204 (arm64) and fedora-40 are only built by CI.

🤖 Generated with Claude Code

The packaging containers move into this repository, so sil-kit-pkg no longer
depends on sil-kit-docker-build or on internal images:

- ubuntu-2004: deb and tarball for Ubuntu 20.04 (package list as in
  ptv/docker-images dockerfiles/sil-kit-build/ubuntu-2004)
- ubuntu-2204: arm64 deb
- centos-7: el7 tarball with devtoolset-11 and rh-python38
- alma-8: el8 tarball with gcc-toolset-12
- fedora-40: el9 rpm via mock (from sil-kit-docker-build packaging-fedora)

Only public sources: base images pinned by digest, apt from a fixed
snapshot.ubuntu.com timestamp, CentOS 7 from vault.centos.org, CMake from the
Kitware release and ninja from the PyPI wheel, both checked by sha256. The
ninja release binary needs GLIBCXX_3.4.21 and does not run on CentOS 7.

build-images.yml builds all images on pull requests and pushes them to
ghcr.io/vectorgrp/sil-kit-pkg/<name> (tags main and sha-<short>) on main.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
snapshot.ubuntu.com does not serve ubuntu-ports (401), so the arm64 image
reads the regular ports archive; its digest in release/packages.json pins it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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