Skip to content

Run tests with twister #1545

Run tests with twister

Run tests with twister #1545

Workflow file for this run

name: Run tests with twister
on:
pull_request:
branches:
- main
schedule:
# Run at 14:17 UTC every day
- cron: '17 14 * * *'
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.ref }}
cancel-in-progress: true
jobs:
twister-run:
runs-on: self-hosted
container:
image: ghcr.io/zephyrproject-rtos/ci-repo-cache:v0.27.4.20241026
options: '--entrypoint /bin/bash'
volumes:
- /repo-cache/embeint:/github/cache/embeint
- /repo-cache/ccache:/github/ccache
strategy:
fail-fast: false
matrix:
subset: [1, 2, 3, 4]
env:
CCACHE_DIR: /github/ccache
# `--specs` is ignored because ccache is unable to resolve the toolchain specs file path.
CCACHE_IGNOREOPTIONS: '--specs=*'
TWISTER_COMMON: ' --force-color --inline-logs -v -N -M --retry-failed 3 '
DAILY_OPTIONS: ' -M --build-only --show-footprint'
VENDOR_FILTER: ' --vendor nordic --vendor zephyr --vendor embeint '
EXTRA_BOARDS: ' --platform qemu_cortex_m3 --platform qemu_cortex_m0 '
UNIT_TESTING: ' --platform unit_testing '
PR_OPTIONS: ' --clobber-output --integration'
COMMIT_RANGE: ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }}
BASE_REF: ${{ github.base_ref }}
ZEPHYR_TOOLCHAIN_VARIANT: zephyr
steps:
- name: Workspace cleanup
run: |
rm -rf ./{*,.*}
rm -rf infuse-sdk twister-out*
- name: Clone cached Embeint SDK repository
continue-on-error: true
run: |
git config --global --add safe.directory '*'
git clone --shared /github/cache/embeint/infuse-sdk infuse-sdk
cd infuse-sdk
git remote set-url origin ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
path: infuse-sdk
fetch-depth: 0
persist-credentials: false
- name: Environment Setup
working-directory: infuse-sdk
run: |
if [ "${{github.event_name}}" = "pull_request" ]; then
git config --global user.email "[email protected]"
git config --global user.name "Embeint CI"
rm -fr ".git/rebase-apply"
git rebase origin/${BASE_REF}
git log --pretty=oneline | head -n 10
fi
west init -l . || true
west config --global update.narrow true
west update --path-cache /github/cache/embeint 2>&1 1> west.update.log || west update --path-cache /github/cache/embeint 2>&1 1> west.update.log || ( rm -rf ../modules ../bootloader ../tools && west update --path-cache /github/cache/embeint)
west forall -c 'git reset --hard HEAD'
west blobs fetch hal_nordic nrf_wifi
echo "ZEPHYR_SDK_INSTALL_DIR=/opt/toolchains/zephyr-sdk-$( cat SDK_VERSION )" >> $GITHUB_ENV
- name: Check Environment
run: |
cmake --version
gcc --version
ls -la /opt/toolchains
ls -la
echo "github.ref: ${{ github.ref }}"
echo "github.base_ref: ${{ github.base_ref }}"
echo "github.ref_name: ${{ github.ref_name }}"
- name: Set up ccache
run: |
mkdir -p ${CCACHE_DIR}
ccache -M 10G
ccache -p
ccache -z -s -vv
- if: github.event_name == 'pull_request'
name: Run Unit Tests with Twister (Pull Request)
run: |
export ZEPHYR_BASE=${PWD}/zephyr
$ZEPHYR_BASE/scripts/twister ${TWISTER_COMMON} ${UNIT_TESTING} -T infuse-sdk
- if: github.event_name == 'pull_request'
name: Run Tests with Twister (Pull Request)
run: |
export ZEPHYR_BASE=${PWD}/zephyr
$ZEPHYR_BASE/scripts/twister --subset ${{matrix.subset}}/${{ strategy.job-total }} ${TWISTER_COMMON} ${VENDOR_FILTER} ${PR_OPTIONS} -T infuse-sdk
- if: github.event_name == 'schedule'
name: Run Unit Tests with Twister (Daily)
run: |
export ZEPHYR_BASE=${PWD}/zephyr
$ZEPHYR_BASE/scripts/twister --subset ${{matrix.subset}}/${{ strategy.job-total }} ${TWISTER_COMMON} ${UNIT_TESTING} -T infuse-sdk
- if: github.event_name == 'schedule'
name: Run Board Tests with Twister (Daily)
run: |
export ZEPHYR_BASE=${PWD}/zephyr
$ZEPHYR_BASE/scripts/twister --subset ${{matrix.subset}}/${{ strategy.job-total }} ${TWISTER_COMMON} ${EXTRA_BOARDS} ${DAILY_OPTIONS} -T infuse-sdk
- if: github.event_name == 'schedule'
name: Run Vendor Tests with Twister (Daily)
run: |
export ZEPHYR_BASE=${PWD}/zephyr
echo 'twister ${TWISTER_COMMON} ${VENDOR_FILTER} ${DAILY_OPTIONS} -T infuse-sdk'
$ZEPHYR_BASE/scripts/twister --subset ${{matrix.subset}}/${{ strategy.job-total }} ${TWISTER_COMMON} ${VENDOR_FILTER} ${DAILY_OPTIONS} --all -T infuse-sdk
- name: Print ccache stats
if: always()
run: |
ccache -s -vv