The workflows pulled tonistiigi/binfmt through an unauthenticated request, either directly from docker.io or from harbor.cryptic.systems before any credentials had been configured. Both variants are subject to upstream rate limiting and made the multi arch builds fail sporadically. The docker/login-action steps are now placed in front of docker/setup-qemu-action and docker/setup-buildx-action, and a second login against harbor.cryptic.systems was added so that the binfmt image is always pulled from the internal registry with valid credentials. Leftover setup-qemu-action and setup-buildx-action steps from the previous ordering were removed. All pinned actions were additionally bumped to their latest upstream release to remove the version drift between the repositories.
build-image
This project contains all sources to build the container image git.cryptic.systems/volker.raschek/build-image. The
primary goal of the image is only to provide an environment to compile source code for go or rust and package
compiled binaries as PKG for Arch Linux or as RPM for RHEL based distributions.
Supported environment variables
gnupg
GNUPG_KEY
Import private gpg key via GPG_KEY. The private key must be escaped to import the key inside the container image
correctly. For example:
GPG_FPR=YOUR_GPG_FINGERPRINT
GPG_KEY=$(gpg --armor --export-secret-keys ${GPG_FPR} | cat -e | sed -e 's/\$/\\n/g' -e 's/^[ \t]*//g')
makepkg
The makepkg.conf configuration is composed from the environment variables with the prefix MAKEPKG_. Below are some
examples:
MAKEPKG_PACKAGER="Hugo McKinnock <hugo.mckinnock@example.local>"
MAKEPKG_GPGKEY="0123456789"
MAKEPKG_PKGEXT=.pkg.tar.zst"
ssh
SSH_KEY
Import private ssh key via SSH_KEY. The private key must be escaped to import the key inside the container image
correctly. For example:
SSH_KEY=$(cat -e ${HOME}/.ssh/id_rsa | sed -e 's/\$/\\n/g')
Usage
golang
To use this image for building golang applications execute this in your root folder of your go project.
$ docker run \
--rm \
--volume ${PWD}:/workspace \
git.cryptic.systems/volker.raschek/build-image:latest \
go build
makepkg
With the following example will be an package be build for Arch Linux. Execute the commond in the root directory of the
project, where the PKGBUILD file is located.
$ docker run \
--env MAKEPKG_PACKAGER="Max Mustermann <max.mustermann@example.com" \
--rm \
--volume ${PWD}:/workspace \
git.cryptic.systems/volker.raschek/build-image:latest \
makepkg
rust
If you want to compile instead go rust sourcecode, than you can do it similar to the golang example.
$ docker run \
--rm \
--volume ${PWD}:/workspace \
git.cryptic.systems/volker.raschek/build-image:latest \
cargo build --release