git: 539f84db949a - main - tests/ci: Pre-commit CI with CIRRUS-CI

From: Muhammad Moinur Rahman <bofh_at_FreeBSD.org>
Date: Tue, 27 May 2025 16:23:37 UTC
The branch main has been updated by bofh:

URL: https://cgit.FreeBSD.org/src/commit/?id=539f84db949a1d66ac7b9d001481b44f0b10abf0

commit 539f84db949a1d66ac7b9d001481b44f0b10abf0
Author:     Muhammad Moinur Rahman <bofh@FreeBSD.org>
AuthorDate: 2025-05-27 16:16:38 +0000
Commit:     Muhammad Moinur Rahman <bofh@FreeBSD.org>
CommitDate: 2025-05-27 16:22:58 +0000

    tests/ci: Pre-commit CI with CIRRUS-CI
    
    Currently we do not have pre-commit testing mechanism for our src tree.
    We have merged the CI test scripts into base(HEAD only). The plan is to
    replace the entire Jenkins scripts with the one from the base system.
    Limitations of the scripts:
    - Full test does not work as intended like in a local environment. Our
      amd64/aarch64/arm64 test requires somewhere near 4+ hours which is not
      supported by CIRRUS-CI hosted systems yet as the hard limitation is
      120m. But in future we can try to do this using hosted system with
      various cloud providers.
    - Currently only works with main branch, stable/13 and stable/14 has not
      yet been processed. As the scripts are different.
    
    Approved by:    lwhsu
    Differential Revision:  https://reviews.freebsd.org/D36257
---
 .cirrus.yml | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/.cirrus.yml b/.cirrus.yml
index 472fab9423a8..d6c4df7a9776 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -189,3 +189,30 @@ task:
   post_script:
   - df -m
   - du -m -s /usr/obj
+
+precommit_task:
+  matrix:
+    - name: amd64 smoke test using internal ci systems
+      only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' || $CIRRUS_BRANCH =~ 'pull/.*'
+      env:
+        TARGET: amd64
+        TARGET_ARCH: amd64
+    - name: aarch64 smoke test using internal ci systems
+      only_if: $CIRRUS_REPO_FULL_NAME != 'freebsd/freebsd-src' || $CIRRUS_BRANCH =~ 'pull/.*'
+      env:
+        TARGET: arm64
+        TARGET_ARCH: aarch64
+  timeout_in: 120m
+
+  setup_script:
+    - uname -a
+    - gpart show
+    - df -m
+    - pkg --version
+
+  ci_script:
+    - make -C tests/ci TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} CITYPE=smoke ci
+
+  post_script:
+    - df -m
+    - du -m -s /usr/obj