This commit takes the QEMU/Arm CI build and test step and splits it into three separate steps (bigendian, sabrelite, thumb), to allow them to run in parallel. Currently the QEMU/Arm CI build step would take up to 16 minutes, often being the last step blocking a full test run. With this commit, when the steps run in parallel the time it takes to complete the QEMU/Arm build and test procedure is cut in half - taking between 8 to 9 minutes depending on the CI runner load. The existing `ci_build_and_test_arm` function has been removed, in favour of having three separate functions - one per configuration. They are called `ci_build_and_test_arm_bigendian`, `ci_build_and_test_arm_sabrelite`, and `ci_build_and_test_arm_thumb`. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
52 lines
1.3 KiB
YAML
52 lines
1.3 KiB
YAML
name: qemu port
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
paths:
|
|
- '.github/workflows/*.yml'
|
|
- 'tools/**'
|
|
- 'py/**'
|
|
- 'extmod/**'
|
|
- 'shared/**'
|
|
- 'lib/**'
|
|
- 'drivers/**'
|
|
- 'ports/qemu/**'
|
|
- 'tests/**'
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build_and_test_arm:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
ci_func: # names are functions in ci.sh
|
|
- bigendian
|
|
- sabrelite
|
|
- thumb
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Install packages
|
|
run: source tools/ci.sh && ci_qemu_setup_arm
|
|
- name: Build and run test suite ci_qemu_build_arm_${{ matrix.ci_func }}
|
|
run: source tools/ci.sh && ci_qemu_build_arm_${{ matrix.ci_func }}
|
|
- name: Print failures
|
|
if: failure()
|
|
run: tests/run-tests.py --print-failures
|
|
|
|
build_and_test_rv32:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Install packages
|
|
run: source tools/ci.sh && ci_qemu_setup_rv32
|
|
- name: Build and run test suite
|
|
run: source tools/ci.sh && ci_qemu_build_rv32
|
|
- name: Print failures
|
|
if: failure()
|
|
run: tests/run-tests.py --print-failures
|