xref: /freebsd/.cirrus.yml (revision e8b7c78c)
19c0fe7f6SEd Maste
2cec2682cSEd Mastecompute_engine_instance:
3407abff2SEd Maste  # Image list available via
4407abff2SEd Maste  # gcloud compute images list --project freebsd-org-cloud-dev --no-standard-images
5cec2682cSEd Maste  platform: freebsd
6cec2682cSEd Maste  image_project: freebsd-org-cloud-dev
75e2ba9cbSQWERTIOX  image: freebsd-13-2-release-amd64
89c0fe7f6SEd Maste  cpu: 8
9bbf70270SEd Maste  memory: 8G
10cec2682cSEd Maste  disk: 40
119c0fe7f6SEd Maste
1275baf376SEd Masteenv:
1375baf376SEd Maste  PKG_FORMAT: tar
1475baf376SEd Maste
159c0fe7f6SEd Mastetask:
168cba2003SEd Maste  matrix:
1751c6bf04SEd Maste  - name: amd64-llvm16 World and kernel build and boot smoke test
18171f1c1bSEd Maste    only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
19171f1c1bSEd Maste    trigger_type: manual
208cba2003SEd Maste    env:
218cba2003SEd Maste      TARGET: amd64
228cba2003SEd Maste      TARGET_ARCH: amd64
23df042dcfSEd Maste      TOOLCHAIN: llvm16
24df042dcfSEd Maste      TOOLCHAIN_PKG: ${TOOLCHAIN}-lite
2551c6bf04SEd Maste  - name: amd64-llvm17 World and kernel build and boot smoke test
26*e8b7c78cSEd Maste    only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
27*e8b7c78cSEd Maste    trigger_type: manual
288cba2003SEd Maste    env:
2951c6bf04SEd Maste      TARGET: amd64
3051c6bf04SEd Maste      TARGET_ARCH: amd64
3151c6bf04SEd Maste      TOOLCHAIN: llvm17
3251c6bf04SEd Maste      TOOLCHAIN_PKG: ${TOOLCHAIN}-lite
3324235654SEd Maste  - name: amd64-llvm18 World and kernel build and boot smoke test
34*e8b7c78cSEd Maste    only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' || $CIRRUS_BRANCH =~ 'pull/.*'
3524235654SEd Maste    env:
3624235654SEd Maste      TARGET: amd64
3724235654SEd Maste      TARGET_ARCH: amd64
3824235654SEd Maste      TOOLCHAIN: llvm18
3924235654SEd Maste      TOOLCHAIN_PKG: ${TOOLCHAIN}-lite
40df042dcfSEd Maste  - name: arm64-llvm16 World and kernel build and boot smoke test
41df042dcfSEd Maste    only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
42df042dcfSEd Maste    trigger_type: manual
43df042dcfSEd Maste    env:
44df042dcfSEd Maste      TARGET: arm64
45df042dcfSEd Maste      TARGET_ARCH: aarch64
46df042dcfSEd Maste      TOOLCHAIN: llvm16
47df042dcfSEd Maste      TOOLCHAIN_PKG: ${TOOLCHAIN}
4851c6bf04SEd Maste  - name: arm64-llvm17 World and kernel build and boot smoke test
4951c6bf04SEd Maste    only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
5051c6bf04SEd Maste    trigger_type: manual
5151c6bf04SEd Maste    env:
5251c6bf04SEd Maste      TARGET: arm64
5351c6bf04SEd Maste      TARGET_ARCH: aarch64
5451c6bf04SEd Maste      TOOLCHAIN: llvm17
5551c6bf04SEd Maste      TOOLCHAIN_PKG: ${TOOLCHAIN}
5624235654SEd Maste  - name: arm64-llvm18 World and kernel build and boot smoke test
5724235654SEd Maste    only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
5824235654SEd Maste    trigger_type: manual
5924235654SEd Maste    env:
6024235654SEd Maste      TARGET: arm64
6124235654SEd Maste      TARGET_ARCH: aarch64
6224235654SEd Maste      TOOLCHAIN: llvm18
6324235654SEd Maste      TOOLCHAIN_PKG: ${TOOLCHAIN}
6498c52118SEd Maste  - name: amd64-gcc12 World and kernel build and boot smoke test (manual)
659244506aSEd Maste    only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
6675e44873SEd Maste    trigger_type: manual
6775e44873SEd Maste    env:
6875e44873SEd Maste      TARGET: amd64
6975e44873SEd Maste      TARGET_ARCH: amd64
70f326a83cSEd Maste      TOOLCHAIN: amd64-gcc12
71f326a83cSEd Maste      TOOLCHAIN_PKG: ${TOOLCHAIN}
725f72ceb2SEd Maste      EXTRA_MAKE_FLAGS: -s
739101746aSJohn Baldwin  - name: amd64-gcc13 World and kernel build and boot smoke test (manual)
749101746aSJohn Baldwin    only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
759101746aSJohn Baldwin    trigger_type: manual
769101746aSJohn Baldwin    env:
779101746aSJohn Baldwin      TARGET: amd64
789101746aSJohn Baldwin      TARGET_ARCH: amd64
799101746aSJohn Baldwin      TOOLCHAIN: amd64-gcc13
809101746aSJohn Baldwin      TOOLCHAIN_PKG: ${TOOLCHAIN}
819101746aSJohn Baldwin      EXTRA_MAKE_FLAGS: -s
825ad6c907SEd Maste  - name: aarch64-gcc12 World and kernel build and boot smoke test (manual)
835ad6c907SEd Maste    only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
845ad6c907SEd Maste    trigger_type: manual
855ad6c907SEd Maste    env:
865ad6c907SEd Maste      TARGET: arm64
875ad6c907SEd Maste      TARGET_ARCH: aarch64
885ad6c907SEd Maste      TOOLCHAIN: aarch64-gcc12
895ad6c907SEd Maste      TOOLCHAIN_PKG: ${TOOLCHAIN}
905f72ceb2SEd Maste      EXTRA_MAKE_FLAGS: -s
919101746aSJohn Baldwin  - name: aarch64-gcc13 World and kernel build and boot smoke test (manual)
929101746aSJohn Baldwin    only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src'
939101746aSJohn Baldwin    trigger_type: manual
949101746aSJohn Baldwin    env:
959101746aSJohn Baldwin      TARGET: arm64
969101746aSJohn Baldwin      TARGET_ARCH: aarch64
979101746aSJohn Baldwin      TOOLCHAIN: aarch64-gcc13
989101746aSJohn Baldwin      TOOLCHAIN_PKG: ${TOOLCHAIN}
999101746aSJohn Baldwin      EXTRA_MAKE_FLAGS: -s
10098c52118SEd Maste  - name: amd64-gcc12 World and kernel build and boot smoke test (FreeBSD repo)
10157b9a104SJose Luis Duran    only_if: $CIRRUS_REPO_FULL_NAME == 'freebsd/freebsd-src' && $CIRRUS_BRANCH =~ 'pull/.*'
102f5f1b9a9SEd Maste    env:
103f5f1b9a9SEd Maste      TARGET: amd64
104f5f1b9a9SEd Maste      TARGET_ARCH: amd64
105f326a83cSEd Maste      TOOLCHAIN: amd64-gcc12
106f326a83cSEd Maste      TOOLCHAIN_PKG: ${TOOLCHAIN}
1075f72ceb2SEd Maste      EXTRA_MAKE_FLAGS: -s
1084d083e6dSEd Maste  timeout_in: 120m
1099c0fe7f6SEd Maste  install_script:
110b4373ce3SBrooks Davis  - sh .cirrus-ci/pkg-install.sh ${TOOLCHAIN_PKG} git-lite
111260b2c51SBrooks Davis
112af11c202SEd Maste  setup_script:
113f2f24008SEd Maste  - uname -a
114170d1042SEd Maste  - gpart show
115f2f24008SEd Maste  - df -m
116a077a4e3SEd Maste  - pkg --version
117663e4fa3SBrooks Davis  - pw useradd -n user -m
118db853af6SEd Maste  - mkdir -p /usr/obj/$(pwd -P)
119db853af6SEd Maste  - chown user:user /usr/obj/$(pwd -P)
120663e4fa3SBrooks Davis  - su user -c "git config --global --add safe.directory $(pwd -P)"
121260b2c51SBrooks Davis
1226024564cSEd Maste  build_world_script:
1235f72ceb2SEd Maste  - su user -c "make -j$(sysctl -n hw.ncpu) ${EXTRA_MAKE_FLAGS} CROSS_TOOLCHAIN=${TOOLCHAIN} WITHOUT_TOOLCHAIN=yes buildworld"
1246024564cSEd Maste
1256024564cSEd Maste  build_kernel_script:
1266024564cSEd Maste  - su user -c "make -j$(sysctl -n hw.ncpu) CROSS_TOOLCHAIN=${TOOLCHAIN} WITHOUT_TOOLCHAIN=yes buildkernel"
127260b2c51SBrooks Davis
128e1e9e084SEd Maste  package_script:
129f326a83cSEd Maste  - su user -c "make CROSS_TOOLCHAIN=${TOOLCHAIN} WITHOUT_TOOLCHAIN=yes packages"
130260b2c51SBrooks Davis
1312ed0305bSEd Maste  package_check_script:
1322ed0305bSEd Maste  - su user -c "/usr/libexec/flua tools/pkgbase/metalog_reader.lua -c /usr/obj/$(pwd -P)/${TARGET}.${TARGET_ARCH}/worldstage/METALOG"
133260b2c51SBrooks Davis
134e1e9e084SEd Maste  test_script:
135612f254cSEd Maste  - sh .cirrus-ci/pkg-install.sh qemu-nox11
136e1e9e084SEd Maste  - sh tools/boot/ci-qemu-test.sh
137260b2c51SBrooks Davis
138b4373ce3SBrooks Davis  make_sysent_script:
139b4373ce3SBrooks Davis  # Check that make sysent results were committed if required
140b4373ce3SBrooks Davis  - make sysent
141b4373ce3SBrooks Davis  - if ! git diff --exit-code; then printf "\n>>> Generated sysent files not updated, run make sysent <<<\n"; false; fi
142b4373ce3SBrooks Davis
1438cee0c9aSBrooks Davis  include_ldirs_script:
1448cee0c9aSBrooks Davis  # Check that includes/Makefile refers to existing directories
1458cee0c9aSBrooks Davis  - if ! make -C include/ check-ldirs; then printf "\n>>> include/Makefile lists nonexistant directories <<<\n"; false; fi
1468cee0c9aSBrooks Davis
14785e8c2a0SBrooks Davis  makeman_script:
14885e8c2a0SBrooks Davis  # Check that the committed src.conf.5 matches the one generated by
14985e8c2a0SBrooks Davis  # tools/build/options/makeman (modulo the date which always updates)
15085e8c2a0SBrooks Davis  # XXX: This script is slow so keep it last
15185e8c2a0SBrooks Davis  - (make makeman 2> /tmp/makeman.out); cat /tmp/makeman.out
15285e8c2a0SBrooks Davis  - 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
15385e8c2a0SBrooks Davis  - if grep -q "no description found" /tmp/makeman.out; then printf "\n>>> Missing description files <<<\n"; false; fi
15485e8c2a0SBrooks Davis
155f2f24008SEd Maste  post_script:
156f2f24008SEd Maste  - df -m
157f2f24008SEd Maste  - du -m -s /usr/obj
158