Skip to main content

gtsam-ci-image

Create or update GTSAM CI Docker images in borglab/docker-images. Use when adding a new Ubuntu/compiler image such as ubuntu-26.04-gcc-15, updating gtsam-ci Dockerfiles, testing image tags used by GTSAM GitHub Actions, or guiding a maintainer through building and publishing GTSAM CI images to Docker Hub.

Datos de origen

Repositorio
borglab/docker-images
Última actividad en el origen
12 de mayo de 2026 a las 16:55
Idioma detectado de SKILL.md
inglés
Estrellas
1
Forks
3

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Explorador de archivos
4 archivos

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
gtsam-ci-image
description
Create or update GTSAM CI Docker images in borglab/docker-images. Use when adding a new Ubuntu/compiler image such as ubuntu-26.04-gcc-15, updating gtsam-ci Dockerfiles, testing image tags used by GTSAM GitHub Actions, or guiding a maintainer through building and publishing GTSAM CI images to Docker Hub.
# GTSAM CI Image ## Scope Work from the `docker-images` repository, especially `gtsam-ci/`. The GTSAM repository consumes these images from GitHub Actions as: ```text borglab/gtsam-ci:${{ matrix.os }}-${{ matrix.compiler }}-${{ matrix.version }} ``` The image tag and Dockerfile basename must match: ```text gtsam-ci/ubuntu-<ubuntu-version>-<compiler>-<compiler-version>.Dockerfile borglab/gtsam-ci:ubuntu-<ubuntu-version>-<compiler>-<compiler-version> ``` Examples: `ubuntu-22.04-gcc-11`, `ubuntu-24.04-gcc-14`, `ubuntu-24.04-clang-16`. ## Workflow 1. Inspect `gtsam-ci/README.md`, existing `gtsam-ci/*.Dockerfile`, and the target GTSAM workflow that will consume the image. 2. Choose the nearest existing Dockerfile as the pattern. 3. If the Ubuntu version is new, add `ubuntu-<version>-base.Dockerfile` first and keep dependencies consistent with the closest maintained base image. 4. Add the compiler-specific Dockerfile: - Set `FROM borglab/gtsam-ci:ubuntu-<version>-base`. - Install the exact compiler packages, such as `g++-15 g++-15-multilib binutils-gold`. - Set `CC`, `CXX`, `LDFLAGS`, `CMAKE_EXE_LINKER_FLAGS`, and `CMAKE_SHARED_LINKER_FLAGS` consistently with existing GCC/Clang images. - Keep `ENTRYPOINT ["bash", ".github/scripts/unix.sh", "-t"]`. 5. Update `gtsam-ci/README.md` so the image list documents the new base/compiler variant. 6. Build and smoke test locally before proposing workflow changes in `borglab/gtsam`. 7. Guide, but do not perform, any Docker Hub push unless the maintainer explicitly asks for that external action. 8. After the image is published, update the consuming GTSAM workflow matrix and comments in the GTSAM repository. ## Commands Build one image from the `docker-images` repository root: ```bash docker build -t borglab/gtsam-ci:<tag> -f gtsam-ci/<tag>.Dockerfile gtsam-ci ``` Smoke test one built image from the repository root: ```bash .agents/skills/gtsam-ci-image/scripts/smoke_test_image.sh <tag> ``` Smoke test against a local GTSAM checkout: ```bash .agents/skills/gtsam-ci-image/scripts/smoke_test_image.sh <tag> /path/to/gtsam ``` If the maintainer wants to publish only the new tag, ask for confirmation first, then guide them through: ```bash docker login docker push borglab/gtsam-ci:<tag> ``` After the maintainer confirms the image has been pushed or built by Docker Hub, include optional local cleanup commands for any tags built during validation: ```bash docker image rm borglab/gtsam-ci:<tag> docker buildx prune -f ``` If a new base image was also built, include its tag in the same `docker image rm` command. Note that `docker buildx prune -f` removes unused BuildKit cache beyond this one image family and can make future local Docker rebuilds slower. `gtsam-ci/build_and_push.sh borglab` builds and pushes every image in `gtsam-ci/`; mention that broader blast radius before recommending it. ## Validation Use `references/release-checklist.md` when preparing the maintainer-facing upload instructions. Use `scripts/smoke_test_image.sh` for local validation when Docker is available. When Docker is unavailable or the image cannot be built locally, say that explicitly and provide the exact commands the maintainer should run. Never assume a tag exists on Docker Hub just because a Dockerfile exists locally. Verify by pulling it or treat publication as a required maintainer step.
Ver en GitHub