Run tests with twister #1562
This file contains hidden or 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 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 |