Skip to content
Snippets Groups Projects
Select Git revision
  • fa48a7fdeff2cad5df0bb09a896b3d1838ffb821
  • main default protected
  • fix/36615b-branch-reuse-no-cache
  • renovate/main-redis-5.x
  • next
  • revert-31645-feat/rename-gradle-wrapper-validation-action
  • chore/punycode
  • refactor/pin-new-value
  • feat/36219--git-x509-signing
  • feat/structured-logger
  • hotfix/39.264.1
  • feat/skip-dangling
  • gh-readonly-queue/next/pr-36034-7a061c4ca1024a19e2c295d773d9642625d1c2be
  • hotfix/39.238.3
  • refactor/gitlab-auto-approve
  • feat/template-strings
  • gh-readonly-queue/next/pr-35654-137d934242c784e0c45d4b957362214f0eade1d7
  • fix/32307-global-extends-merging
  • fix/32307-global-extends-repositories
  • gh-readonly-queue/next/pr-35009-046ebf7cb84ab859f7fefceb5fa53a54ce9736f8
  • gh-readonly-queue/next/pr-35009-9d5e583b7d7251148ab0d11ee8dd38149618d162
  • 41.38.2
  • 41.38.1
  • 41.38.0
  • 41.37.12
  • 41.37.11
  • 41.37.10
  • 41.37.9
  • 41.37.8
  • 41.37.7
  • 41.37.6
  • 41.37.5
  • 41.37.4
  • 41.37.3
  • 41.37.2
  • 41.37.1
  • 41.37.0
  • 41.36.2
  • 41.36.1
  • 41.36.0
  • 41.35.2
41 results

repository

build-ah-engine

An opinionated utility container for building container images using podman together with gitlab-ci template(s) for reproducible CI/CD pipelines.

The utility allows for multi-architecture builds of container images and their oci manifests. Either on real hardware or emulated using QEMU.

Note: while easier to use QEMU-based build might be substantially slower for certain types of builds.

Basic usage

The CI-pipeline of this project illustrates how the template and it's container are used. A minimal x86

include:
  # On same gitlab instance
  - local: /gitlab-ci-template.yml
  # On remote gitlab instance
  - remote: https://git.shivering-isles.com/container-library/build-ah-engine/-/raw/2.1.0/gitlab-ci-template.yml

variables:
  CI_REGISTRY_IMAGE_VERSION: "1.0.0"

Multi-arch example

The variable CI_CONTAINER_BUILD_ARCHS controls which architectures to include. It's a :-separated list of supported architectures. If the job is picked up by a runner of differing architectures, QEMU is used to cross-compile the container image. On matching architectures the build is done natively. Which runner executes a certain job can be controlled via the jobs tags.

include:
  # On same gitlab instance
  - local: /gitlab-ci-template.yml
  # On remote gitlab instance
  - remote: https://git.shivering-isles.com/container-library/build-ah-engine/-/raw/2.1.0/gitlab-ci-template.yml

variables:
  CI_REGISTRY_IMAGE_VERSION: "1.0.0"
  CI_CONTAINER_BUILD_ARCHS: "amd64:arm64"

container-build-x86_64:
  tags:
    - x86_64

container-build-arm64:
  tags:
    - arm64