# Copyright (c) 2022-2023 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 name: Build Zephyr samples with Twister # Workflow triggers on PRs, pushes to main, once per day at midnight and can be started manually. on: # By default, pull_request includes: opened, synchronize, or reopened pull_request: branches: - main push: branches: - main schedule: - cron: 0 0 * * * # When triggered manually, ask for Zephyr and MCUBoot versions to check out workflow_dispatch: inputs: version_zephyr: description: 'Which Zephyr version to checkout?' required: true default: 'main' version_mcuboot: description: 'Which MCUBoot version to checkout?' required: true default: 'main' env: ZEPHYR_VERSION: 'main' MCUBOOT_VERSION: 'main' # Only cancel ongoing runs for PRs concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true jobs: build_zephyr_with_twister: runs-on: ubuntu-latest # Docker image from the zephyr upstream. Includes SDK and other required tools container: image: zephyrprojectrtos/ci:v0.26.4 options: '--entrypoint /bin/bash' volumes: - /home/runners/zephyrproject:/github/cache/zephyrproject env: ZEPHYR_SDK_INSTALL_DIR: /opt/toolchains/zephyr-sdk-0.16.1 steps: - name: Set versions when workflow_dispatch if: github.event_name == 'workflow_dispatch' run: | echo "ZEPHYR_VERSION=${{ github.event.inputs.version_zephyr }}" >> $GITHUB_ENV echo "MCUBOOT_VERSION=${{ github.event.inputs.version_mcuboot }}" >> $GITHUB_ENV - name: Set versions when pull_request if: github.event_name == 'pull_request' run: | echo "MCUBOOT_VERSION=${{ github.event.pull_request.head.sha }}" >> $GITHUB_ENV - name: Checkout Zephyr uses: actions/checkout@v2 with: repository: 'zephyrproject-rtos/zephyr' ref: ${{ env.ZEPHYR_VERSION }} path: 'repos/zephyr' - name: Setup Zephyr working-directory: repos/zephyr run: | west init -l . west update - name: Checkout MCUBoot uses: actions/checkout@v2 with: repository: 'mcu-tools/mcuboot' ref: ${{ env.MCUBOOT_VERSION }} path: 'repos/bootloader/mcuboot' - name: Run Twister tests working-directory: repos/zephyr env: test_paths: > -T ../bootloader/mcuboot/boot/zephyr -T ./tests/subsys/dfu -T ./samples/subsys/mgmt/mcumgr/smp_svr run: | export ZEPHYR_BASE=${PWD} export ZEPHYR_TOOLCHAIN_VARIANT=zephyr echo "Using Zephyr version: ${{ env.ZEPHYR_VERSION }}" echo "Using Mcuboot version: ${{ env.MCUBOOT_VERSION }}" ./scripts/twister --inline-logs -v -N -M --integration --overflow-as-errors --retry-failed 2 ${test_paths} - name: Upload Tests Results uses: actions/upload-artifact@v4 if: always() with: name: Tests Results if-no-files-found: ignore path: | repos/zephyr/twister-out/twister.xml