The Cirrus CI was shut down on June 1st 2026, replace it with GitHub
native ARM64 job that runs weekly due to capacity issues. Also update
the README badges.

Reported-at: https://redhat.atlassian.net/browse/FDP-3765
Signed-off-by: Ales Musil <[email protected]>
---
Test run available at https://github.com/almusil/ovn/actions/runs/30798200421
---
 .cirrus.yml                    |  69 ---------------------
 .github/workflows/test-arm.yml | 109 +++++++++++++++++++++++++++++++++
 Makefile.am                    |   2 +-
 README.rst                     |   6 +-
 4 files changed, 114 insertions(+), 72 deletions(-)
 delete mode 100644 .cirrus.yml
 create mode 100644 .github/workflows/test-arm.yml

diff --git a/.cirrus.yml b/.cirrus.yml
deleted file mode 100644
index 9cf2a46d6..000000000
--- a/.cirrus.yml
+++ /dev/null
@@ -1,69 +0,0 @@
-compute_engine_instance:
-  image_project: ubuntu-os-cloud
-  image: family/ubuntu-2404-lts-arm64
-  architecture: arm64
-  platform: linux
-  memory: 4G
-  disk: 20
-
-# Run separate task for the image build, so it's running only once outside
-# the test matrix.
-build_image_task:
-  install_dependencies_script:
-    - sudo apt update
-    - sudo apt install -y podman make
-
-  build_container_script:
-    - cd utilities/containers
-    - make ubuntu
-    - podman save -o /tmp/image.tar --format oci-archive 
ovn-org/ovn-tests:ubuntu
-
-  upload_image_script:
-    - curl -s -X POST -T /tmp/image.tar 
http://$CIRRUS_HTTP_CACHE_HOST/${CIRRUS_CHANGE_IN_REPO}
-
-arm_unit_tests_task:
-  depends_on:
-    - build_image
-
-  env:
-    CIRRUS_CLONE_SUBMODULES: true
-    PATH: ${HOME}/bin:${HOME}/.local/bin:${PATH}
-    RECHECK: yes
-    IMAGE_NAME: ovn-org/ovn-tests:ubuntu
-    matrix:
-      - CC: gcc
-        TESTSUITE: test
-        TEST_RANGE: -300
-      - CC: gcc
-        TESTSUITE: test
-        TEST_RANGE: 301-600
-      - CC: gcc
-        TESTSUITE: test
-        TEST_RANGE: 601-
-        UNSTABLE: yes
-      - CC: clang
-        TESTSUITE: test
-        TEST_RANGE: -300
-      - CC: clang
-        TESTSUITE: test
-        TEST_RANGE: 301-600
-      - CC: clang
-        TESTSUITE: test
-        TEST_RANGE: 601-
-        UNSTABLE: yes
-
-  name: ARM64 ${CC} ${TESTSUITE} ${TEST_RANGE}
-
-  install_dependencies_script:
-    - sudo apt update
-    - sudo apt install -y podman
-
-  download_cache_script:
-    - curl http://$CIRRUS_HTTP_CACHE_HOST/${CIRRUS_CHANGE_IN_REPO} -o 
/tmp/image.tar
-
-  load_image_script:
-    - podman load -i /tmp/image.tar
-    - rm -rf /tmp/image.tar
-
-  build_script:
-    - ./.ci/ci.sh --archive-logs
diff --git a/.github/workflows/test-arm.yml b/.github/workflows/test-arm.yml
new file mode 100644
index 000000000..cd0a12eff
--- /dev/null
+++ b/.github/workflows/test-arm.yml
@@ -0,0 +1,109 @@
+name: Build and Test ARM64
+
+on:
+  schedule:
+    # Run Sunday at midnight
+    - cron: '0 0 * * 0'
+  workflow_dispatch:
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.event.pull_request.number || 
github.run_id }}
+  if: (github.repository_owner == 'ovn-org' && github.event_name == 'schedule' 
&& github.ref_name == 'main') || github.event_name == 'workflow_dispatch'
+  cancel-in-progress: true
+
+jobs:
+  build-linux:
+    env:
+      ARCH:        ${{ matrix.cfg.arch }}
+      CC:          ${{ matrix.cfg.compiler }}
+      DPDK:        ${{ matrix.cfg.dpdk }}
+      LIBS:        ${{ matrix.cfg.libs }}
+      OPTS:        ${{ matrix.cfg.opts }}
+      TESTSUITE:   ${{ matrix.cfg.testsuite }}
+      TEST_RANGE:  ${{ matrix.cfg.test_range }}
+      SANITIZERS:  ${{ matrix.cfg.sanitizers }}
+      UNSTABLE:    ${{ matrix.cfg.unstable }}
+
+    name: linux ${{ join(matrix.cfg.*, ' ') }}
+    runs-on: ubuntu-24.04-arm
+
+    strategy:
+      fail-fast: false
+      matrix:
+        cfg:
+          - { compiler: gcc, opts: --disable-ssl }
+          - { compiler: clang, opts: --disable-ssl }
+          - { compiler: gcc, testsuite: dist-test }
+          - { compiler: gcc, testsuite: test, test_range: "-300" }
+          - { compiler: gcc, testsuite: test, test_range: "301-600" }
+          - { compiler: gcc, testsuite: test, test_range: "601-", unstable: 
unstable }
+          - { compiler: clang, testsuite: test, sanitizers: sanitizers, 
test_range: "-300" }
+          - { compiler: clang, testsuite: test, sanitizers: sanitizers, 
test_range: "301-600" }
+          - { compiler: clang, testsuite: test, sanitizers: sanitizers, 
test_range: "601-", unstable: unstable }
+          - { compiler: gcc, testsuite: test, libs: -ljemalloc, test_range: 
"-300" }
+          - { compiler: gcc, testsuite: test, libs: -ljemalloc, test_range: 
"301-600" }
+          - { compiler: gcc, testsuite: test, libs: -ljemalloc, test_range: 
"601-", unstable: unstable }
+          - { compiler: gcc, testsuite: system-test-dpdk, dpdk: dpdk, 
test_range: "-100" }
+          - { compiler: gcc, testsuite: system-test-dpdk, dpdk: dpdk, 
test_range: "101-200" }
+          - { compiler: gcc, testsuite: system-test-dpdk, dpdk: dpdk, 
test_range: "201-", unstable: unstable }
+          - { compiler: gcc, testsuite: system-test-userspace, test_range: 
"-100" }
+          - { compiler: gcc, testsuite: system-test-userspace, test_range: 
"101-200" }
+          - { compiler: gcc, testsuite: system-test-userspace, test_range: 
"201-", unstable: unstable }
+          - { compiler: gcc, testsuite: system-test, test_range: "-100" }
+          - { compiler: gcc, testsuite: system-test, test_range: "101-200" }
+          - { compiler: gcc, testsuite: system-test, test_range: "201-", 
unstable: unstable }
+          - { compiler: clang, testsuite: system-test, sanitizers: sanitizers, 
test_range: "-100" }
+          - { compiler: clang, testsuite: system-test, sanitizers: sanitizers, 
test_range: "101-200" }
+          - { compiler: clang, testsuite: system-test, sanitizers: sanitizers, 
test_range: "201-", unstable: unstable }
+
+    steps:
+      - name: system-level-dependencies
+        if: ${{ startsWith(matrix.cfg.testsuite, 'system-test') }}
+        run: |
+          sudo apt update
+          sudo apt -y install linux-modules-extra-$(uname -r)
+
+      - name: checkout
+        uses: actions/checkout@v6
+        with:
+          submodules: recursive
+
+      - name: Fix /etc/hosts file
+        run: |
+          . .ci/linux-util.sh
+          fix_etc_hosts
+
+      - name: Disable apparmor
+        run: |
+          . .ci/linux-util.sh
+          disable_apparmor
+
+      - name: Fixup crun
+        run: |
+          . .ci/linux-util.sh
+          fixup_crun
+
+      - name: Download container
+        run: |
+          podman pull ghcr.io/ovn-org/ovn-tests:ubuntu
+          sudo podman pull ghcr.io/ovn-org/ovn-tests:ubuntu
+
+      - name: Tag image
+        run: |
+          podman tag ghcr.io/ovn-org/ovn-tests:ubuntu ovn-org/ovn-tests
+          sudo podman tag ghcr.io/ovn-org/ovn-tests:ubuntu ovn-org/ovn-tests
+
+      - name: build
+        if: ${{ startsWith(matrix.cfg.testsuite, 'system-test') }}
+        run: sudo -E ./.ci/ci.sh --archive-logs --timeout=2h
+
+      - name: build
+        if: ${{ !startsWith(matrix.cfg.testsuite, 'system-test') }}
+        run: ./.ci/ci.sh --archive-logs --timeout=2h
+
+      - name: upload logs on failure
+        if: failure() || cancelled()
+        uses: actions/upload-artifact@v7
+        with:
+          name: logs-linux-${{ join(matrix.cfg.*, '-') }}
+          path: logs.tgz
diff --git a/Makefile.am b/Makefile.am
index 0f2389b25..b4a3284fc 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -70,7 +70,6 @@ EXTRA_DIST = \
        MAINTAINERS.rst \
        README.rst \
        NOTICE \
