Sign inSign up

borglab/gtsam-ci

Sponsored OSS

By Georgia Institute of Technology

Updated 3 months ago

Images with prebuilt dependencies for running GTSAM on the Github Actions CI/CD.

Image
0

10K+

borglab/gtsam-ci repository overview

GTSAM CI Images

This directory contains Dockerfiles and scripts for generating Docker images used in the Continuous Integration (CI) pipelines for GTSAM.

Image Variants

The images are organized by Ubuntu version and Compiler version to ensure GTSAM compiles across different environments.

Base Images
  • ubuntu-22.04-base: Ubuntu 22.04 with common dependencies (CMake, Boost, Eigen, TBB, etc.).
  • ubuntu-24.04-base: Ubuntu 24.04 with common dependencies.
  • ubuntu-26.04-base: Ubuntu 26.04 with common dependencies.
Compiler-Specific Images

These extend the base images by setting up specific compilers.

Ubuntu 22.04:

  • ubuntu-22.04-clang-11: Clang 11
  • ubuntu-22.04-clang-14: Clang 14
  • ubuntu-22.04-gcc-9: GCC 9
  • ubuntu-22.04-gcc-11: GCC 11

Ubuntu 24.04:

  • ubuntu-24.04-clang-16: Clang 16
  • ubuntu-24.04-gcc-13: GCC 13
  • ubuntu-24.04-gcc-14: GCC 14

Ubuntu 26.04:

  • ubuntu-26.04-gcc-15: GCC 15

Build and Push Script

The build_and_push.sh script automates the process of building these images and pushing them to Docker Hub.

Authentication

Before running the script, you must be authenticated with Docker Hub. You can do this by running:

docker login

You will be prompted for your username and password (or access token).

Usage
./build_and_push.sh <dockerhub-username>

This script:

  1. Builds all *-base.Dockerfile images first.
  2. Pushes base images to Docker Hub.
  3. Builds the compiler-specific images (which depend on the base images).
  4. Pushes specific images to Docker Hub.

Dependencies

The base images install a comprehensive suite of development tools required by GTSAM, including:

  • build-essential
  • cmake, ninja-build
  • libboost-all-dev
  • libeigen3-dev
  • libtbb-dev
  • libmetis-dev
  • python3-numpy, libpython3-dev

Adding a New Image Variant

To support a new Ubuntu version or compiler configuration:

  1. Create a new Dockerfile:

    • Follow the naming convention: ubuntu-<version>-<compiler>-<version>.Dockerfile (e.g., ubuntu-24.04-clang-17.Dockerfile).
    • If it's a new base Ubuntu version, create ubuntu-<version>-base.Dockerfile first.
  2. Define the Image:

    • Copy an existing Dockerfile that is closest to your target configuration.
    • Update the FROM instruction if necessary.
    • Update the RUN commands to install the desired compiler versions.
    • For compiler images, ensure you set the environment variables CC and CXX correctly.
  3. Build and Test:

    • Build the image locally to ensure it works: docker build -f <your-dockerfile> .
    • The build_and_push.sh script will automatically pick up the new file because it iterates over *.Dockerfile.

Tag summary

Content type

Image

Digest

sha256:09763bada

Size

442.1 MB

Last updated

3 months ago

docker pull borglab/gtsam-ci:ubuntu-24.04-base

This week's pulls

Pulls:

1,298

Sep 7 to Sep 13