Merge branch 'add-ci' into 'main'

Import CI from base-images-experimental

See merge request fedora/bootc/base-images!8
This commit is contained in:
Jonathan Lebon 2024-05-01 20:47:31 +00:00
commit f9d5184fa7
2 changed files with 143 additions and 0 deletions

143
.gitlab-ci.yml Normal file
View File

@ -0,0 +1,143 @@
---
default:
interruptible: true
variables:
LATEST_VERSION: "40"
# Default this one
RUNNER: saas-linux-medium-amd64
ARM_RUNNER: tmp-gcp-bifrost-aarch64
# TODO add arm64 once we have a runner
ARCHES: "amd64"
BUILDAH_IMAGE: quay.io/buildah/stable:v1.34.0
BUILDAH_ARGS: "--security-opt=label=disable --cap-add=all"
stages:
- build
# Code for merge requests
.build-image-mr:
image: $BUILDAH_IMAGE
parallel:
matrix:
- VARIANT:
- full
VERSION:
- "40"
script:
- buildah bud ${BUILDAH_ARGS} --no-cache -t localhost/test ${EXTRA_ARGS} ${CONTEXT}
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_PROJECT_PATH != $CI_PROJECT_PATH && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH'
stage: build
ci-build-image-arm64:
variables:
ARCH: arm64
extends: .build-image-mr
tags:
- $ARM_RUNNER
# See above re runner
rules:
- when: never
ci-build-image-amd64:
variables:
ARCH: amd64
extends: .build-image-mr
tags:
- $RUNNER
# Code executed to build and push to registry
.build-push-image-arch:
image: $BUILDAH_IMAGE
variables:
IMAGE: $CI_REGISTRY_IMAGE/fedora-bootc-$VARIANT:$VERSION-$ARCH
EXTRA_ARGS: --from=quay.io/fedora/fedora:$VERSION --build-arg=VARIANT=$VARIANT --format oci --arch $ARCH --security-opt=label=disable --cap-add=all
before_script:
- buildah login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
script:
- buildah bud ${BUILDAH_ARGS} --no-cache -t ${IMAGE} ${EXTRA_ARGS} ${CONTEXT}
- buildah push $IMAGE
rules:
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
- when: never
stage: build
build-push-amd64:
variables:
ARCH: amd64
parallel:
matrix:
- VARIANT:
- minimal
- full
VERSION:
- "40"
- rawhide
extends: .build-push-image-arch
rules:
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
- when: never
stage: build
build-push-arm64:
tags:
- tmp-gcp-bifrost-aarch64
parallel:
matrix:
- VARIANT:
- minimal
- full
VERSION:
- "40"
- rawhide
variables:
ARCH: arm64
extends: .build-push-image-arch
rules:
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
- when: never
stage: build
# And stitch things together into a manifest list
manifests_list:
parallel:
matrix:
- VARIANT:
- minimal
- full
VERSION:
- "40"
- rawhide
needs:
- build-push-amd64
- build-push-arm64
image: $BUILDAH_IMAGE
variables:
IMAGE_BASE: $CI_REGISTRY_IMAGE/fedora-bootc-$VARIANT
IMAGE: $IMAGE_BASE:$VERSION
before_script:
- buildah login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- for arch in ${ARCHES}; do buildah pull $IMAGE-${arch}; done
script:
- |
set -xeuo pipefail
buildah manifest create $IMAGE $IMAGE-amd64 $IMAGE-arm64
for arch in ${ARCHES}; do
buildah manifest annotate $IMAGE $IMAGE-${arch} --os linux --arch ${arch}
buildah manifest annotate $IMAGE $IMAGE-${arch} --os linux --arch ${arch}
done
buildah manifest push --all $IMAGE docker://$IMAGE
if test $VERSION == $LATEST_VERSION; then
buildah manifest push --all $IMAGE docker://$IMAGE_BASE:latest
fi
if test $VARIANT == full; then
buildah push $IMAGE $CI_REGISTRY_IMAGE/fedora-bootc:$VERSION
fi
rules:
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
- when: never
stage: build