-       .cirrus.yml \
        .ci/ci.sh \
        .ci/linux-build.sh \
        .ci/linux-util.sh \
@@ -82,6 +81,7 @@ EXTRA_DIST = \
        .ci/ovn-kubernetes/custom.patch \
        .github/workflows/containers.yml \
        .github/workflows/test.yml \
+       .github/workflows/test-arm.yml \
        .github/workflows/ovn-kubernetes.yml \
        .github/workflows/ovn-fake-multinode-tests.yml \
        .github/workflows/ovn-upgrade-tests.yml \
diff --git a/README.rst b/README.rst
index 9b09e22ff..e9b26cc56 100644
--- a/README.rst
+++ b/README.rst
@@ -11,8 +11,10 @@ OVN
     :target: 
https://github.com/ovn-org/ovn/actions/workflows/ovn-kubernetes.yml
 .. image:: 
https://github.com/ovn-org/ovn/actions/workflows/ovn-fake-multinode-tests.yml/badge.svg
     :target: 
https://github.com/ovn-org/ovn/actions/workflows/ovn-fake-multinode-tests.yml
-.. image:: https://api.cirrus-ci.com/github/ovn-org/ovn.svg
-    :target: https://cirrus-ci.com/github/ovn-org/ovn
+.. image:: 
https://github.com/ovn-org/ovn/actions/workflows/ovn-upgrade-tests.yml/badge.svg
+    :target: 
https://github.com/ovn-org/ovn/actions/workflows/ovn-upgrade-tests.yml
+.. image:: 
https://github.com/ovn-org/ovn/actions/workflows/test-arm.yml/badge.svg
+    :target: https://github.com/ovn-org/ovn/actions/workflows/test-arm.yml
 .. image:: https://readthedocs.org/projects/ovn/badge/?version=latest
     :target: https://docs.ovn.org/en/latest/
 .. image:: https://scan.coverity.com/projects/30371/badge.svg
-- 
2.55.0

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to