CI: add Linux arm64 CI job

This patch adds jobs to run tests on arm64 GitHub Actions hosted runner
for tiny and huge features.

closes: #16477

Signed-off-by: rhysd <lin90162@yahoo.co.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 0470389..fc0a477 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -17,7 +17,7 @@
 
 jobs:
   linux:
-    runs-on: ubuntu-22.04
+    runs-on: ${{ matrix.architecture == 'arm64' && 'ubuntu-22.04-arm' || 'ubuntu-22.04' }}
 
     env:
       CC: ${{ matrix.compiler }}
@@ -48,6 +48,10 @@
           - features: tiny
             compiler: gcc
             extra: [nogui]
+          - features: tiny
+            compiler: gcc
+            extra: [nogui]
+            architecture: arm64
           - features: normal
             shadow: ./src/shadow
             compiler: gcc
@@ -73,6 +77,11 @@
             compiler: gcc
             coverage: true
             extra: [unittests]
+          - features: huge
+            compiler: gcc
+            coverage: true
+            extra: [unittests]
+            architecture: arm64
           - features: normal
             compiler: gcc
             extra: [vimtags]
@@ -251,11 +260,19 @@
           "${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
 
       - name: Test
+        if: matrix.architecture != 'arm64'
         timeout-minutes: 25
         run: |
           do_test() { echo "$*"; sg audio "sg $(id -gn) '$*'"; }
           do_test make ${SHADOWOPT} ${TEST}
 
+      # `sg audio` does not work on arm64 runner due to permission ('Incorrect password' error).
+      - name: Test on arm64
+        if: matrix.architecture == 'arm64'
+        timeout-minutes: 25
+        run: |
+          make ${SHADOWOPT} ${TEST}
+
       - if: ${{ !cancelled() }}
         uses: ./.github/actions/test_artifacts