From 40e07b1272c55771c6b1d252f6351290c485e53f Mon Sep 17 00:00:00 2001 From: MiloradCvjetkovic Date: Wed, 8 Jul 2026 10:25:18 +0200 Subject: [PATCH] Add build and run workflows --- .github/workflows/build.yml | 74 +++++++++++++ .../workflows/run_on_sim_AppKit-E7_USB.yml | 103 ++++++++++++++++++ README.md | 6 +- 3 files changed, 181 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/run_on_sim_AppKit-E7_USB.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..a186f3c --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,74 @@ +# Copyright (c) 2026 Arm Limited (or its affiliates). All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: Build all examples +on: + workflow_dispatch: + pull_request: + branches: [main] + push: + branches: [main] + +jobs: + CI: + runs-on: ubuntu-24.04 + + strategy: + fail-fast: false + matrix: + config: + [ # example directory, toolchain + { dir: ./Alif/AppKit-E7_USB, toolchain: AC6, }, + { dir: ./Alif/DevKit-E8_ETH, toolchain: AC6, }, + { dir: ./ST/B-U585I-IOT02A/KeywordSpotting, toolchain: AC6, }, + { dir: ./ST/B-U585I-IOT02A/MotionRecognition, toolchain: AC6, } + ] + + steps: + - name: Checkout this repository + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + + - name: Install vcpkg + uses: ARM-software/cmsis-actions/setup-vcpkg@v1 + with: + version: 2026.04.27 + + - name: Install required tools + uses: ARM-software/cmsis-actions/vcpkg@8a50b77681a484568e08f31fb7c2285c4735f682 # v1.3 + with: + config: "./vcpkg-configuration.json" + cache: "Tools" + + - name: Activate Arm tool license + uses: ARM-software/cmsis-actions/armlm@8a50b77681a484568e08f31fb7c2285c4735f682 # v1.3 + + - name: Initialize CMSIS pack root folder + run: | + cpackget init https://www.keil.com/pack/index.pidx + cpackget update-index + + - name: Cache CMSIS packs + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 + with: + key: cmsis-packs-${{ hashFiles('**/*.csolution.yml', '**/*.cproject.yml', '**/*.clayer.yml') }} + restore-keys: | + cmsis-packs- + path: /home/runner/.cache/arm/packs + + - name: Build example in ${{matrix.config.dir}} with ${{matrix.config.toolchain}} toolchain + working-directory: ${{matrix.config.dir}} + run: | + cbuild SDS.csolution.yml --toolchain ${{matrix.config.toolchain}} --packs --update-rte diff --git a/.github/workflows/run_on_sim_AppKit-E7_USB.yml b/.github/workflows/run_on_sim_AppKit-E7_USB.yml new file mode 100644 index 0000000..9fac8f2 --- /dev/null +++ b/.github/workflows/run_on_sim_AppKit-E7_USB.yml @@ -0,0 +1,103 @@ +# Copyright (c) 2026 Arm Limited (or its affiliates). All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: Build and run AppKit-E7_USB example on simulator +on: + workflow_dispatch: + pull_request: + branches: [main] + push: + branches: [main] + +env: + DIR: ./Alif/AppKit-E7_USB + +jobs: + CI: + runs-on: ubuntu-24.04 + + steps: + - name: Checkout this repository + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + + - name: Setup Python 3.13 + uses: actions/setup-python@v6 + with: + python-version: '3.13' + + - name: Install required Python packages + run: pip install pyyaml asyncio + + - name: Install vcpkg + uses: ARM-software/cmsis-actions/setup-vcpkg@v1 + with: + version: 2026.04.27 + + - name: Install required tools + uses: ARM-software/cmsis-actions/vcpkg@8a50b77681a484568e08f31fb7c2285c4735f682 # v1.3 + with: + config: "./vcpkg-configuration.json" + cache: "Tools" + + - name: Activate Arm tool license + uses: ARM-software/cmsis-actions/armlm@8a50b77681a484568e08f31fb7c2285c4735f682 # v1.3 + + - name: Initialize CMSIS pack root folder + run: | + cpackget init https://www.keil.com/pack/index.pidx + cpackget update-index + + - name: Cache CMSIS packs + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 + with: + key: cmsis-packs-${{ hashFiles('**/*.csolution.yml', '**/*.cproject.yml', '**/*.clayer.yml') }} + restore-keys: | + cmsis-packs- + path: /home/runner/.cache/arm/packs + + - name: Build AlgorithmTest project for simulator target (SSE-300-U55) + working-directory: ${{env.DIR}} + run: | + cbuild SDS.csolution.yml --context AlgorithmTest.Debug+SSE-300-U55 --packs --update-rte + + - name: Run on simulator + working-directory: ${{env.DIR}} + run: | + FVP_Corstone_SSE-300_Ethos-U55 -f ./Board/Corstone-300/fvp_config.txt -a ./out/AlgorithmTest/SSE-300-U55/Debug/AlgorithmTest.hex --simlimit 120 || true + + - name: Print sdsio.log file + working-directory: ${{env.DIR}}/algorithm/SDS Recordings + run: | + cat "sdsio.log" + + - name: Compare ML_Out.0.sds and ML_Out.0.p.sds files + working-directory: ${{env.DIR}}/algorithm/SDS Recordings + run: | + if cmp -s "ML_Out.0.sds" "ML_Out.0.p.sds"; then + echo "::notice title=PASS::ML_Out.0.sds and ML_Out.0.p.sds files are identical." + else + echo "::error title=FAIL::ML_Out.0.sds and ML_Out.0.p.sds files are different. See uploaded artifacts for details." + exit 1 + fi + + - name: Upload build and run artifacts + if: always() + uses: actions/upload-artifact@v7 + with: + name: Run_on_sim_AppKit-E7_USB + path: | + ${{env.DIR}}/out + ${{env.DIR}}/algorithm/SDS Recordings diff --git a/README.md b/README.md index 3c179ba..e291c41 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ [![License](https://img.shields.io/github/license/Arm-Examples/Safety-Example-STM32?label)](https://github.com/Arm-Examples/Safety-Example-STM32/blob/main/LICENSE) +[![Build](https://img.shields.io/github/actions/workflow/status/Arm-Examples/SDS-Examples/build.yml?logo=arm&logoColor=0091bd&label=Build)](https://github.com/Arm-Examples/SDS-Examples/tree/main/.github/workflows/build.yml) +[![Run on sim AppKit-E7_USB](https://img.shields.io/github/actions/workflow/status/Arm-Examples/SDS-Examples/run_on_sim_AppKit-E7_USB.yml?logo=arm&logoColor=0091bd&label=Run%20on%20sim%20AppKit-E7_USB)](https://github.com/Arm-Examples/SDS-Examples/tree/main/.github/workflows/run_on_sim_AppKit-E7_USB.yml) [![Algorithm Test ST/B-U585I-IOT02A/MotionRecognition](https://img.shields.io/github/actions/workflow/status/Arm-Examples/SDS-Examples/AlgorithmTest_ST_B-U585I-IOT02A_MR.yaml?logo=arm&logoColor=0091bd&label=Algorithm%20Test%20ST/B-U585I-IOT02A/MotionRecognition)](./.github/workflows/AlgorithmTest_ST_B-U585I-IOT02A_MR.yaml) [![AC6 Test build](https://img.shields.io/github/actions/workflow/status/Arm-Examples/SDS-Examples/ac6_test_build.yaml?logo=arm&logoColor=0091bd&label=AC6_Test_build)](https://github.com/Arm-Examples/SDS-Examples/tree/main/.github/workflows/ac6_test_build.yaml) [![GCC Test build](https://img.shields.io/github/actions/workflow/status/Arm-Examples/SDS-Examples/gcc_test_build.yaml?logo=arm&logoColor=0091bd&label=GCC_Test_build)](https://github.com/Arm-Examples/SDS-Examples/tree/main/.github/workflows/gcc_test_build.yaml) @@ -30,7 +32,7 @@ This repository contains examples that show the usage of the [Synchronous Data S The SDS examples are configured for various Evaluation Boards and use the [MDK-Middleware](https://www.keil.arm.com/packs/mdk-middleware-keil/overview/) for the [SDSIO Interface](https://arm-software.github.io/SDS-Framework/main/sdsio.html). New hardware targets can be added using board layers that provide the required API interfaces. The examples are configured for [Keil Studio for VS Code](https://www.keil.arm.com/). -Run a blinky example for the related board first to verify tool installation. +Run a Blinky example for the related board first to verify tool installation. | Example | Description | |--- |--- | @@ -48,7 +50,7 @@ Run a blinky example for the related board first to verify tool installation. |--- |--- | | [vcpkg-configuration.json](vcpkg-configuration.json) | Setup for development tools on desktop. | | [.ci](./.ci) | Files that are related to the Continuous Integration (CI) tests. | -| [.github/workflows](./.github/workflows) | [GitHub Actions](#github-actions) scripts for build and execution tests. | +| [.github/workflows](./.github/workflows) | GitHub Actions scripts for build and execution tests. |