We built Heighliner to streamline the management and building of production-grade container images for blockchain node software, Cosmos and beyond.
Heighliner container images are useful for anyone who's responsible for infrastructure deployments like
- validator + horcrux,
- full nodes,
- archive nodes,
- end-to-end testing (interchaintest),
- and more.
Heighliner images are minimally constructed from scratch images, packaging only the chain binary and a useful reduced set of busybox utilities.
This repository has a CI/CD pipeline to automatically build images when new git tags are detected on the chain repos in chains/. These images are hosted as packages in the Github Container Registry (ghcr) here
To add a chain to the heighliner built-in configuration and have your chain images available on our repository's ghcr, submit a PR adding it to the chains directory so it will be included in the automatic builds.
For further instructions see: addChain.md
To publish heighliner images on your chain repository and/or incorporate heighliner images into your chain repo's CI/CD flow, see heighliner-build-action
If you would like to build the images yourself, heighliner is a CLI tool to help you do so. Download the latest release, or build it yourself with:
make buildIf you would like to build an image and put it in your local path , you can do the following.
make installheighliner build --chain gaia --git-ref v6.0.0Docker image heighliner/gaia:v6.0.0 will now be available in your local docker images
cd ~/gaia-fork
heighliner build -c gaia --localDocker image gaia:local will be built and stored in your local docker images.
cd ~/gaia-fork
heighliner build -c gaia -o strangelove-ventures -g working_branch -t image_tagHeighliner will build the working_branch branch from the strangelove-ventures/gaia github organization/repository. Docker image gaia:image_tag will be stored in your local docker images.
Heighliner can build without a chain present in chains.yaml if the necessary flags are provided.
heighliner build -c somegaia -o somefork --repo gaia --dockerfile cosmos --build-target "make install" --build-env "LEDGER_ENABLED=false BUILD_TAGS=muslc" --binaries "/go/bin/gaiad" -g v8.0.0 -t v8.0.0-someforkDocker image somegaia:v8.0.0-somefork will be built and stored in your local docker images.
# docker login ...
heighliner build -r ghcr.io/strangelove-ventures/heighliner -c gaia -g v6.0.0Docker image ghcr.io/strangelove-ventures/heighliner/gaia:v6.0.0 will be built and pushed to ghcr.io
# docker login ...
heighliner build -r ghcr.io/strangelove-ventures/heighliner -c osmosis -n 3heighliner will fetch the last 3 osmosis release tags from github, build docker images, and push them, e.g.:
ghcr.io/strangelove-ventures/heighliner/osmosis:v6.1.0ghcr.io/strangelove-ventures/heighliner/osmosis:v6.0.0ghcr.io/strangelove-ventures/heighliner/osmosis:v5.0.0
This will make a request to each chain's Github repository to fetch all recent releases. Github rate-limits unauthenticated requests to 60 requests per hour. Authenticated requests have either 1000 (personal) or 15000 (enterprise) per hour. To add Github API authentication, set the GH_USER and GH_PAT environment variables with your Github username and Github Personal Access Token (PAT), respectively.
# docker login ...
export GH_USER=github_username GH_PAT=github_personal_access_token
heighliner build -r ghcr.io/strangelove-ventures/heighliner -n 3heighliner will fetch the last 3 release tags from github for all chains in chains, build docker images, and push them.
Depends on docker buildkit. Requires buildkitd server to be running.
Pass -b flag to use buildkit.
The build will look for the local buildkit unix socket by default. Change address with --buildkit-addr flag.
Customize the platform(s) to be built with the --platform flag.
heighliner build -b -c gaia -g v7.0.1Docker images for heighliner/gaia:v7.0.1 will now be available in your local docker. The manifest for the tag will contain both amd64 and arm64 images.
heighliner build -b --buildkit-addr tcp://192.168.1.5:8125 -c gaia -g v7.0.1 -r ghcr.io/strangelove-ventures/heighlinerDocker images for heighliner/gaia:v7.0.1 will be built on the remote buildkit server and then pushed to the container repository. The manifest for the tag will contain both amd64 and arm64 images.
