1 2compute_engine_instance: 3 # Image list available via 4 # gcloud compute images list --project freebsd-org-cloud-dev --no-standard-images 5 platform: freebsd 6 image_project: freebsd-org-cloud-dev 7 image: freebsd-15-0-release-amd64-ufs 8 cpu: 8 9 memory: 8G 10 disk: 40 11 12env: 13 PKG_LEVEL: 1 14 15task: 16 matrix: 17 - name: amd64-llvm16 World and kernel build and boot smoke test (manual) 18 only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' 19 trigger_type: manual 20 env: 21 TARGET: amd64 22 TARGET_ARCH: amd64 23 TOOLCHAIN: llvm16 24 TOOLCHAIN_PKG: ${TOOLCHAIN}-lite 25 - name: amd64-llvm17 World and kernel build and boot smoke test (manual) 26 only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' 27 trigger_type: manual 28 env: 29 TARGET: amd64 30 TARGET_ARCH: amd64 31 TOOLCHAIN: llvm17 32 TOOLCHAIN_PKG: ${TOOLCHAIN}-lite 33 - name: amd64-llvm18 World and kernel build and boot smoke test (manual) 34 only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' 35 trigger_type: manual 36 env: 37 TARGET: amd64 38 TARGET_ARCH: amd64 39 TOOLCHAIN: llvm18 40 TOOLCHAIN_PKG: ${TOOLCHAIN}-lite 41 - name: amd64-llvm19 World and kernel build and boot smoke test 42 only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' 43 trigger_type: manual 44 env: 45 TARGET: amd64 46 TARGET_ARCH: amd64 47 TOOLCHAIN: llvm19 48 TOOLCHAIN_PKG: ${TOOLCHAIN}-lite 49 - name: amd64-llvm21 World and kernel build and boot smoke test 50 only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' || $CIRRUS_BRANCH =~ 'pull/.*' 51 env: 52 TARGET: amd64 53 TARGET_ARCH: amd64 54 TOOLCHAIN: llvm21 55 TOOLCHAIN_PKG: ${TOOLCHAIN}-lite 56 - name: arm64-llvm16 World and kernel build and boot smoke test (manual) 57 only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' 58 trigger_type: manual 59 env: 60 TARGET: arm64 61 TARGET_ARCH: aarch64 62 TOOLCHAIN: llvm16 63 TOOLCHAIN_PKG: ${TOOLCHAIN} 64 - name: arm64-llvm17 World and kernel build and boot smoke test (manual) 65 only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' 66 trigger_type: manual 67 env: 68 TARGET: arm64 69 TARGET_ARCH: aarch64 70 TOOLCHAIN: llvm17 71 TOOLCHAIN_PKG: ${TOOLCHAIN} 72 - name: arm64-llvm18 World and kernel build and boot smoke test (manual) 73 only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' 74 trigger_type: manual 75 env: 76 TARGET: arm64 77 TARGET_ARCH: aarch64 78 TOOLCHAIN: llvm18 79 TOOLCHAIN_PKG: ${TOOLCHAIN} 80 - name: arm64-llvm19 World and kernel build and boot smoke test (manual) 81 only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' 82 trigger_type: manual 83 env: 84 TARGET: arm64 85 TARGET_ARCH: aarch64 86 TOOLCHAIN: llvm19 87 TOOLCHAIN_PKG: ${TOOLCHAIN} 88 - name: arm64-llvm21 World and kernel build and boot smoke test (manual) 89 only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' 90 trigger_type: manual 91 env: 92 TARGET: arm64 93 TARGET_ARCH: aarch64 94 TOOLCHAIN: llvm21 95 TOOLCHAIN_PKG: ${TOOLCHAIN} 96 - name: amd64-gcc12 World and kernel build and boot smoke test (manual) 97 only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' 98 trigger_type: manual 99 env: 100 TARGET: amd64 101 TARGET_ARCH: amd64 102 TOOLCHAIN: amd64-gcc12 103 TOOLCHAIN_PKG: ${TOOLCHAIN} 104 EXTRA_MAKE_FLAGS: -s 105 - name: amd64-gcc13 World and kernel build and boot smoke test (manual) 106 only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' 107 trigger_type: manual 108 env: 109 TARGET: amd64 110 TARGET_ARCH: amd64 111 TOOLCHAIN: amd64-gcc13 112 TOOLCHAIN_PKG: ${TOOLCHAIN} 113 EXTRA_MAKE_FLAGS: -s 114 - name: amd64-gcc14 World and kernel build and boot smoke test (manual) 115 only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' 116 trigger_type: manual 117 env: 118 TARGET: amd64 119 TARGET_ARCH: amd64 120 TOOLCHAIN: amd64-gcc14 121 TOOLCHAIN_PKG: ${TOOLCHAIN} 122 EXTRA_MAKE_FLAGS: -s 123 - name: aarch64-gcc12 World and kernel build and boot smoke test (manual) 124 only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' 125 trigger_type: manual 126 env: 127 TARGET: arm64 128 TARGET_ARCH: aarch64 129 TOOLCHAIN: aarch64-gcc12 130 TOOLCHAIN_PKG: ${TOOLCHAIN} 131 EXTRA_MAKE_FLAGS: -s 132 - name: aarch64-gcc13 World and kernel build and boot smoke test (manual) 133 only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' 134 trigger_type: manual 135 env: 136 TARGET: arm64 137 TARGET_ARCH: aarch64 138 TOOLCHAIN: aarch64-gcc13 139 TOOLCHAIN_PKG: ${TOOLCHAIN} 140 EXTRA_MAKE_FLAGS: -s 141 - name: aarch64-gcc14 World and kernel build and boot smoke test (manual) 142 only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' 143 trigger_type: manual 144 env: 145 TARGET: arm64 146 TARGET_ARCH: aarch64 147 TOOLCHAIN: aarch64-gcc14 148 TOOLCHAIN_PKG: ${TOOLCHAIN} 149 EXTRA_MAKE_FLAGS: -s 150 - name: amd64-gcc14 World and kernel build and boot smoke test (FreeBSD repo) 151 only_if: $CIRRUS_REPO_FULL_NAME == 'freebsd/freebsd-src' && $CIRRUS_BRANCH =~ 'pull/.*' 152 env: 153 TARGET: amd64 154 TARGET_ARCH: amd64 155 TOOLCHAIN: amd64-gcc14 156 TOOLCHAIN_PKG: ${TOOLCHAIN} 157 EXTRA_MAKE_FLAGS: -s 158 timeout_in: 120m 159 install_script: 160 - sh .cirrus-ci/pkg-install.sh ${TOOLCHAIN_PKG} git-lite 161 162 setup_script: 163 - uname -a 164 - gpart show 165 - df -m 166 - pkg --version 167 - pw useradd -n user -m 168 - mkdir -p /usr/obj/$(pwd -P) 169 - chown user:user /usr/obj/$(pwd -P) 170 - su user -c "git config --global --add safe.directory $(pwd -P)" 171 172 build_world_script: 173 - su user -c "make -j$(nproc) ${EXTRA_MAKE_FLAGS} CROSS_TOOLCHAIN=${TOOLCHAIN} WITHOUT_TOOLCHAIN=yes buildworld" 174 175 build_kernel_script: 176 - su user -c "make -j$(nproc) CROSS_TOOLCHAIN=${TOOLCHAIN} WITHOUT_TOOLCHAIN=yes buildkernel" 177 178 package_script: 179 - su user -c "make -j$(nproc) CROSS_TOOLCHAIN=${TOOLCHAIN} WITHOUT_TOOLCHAIN=yes packages" 180 181 test_script: 182 - sh .cirrus-ci/pkg-install.sh qemu-nox11 183 - sh tools/boot/ci-qemu-test.sh 184 185 package_check_script: 186 - su user -c "/usr/libexec/flua tools/pkgbase/metalog_reader.lua -c /usr/obj/$(pwd -P)/${TARGET}.${TARGET_ARCH}/worldstage/METALOG" 187 188 make_sysent_script: 189 # Check that make sysent results were committed if required 190 - make sysent 191 - if ! git diff --exit-code; then printf "\n>>> Generated sysent files not updated, run make sysent <<<\n"; false; fi 192 193 include_ldirs_script: 194 # Check that includes/Makefile refers to existing directories 195 - if ! make -C include/ check-ldirs; then printf "\n>>> include/Makefile lists nonexistant directories <<<\n"; false; fi 196 197 makeman_script: 198 # Check that the committed src.conf.5 matches the one generated by 199 # tools/build/options/makeman (modulo the date which always updates) 200 # XXX: This script is slow so keep it last 201 - (make makeman 2> /tmp/makeman.out); cat /tmp/makeman.out 202 - 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 203 - if grep -q "no description found" /tmp/makeman.out; then printf "\n>>> Missing description files <<<\n"; false; fi 204 205 post_script: 206 - df -m 207 - du -m -s /usr/obj 208 209precommit_task: 210 persistent_worker: 211 labels: 212 jail: FreeBSD-src 213 matrix: 214 - name: amd64 smoke test using internal ci systems 215 only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' || $CIRRUS_BRANCH =~ 'pull/.*' 216 env: 217 TARGET: amd64 218 TARGET_ARCH: amd64 219 - name: aarch64 smoke test using internal ci systems 220 only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' || $CIRRUS_BRANCH =~ 'pull/.*' 221 env: 222 TARGET: arm64 223 TARGET_ARCH: aarch64 224 timeout_in: 120m 225 226 setup_script: 227 - uname -a 228 - gpart show 229 - df -m 230 - pkg --version 231 232 ci_script: 233 - make -C tests/ci TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} CIENV=cirrus CITYPE=smoke ci 234 235 post_script: 236 - df -m 237 - du -m -s /usr/obj 238