config/generate-gitlab-ci.sh

114 lines
2.7 KiB
Bash
Executable file

#!/bin/bash
# SPDX-FileCopyrightText: Fedora Atomic Desktops maintainers
# SPDX-License-Identifier: MIT
set -euo pipefail
# set -x
variants=(
'silverblue'
'kinoite'
'kinoite-mobile'
'sway-atomic'
'budgie-atomic'
'base-atomic'
'cosmic-atomic'
)
branch="$(git rev-parse --abbrev-ref HEAD)"
release="$(rpm-ostree compose tree --print-only "silverblue.yaml" | jq -r '."mutate-os-release"')"
if [[ "$(rpm-ostree compose tree --print-only "silverblue.yaml" | jq -r '.repos[]')" == "fedora-rawhide" ]]; then
release="rawhide"
fi
{
cat <<EOF
# SPDX-FileCopyrightText: Fedora Atomic Desktops maintainers
# SPDX-License-Identifier: MIT
# Only used in https://gitlab.com/fedora/ostree/ci-test
# For tests running in the Fedora infrastructure, see .zuul.yaml and
# https://fedoraproject.org/wiki/Zuul-based-ci
# See: https://gitlab.com/fedora/ostree/buildroot
image: quay.io/fedora-ostree-desktops/buildroot:$release
# As those are not official images, we build all available variants.
# We build the images for merge requests, we push and sign them for commits
# pushed to release branches and scheduled pipelines.
variables:
REGISTRY: "quay.io"
RELEASE_REPO: "fedora-ostree-desktops"
stages:
- build
- merge
EOF
for variant in "${variants[@]}"; do
cat <<EOF
mr-$variant-x86_64:
stage: build
script:
- just compose-image $variant
tags:
- saas-linux-small-amd64
rules:
- if: \$CI_PIPELINE_SOURCE == "merge_request_event"
mr-$variant-aarch64:
stage: build
script:
- just compose-image $variant
tags:
- saas-linux-small-arm64
rules:
- if: \$CI_PIPELINE_SOURCE == "merge_request_event"
build-$variant-x86_64:
stage: build
script:
- just compose-image $variant
- just upload-container $variant x86_64
tags:
- saas-linux-small-amd64
rules:
- if: \$CI_COMMIT_BRANCH == "$branch" && (\$CI_PIPELINE_SOURCE == "push" || \$CI_PIPELINE_SOURCE == "schedule")
artifacts:
paths:
- .buildid
expire_in: 1 week
build-$variant-aarch64:
stage: build
script:
- just compose-image $variant
- just upload-container $variant aarch64
tags:
- saas-linux-small-arm64
rules:
- if: \$CI_COMMIT_BRANCH == "$branch" && (\$CI_PIPELINE_SOURCE == "push" || \$CI_PIPELINE_SOURCE == "schedule")
artifacts:
paths:
- .buildid
expire_in: 1 week
merge-$variant:
stage: merge
script:
- just multi-arch-manifest $variant
needs:
- job: "build-$variant-x86_64"
artifacts: true
- job: "build-$variant-aarch64"
artifacts: true
tags:
- saas-linux-small-amd64
rules:
- if: \$CI_COMMIT_BRANCH == "$branch" && (\$CI_PIPELINE_SOURCE == "push" || \$CI_PIPELINE_SOURCE == "schedule")
EOF
done
} > .gitlab-ci.yml