Fixed semihost testing #230
This file contains 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: PlatformIO CI | |
on: | |
workflow_dispatch: | |
push: | |
paths: | |
- '.github/workflows/**' | |
- "firmware/src/**/*.c" | |
- "firmware/src/**/*.h" | |
- "firmware/*.json" | |
- "firmware/*.ini" | |
- "firmware/linker_options_pio.py" | |
pull_request: | |
paths: | |
- '.github/workflows/**' | |
- "firmware/src/**/*.c" | |
- "firmware/src/**/*.h" | |
- "firmware/*.json" | |
- "firmware/*.ini" | |
- "firmware/linker_options_pio.py" | |
jobs: | |
build_and_check: | |
name: Build and analyze | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache pip | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cache/pip | |
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} | |
restore-keys: | | |
${{ runner.os }}-pip- | |
- name: Cache PlatformIO | |
uses: actions/cache@v4 | |
with: | |
path: ~/.platformio | |
key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
- name: Install PlatformIO | |
run: | | |
python -m pip install --upgrade pip | |
pip install --upgrade platformio | |
- name: Run tests on the native platform | |
run: | | |
cd firmware | |
pio test -e PC_UnitTest | |
- name: PlatformIO build | |
run: | | |
cd firmware | |
pio run | |
- name: Upload firmware | |
uses: actions/upload-artifact@v4 | |
with: | |
name: firmware | |
path: firmware/.pio/build/ServoCAN_release/firmware.bin | |
- name: PlatformIO Check | |
run: | | |
cd firmware | |
echo "${{ secrets.MISRA_TEXT }}" > misra_rules_set_cppcheck.txt | |
cat misra_rules_set_cppcheck.txt | |
pio check --fail-on-defect high > report.txt | |
- name: Upload report | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pio check report | |
path: firmware/report.txt | |
SonarCloud: | |
name: Test using SonarCloud | |
needs: build_and_check | |
runs-on: ubuntu-latest | |
env: | |
SONAR_SCANNER_VERSION: 5.0.1.3006 # Find the latest version in the "Linux" link on this page: | |
# https://docs.sonarcloud.io/advanced-setup/ci-based-analysis/sonarscanner-cli/ | |
SONAR_SERVER_URL: "https://sonarcloud.io" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'temurin' | |
java-version: 17 | |
- name: Cache SonarCloud packages | |
uses: actions/cache@v4 | |
with: | |
path: ~/.sonar/cache | |
key: ${{ runner.os }}-sonar | |
restore-keys: ${{ runner.os }}-sonar | |
- name: Download and set up sonar-scanner | |
env: | |
SONAR_SCANNER_DOWNLOAD_URL: https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${{ env.SONAR_SCANNER_VERSION }}-linux.zip | |
run: | | |
mkdir -p $HOME/.sonar | |
curl -sSLo $HOME/.sonar/sonar-scanner.zip ${{ env.SONAR_SCANNER_DOWNLOAD_URL }} | |
unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ | |
echo "$HOME/.sonar/sonar-scanner-${{ env.SONAR_SCANNER_VERSION }}-linux/bin" >> $GITHUB_PATH | |
- name: Cache pip | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cache/pip | |
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} | |
restore-keys: | | |
${{ runner.os }}-pip- | |
- name: Cache PlatformIO | |
uses: actions/cache@v4 | |
with: | |
path: ~/.platformio | |
key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
- name: Install PlatformIO | |
run: | | |
python -m pip install --upgrade pip | |
pip install --upgrade platformio | |
- name: Platformio Compilation Database | |
run: | | |
cd firmware | |
pio run -t compiledb | |
- name: Upload Compilation Database | |
uses: actions/upload-artifact@v4 | |
with: | |
name: CompilationDB | |
path: firmware/compile_commands.json | |
- name: Install Arm GNU Toolchain (arm-none-eabi-gcc) | |
uses: carlosperate/arm-none-eabi-gcc-action@v1 | |
- name: Run sonar-scanner | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
SONAR_TOKEN: ${{ secrets.SONARCLOUD_TOKEN }} | |
run: | | |
cd firmware | |
# Set the property "sonar.cfamily.compile-commands" to the compilation database file | |
sonar-scanner --define sonar.host.url="${{ env.SONAR_SERVER_URL }}" --define sonar.cfamily.compile-commands=compile_commands.json | |