[infra/github] Add arm32/64 onert test #23
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Run ONERT Ubuntu Build | |
on: | |
push: | |
branches: | |
- master | |
- release/* | |
paths: | |
- '.github/workflows/run-onert-build.yml' | |
- 'nn*' | |
- 'Makefile.template' | |
- 'compute/**' | |
- 'infra/buildtool/**' | |
- 'infra/cmake/**' | |
- 'infra/nncc/**' | |
- 'infra/nnfw/**' | |
- 'runtime/**' | |
- 'tests/**' | |
- '!**/*.md' | |
pull_request: | |
branches: | |
- master | |
- release/* | |
paths: | |
- '.github/workflows/run-onert-build.yml' | |
- 'nn*' | |
- 'Makefile.template' | |
- 'compute/**' | |
- 'infra/buildtool/**' | |
- 'infra/cmake/**' | |
- 'infra/nncc/**' | |
- 'infra/nnfw/**' | |
- 'runtime/**' | |
- 'tests/**' | |
- '!**/*.md' | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
build: | |
if: github.repository_owner == 'Samsung' | |
strategy: | |
matrix: | |
type: [ debug, release ] | |
ubuntu_code: [ focal, jammy ] # TODO: noble | |
arch: [ x86_64, armv7l, aarch64 ] | |
include: | |
- arch: armv7l | |
platform: arm | |
- arch: aarch64 | |
platform: aarch64 | |
exclude: | |
- ubuntu_code: jammy | |
type: debug | |
runs-on: ubuntu-22.04 | |
container: | |
image: nnfw/one-devtools:${{ matrix.ubuntu_code }} | |
options: --user root | |
env: | |
TARGET_ARCH: ${{ matrix.arch }} | |
BUILD_TYPE: ${{ matrix.type }} | |
CROSS_BUILD: ${{ matrix.arch != 'x86_64' && '1' || '0' }} | |
OPTIONS: "-DBUILD_ARMCOMPUTE=OFF" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Caching externals | |
uses: actions/cache@v4 | |
with: | |
path: externals | |
key: external-onert-${{ matrix.ubuntu_code }}-${{ hashFiles('infra/cmake/packages/**/*.cmake') }}-${{ hashFiles('infra/nnfw/cmake/packages/**/*.cmake') }} | |
restore-keys: | | |
external-onert-${{ matrix.ubuntu_code }}- | |
external-onert- | |
external- | |
- name: Download rootfs for cross build | |
if: matrix.arch != 'x86_64' | |
uses: dawidd6/action-download-artifact@v7 | |
with: | |
workflow: generate-rootfs.yml | |
branch: master | |
name: rootfs_${{ matrix.platform }}_${{ matrix.ubuntu_code }} | |
# Workaround: symlink for rootfs checker in cmake toolchain file | |
- name: Install rootfs for cross build | |
if: matrix.arch != 'x86_64' | |
run: | | |
mkdir -p tools/cross/rootfs | |
tar -zxf rootfs_${{ matrix.platform }}_${{ matrix.ubuntu_code }}.tar.gz -C tools/cross/rootfs | |
pushd tools/cross/rootfs/${{ matrix.platform }} | |
ln -sf usr/lib lib | |
popd | |
- name: Build onert | |
run: | | |
make -f Makefile.template create-testsuite | |
- name: Run test on native build | |
if: matrix.arch == 'x86_64' | |
run: | | |
./Product/out/test/onert-test unittest | |
./Product/out/test/onert-test unittest --unittestdir=./Product/out/nnapi-gtest | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
if: matrix.type == 'release' | |
with: | |
name: onert-${{ matrix.arch }}-${{ matrix.ubuntu_code }} | |
path: Product/out/test-suite.tar.gz | |
retention-days: ${{ github.event_name == 'pull_request' && '3' || '7' }} | |
test_cross: | |
if: github.repository_owner == 'Samsung' | |
needs: build | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
ubuntu_code: [ focal, jammy ] # TODO: noble | |
arch: [ armv7l, aarch64 ] | |
include: | |
- arch: armv7l | |
platform: linux/arm/v7 | |
- arch: aarch64 | |
platform: linux/arm64 | |
steps: | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: onert-${{ matrix.arch }}-${{ matrix.ubuntu_code }} | |
- name: Unzip artifacts | |
run: | | |
tar -xvf test-suite.tar.gz | |
- name: QEMU for cross build | |
uses: docker/setup-qemu-action@v3 | |
- name: Run test on cross build | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: ubuntu:${{ matrix.ubuntu_code }} | |
shell: bash | |
options: | | |
--platform ${{ matrix.platform }} | |
-v ${{ github.workspace }}:/work -w /work | |
run: | | |
set -eo pipefail | |
./Product/out/test/onert-test unittest | |
./Product/out/test/onert-test unittest --unittestdir=./Product/out/nnapi-gtest |