Thanks Ales,

Acked-by: Mark Michelson<[email protected]>

On Mon, Aug 3, 2026 at 6:30 AM Ales Musil via dev
<[email protected]> wrote:
>
> 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
>

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

Reply via email to