diff options
Diffstat (limited to '.cirrus.yml')
-rw-r--r-- | .cirrus.yml | 133 |
1 files changed, 124 insertions, 9 deletions
diff --git a/.cirrus.yml b/.cirrus.yml index ad8ad8e52532..13719a3e2058 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -1,42 +1,157 @@ -# $FreeBSD$ compute_engine_instance: # Image list available via # gcloud compute images list --project freebsd-org-cloud-dev --no-standard-images platform: freebsd image_project: freebsd-org-cloud-dev - image: freebsd-13-0-release-amd64 + image: freebsd-13-2-release-amd64 cpu: 8 memory: 8G disk: 40 +env: + PKG_FORMAT: tar + task: matrix: - - name: World and kernel amd64 build and boot smoke test + - name: amd64-llvm16 World and kernel build and boot smoke test + only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' + trigger_type: manual + env: + TARGET: amd64 + TARGET_ARCH: amd64 + TOOLCHAIN: llvm16 + TOOLCHAIN_PKG: ${TOOLCHAIN}-lite + - name: amd64-llvm17 World and kernel build and boot smoke test + only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' + trigger_type: manual + env: + TARGET: amd64 + TARGET_ARCH: amd64 + TOOLCHAIN: llvm17 + TOOLCHAIN_PKG: ${TOOLCHAIN}-lite + - name: amd64-llvm18 World and kernel build and boot smoke test + only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' || $CIRRUS_BRANCH =~ 'pull/.*' + env: + TARGET: amd64 + TARGET_ARCH: amd64 + TOOLCHAIN: llvm18 + TOOLCHAIN_PKG: ${TOOLCHAIN}-lite + - name: arm64-llvm16 World and kernel build and boot smoke test + only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' + trigger_type: manual + env: + TARGET: arm64 + TARGET_ARCH: aarch64 + TOOLCHAIN: llvm16 + TOOLCHAIN_PKG: ${TOOLCHAIN} + - name: arm64-llvm17 World and kernel build and boot smoke test + only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' + trigger_type: manual + env: + TARGET: arm64 + TARGET_ARCH: aarch64 + TOOLCHAIN: llvm17 + TOOLCHAIN_PKG: ${TOOLCHAIN} + - name: arm64-llvm18 World and kernel build and boot smoke test + only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' + trigger_type: manual + env: + TARGET: arm64 + TARGET_ARCH: aarch64 + TOOLCHAIN: llvm18 + TOOLCHAIN_PKG: ${TOOLCHAIN} + - name: amd64-gcc12 World and kernel build and boot smoke test (manual) + only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' + trigger_type: manual + env: + TARGET: amd64 + TARGET_ARCH: amd64 + TOOLCHAIN: amd64-gcc12 + TOOLCHAIN_PKG: ${TOOLCHAIN} + EXTRA_MAKE_FLAGS: -s + - name: amd64-gcc13 World and kernel build and boot smoke test (manual) + only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' + trigger_type: manual env: TARGET: amd64 TARGET_ARCH: amd64 - - name: World and kernel arm64 build and boot smoke test + TOOLCHAIN: amd64-gcc13 + TOOLCHAIN_PKG: ${TOOLCHAIN} + EXTRA_MAKE_FLAGS: -s + - name: aarch64-gcc12 World and kernel build and boot smoke test (manual) + only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' trigger_type: manual env: TARGET: arm64 TARGET_ARCH: aarch64 + TOOLCHAIN: aarch64-gcc12 + TOOLCHAIN_PKG: ${TOOLCHAIN} + EXTRA_MAKE_FLAGS: -s + - name: aarch64-gcc13 World and kernel build and boot smoke test (manual) + only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' + trigger_type: manual + env: + TARGET: arm64 + TARGET_ARCH: aarch64 + TOOLCHAIN: aarch64-gcc13 + TOOLCHAIN_PKG: ${TOOLCHAIN} + EXTRA_MAKE_FLAGS: -s + - name: amd64-gcc12 World and kernel build and boot smoke test (FreeBSD repo) + only_if: $CIRRUS_REPO_FULL_NAME == 'freebsd/freebsd-src' && $CIRRUS_BRANCH =~ 'pull/.*' + env: + TARGET: amd64 + TARGET_ARCH: amd64 + TOOLCHAIN: amd64-gcc12 + TOOLCHAIN_PKG: ${TOOLCHAIN} + EXTRA_MAKE_FLAGS: -s timeout_in: 120m install_script: - - sh .cirrus-ci/pkg-install.sh qemu llvm13 + - sh .cirrus-ci/pkg-install.sh ${TOOLCHAIN_PKG} git-lite + setup_script: - uname -a + - gpart show - df -m - pkg --version - - pw useradd user + - pw useradd -n user -m - mkdir -p /usr/obj/$(pwd -P) - chown user:user /usr/obj/$(pwd -P) - script: - - su user -c "make -j$(sysctl -n hw.ncpu) CROSS_TOOLCHAIN=llvm13 WITHOUT_TOOLCHAIN=yes buildworld buildkernel" + - su user -c "git config --global --add safe.directory $(pwd -P)" + + build_world_script: + - su user -c "make -j$(sysctl -n hw.ncpu) ${EXTRA_MAKE_FLAGS} CROSS_TOOLCHAIN=${TOOLCHAIN} WITHOUT_TOOLCHAIN=yes buildworld" + + build_kernel_script: + - su user -c "make -j$(sysctl -n hw.ncpu) CROSS_TOOLCHAIN=${TOOLCHAIN} WITHOUT_TOOLCHAIN=yes buildkernel" + package_script: - - su user -c "make CROSS_TOOLCHAIN=llvm13 WITHOUT_TOOLCHAIN=yes PKG_FORMAT=tar packages" + - su user -c "make CROSS_TOOLCHAIN=${TOOLCHAIN} WITHOUT_TOOLCHAIN=yes packages" + + package_check_script: + - su user -c "/usr/libexec/flua tools/pkgbase/metalog_reader.lua -c /usr/obj/$(pwd -P)/${TARGET}.${TARGET_ARCH}/worldstage/METALOG" + test_script: + - sh .cirrus-ci/pkg-install.sh qemu-nox11 - sh tools/boot/ci-qemu-test.sh + + make_sysent_script: + # Check that make sysent results were committed if required + - make sysent + - if ! git diff --exit-code; then printf "\n>>> Generated sysent files not updated, run make sysent <<<\n"; false; fi + + include_ldirs_script: + # Check that includes/Makefile refers to existing directories + - if ! make -C include/ check-ldirs; then printf "\n>>> include/Makefile lists nonexistant directories <<<\n"; false; fi + + makeman_script: + # Check that the committed src.conf.5 matches the one generated by + # tools/build/options/makeman (modulo the date which always updates) + # XXX: This script is slow so keep it last + - (make makeman 2> /tmp/makeman.out); cat /tmp/makeman.out + - if ! git diff --exit-code --ignore-matching-lines "^.Dd" share/man/man5/src.conf.5; then printf "\n>>> src.conf.5 was not updated as required <<<\n"; false; fi + - if grep -q "no description found" /tmp/makeman.out; then printf "\n>>> Missing description files <<<\n"; false; fi + post_script: - df -m - du -m -s /usr/obj |