d4c7a56539
We use a fixed container tag of 'latest' so that contributors' forks don't end up with an ever growing number of containers as they work on throwaway feature branches. This fixed tag causes problems running CI upstream in stable staging branches, however, because the stable staging branch will publish old container content that clashes with that needed by primary staging branch. This makes it impossible to reliably run CI pipelines in parallel in upstream for different staging branches. This introduces $QEMU_CI_CONTAINER_TAG global variable as a way to change which tag container publishing uses. Initially it can be set by contributors as a git push option if they want to override the default use of 'latest' eg git push gitlab <branch> -o ci.variable=QEMU_CONTAINER_TAG=fish this is useful if contributors need to run pipelines for different branches concurrently in their forks. Reviewed-by: Michael Tokarev <mjt@tls.msk.ru> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> Message-Id: <20230608164018.2520330-2-berrange@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
63 lines
2.4 KiB
YAML
63 lines
2.4 KiB
YAML
.cross_system_build_job:
|
|
extends: .base_job_template
|
|
stage: build
|
|
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG
|
|
timeout: 80m
|
|
script:
|
|
- mkdir build
|
|
- cd build
|
|
- ../configure --enable-werror --disable-docs --enable-fdt=system
|
|
--disable-user $QEMU_CONFIGURE_OPTS $EXTRA_CONFIGURE_OPTS
|
|
--target-list-exclude="arm-softmmu cris-softmmu
|
|
i386-softmmu microblaze-softmmu mips-softmmu mipsel-softmmu
|
|
mips64-softmmu ppc-softmmu riscv32-softmmu sh4-softmmu
|
|
sparc-softmmu xtensa-softmmu $CROSS_SKIP_TARGETS"
|
|
- make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
|
|
- if grep -q "EXESUF=.exe" config-host.mak;
|
|
then make installer;
|
|
version="$(git describe --match v[0-9]* 2>/dev/null || git rev-parse --short HEAD)";
|
|
mv -v qemu-setup*.exe qemu-setup-${version}.exe;
|
|
fi
|
|
|
|
# Job to cross-build specific accelerators.
|
|
#
|
|
# Set the $ACCEL variable to select the specific accelerator (default to
|
|
# KVM), and set extra options (such disabling other accelerators) via the
|
|
# $EXTRA_CONFIGURE_OPTS variable.
|
|
.cross_accel_build_job:
|
|
extends: .base_job_template
|
|
stage: build
|
|
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG
|
|
timeout: 30m
|
|
script:
|
|
- mkdir build
|
|
- cd build
|
|
- ../configure --enable-werror --disable-docs $QEMU_CONFIGURE_OPTS
|
|
--disable-tools --enable-${ACCEL:-kvm} $EXTRA_CONFIGURE_OPTS
|
|
- make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
|
|
|
|
.cross_user_build_job:
|
|
extends: .base_job_template
|
|
stage: build
|
|
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG
|
|
script:
|
|
- mkdir build
|
|
- cd build
|
|
- ../configure --enable-werror --disable-docs $QEMU_CONFIGURE_OPTS
|
|
--disable-system --target-list-exclude="aarch64_be-linux-user
|
|
alpha-linux-user cris-linux-user m68k-linux-user microblazeel-linux-user
|
|
nios2-linux-user or1k-linux-user ppc-linux-user sparc-linux-user
|
|
xtensa-linux-user $CROSS_SKIP_TARGETS"
|
|
- make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
|
|
|
|
# We can still run some tests on some of our cross build jobs. They can add this
|
|
# template to their extends to save the build logs and test results
|
|
.cross_test_artifacts:
|
|
artifacts:
|
|
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
|
|
expire_in: 7 days
|
|
paths:
|
|
- build/meson-logs/testlog.txt
|
|
reports:
|
|
junit: build/meson-logs/testlog.junit.xml
|