Gigamonkey_env builds the Docker image used as the runtime/build environment for Gigamonkey and the projects that depend on it. It layers specific, pinned versions of Gigamonkey's C++ dependencies — data, net, and Gigamonkey itself — on top of the gigamonkey/gigamonkey-base-dev base image, so that downstream projects can build against a known-good, reproducible environment instead of building these libraries from scratch every time.
The resulting image is published to Docker Hub as gigamonkey/gigamonkey-lib.
versions.jsonpins the exact commit for each dependency:DATA_VERSIONNET_VERSIONGIGAMONKEY_VERSION
Dockerfileclonesdata,net, andGigamonkey, checks out the commit specified for each inversions.json, then builds and installs each one in order using CMake/Ninja..github/workflows/new_base.ymlbuilds and publishes the image whenever a tag matchingv*is pushed. It:- Builds the image for
linux/amd64andlinux/arm64(using QEMU + Docker Buildx). - Reads
versions.jsonand passesDATA_VERSION/GIGAMONKEY_VERSIONin as build args. - Pushes both per-platform digests to Docker Hub, then merges them into a single multi-arch manifest tagged and pushed to
gigamonkey/gigamonkey-lib.
- Builds the image for
To bump the environment to newer versions of the dependencies:
- Update
versions.jsonwith the new commit hash(es) for whichever ofDATA_VERSION,NET_VERSION, and/orGIGAMONKEY_VERSIONneed to change. - Check the base image version. The
Dockerfile'sFROMline pins a specific tag ofgigamonkey/gigamonkey-base-dev(e.g.v2.3.1), which is built from Gigamonkey-BSV/Docker-Base. If that repo has published a newer base image, bump the tag in theFROMline here to match before tagging a new release here — otherwise the build will silently keep using the old base image. - Commit the change(s) to
main(or merge them in via PR). - Create a new tag following the
v*pattern (e.g.v2.8) and push it:git tag v2.8 git push origin v2.8
- Pushing the tag triggers the Publish Docker Image GitHub Actions workflow, which builds the multi-arch image and pushes it to Docker Hub as
gigamonkey/gigamonkey-lib:v2.8(plus any other tagsdocker/metadata-actionderives, e.g.latest).
No manual docker build/docker push steps are required — pushing the tag is sufficient as long as the DOCKERHUB_USERNAME and DOCKERHUB_TOKEN repository secrets are configured.
- Repository secrets
DOCKERHUB_USERNAMEandDOCKERHUB_TOKENmust be set for the publish workflow to authenticate with Docker Hub. - Tags must start with
v(e.g.v2.8,v3.0.1) to trigger a build — other pushes do not trigger publishing.