Skip to content

[projmgr] Forbid version for pack selection with path specified #43

[projmgr] Forbid version for pack selection with path specified

[projmgr] Forbid version for pack selection with path specified #43

Workflow file for this run

name: svdconv
on:
workflow_call:
push:
branches:
- main
paths:
- '.github/workflows/svdconv.yml'
- '.github/workflows/unit_test_results.yml'
- '.github/matrix_includes_svdconv.json'
- 'CMakeLists.txt'
- 'tools/svdconv/**'
- 'libs/xml**'
- '!**/docs/**/*'
- '!**/*.md'
pull_request:
paths:
- '.github/workflows/svdconv.yml'
- '.github/workflows/unit_test_results.yml'
- '.github/matrix_includes_svdconv.json'
- 'CMakeLists.txt'
- 'tools/svdconv/**'
- 'libs/xml**'
- '!**/docs/**/*'
- '!**/*.md'
release:
types: [published]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
setup:
uses: Open-CMSIS-Pack/devtools/.github/workflows/shared_setup_env.yml@main
with:
run_if: ${{ fromJSON((github.event_name == 'pull_request') || (github.event_name == 'release' && startsWith(github.ref, 'refs/tags/tools/svdconv/')) || ((github.event.schedule != '') && (!github.event.repository.private))) }}
matrix_prep:
needs: setup
uses: Open-CMSIS-Pack/devtools/.github/workflows/shared_matrix_prep.yml@main
with:
workflow_name: svdconv
build:
needs: [ setup, matrix_prep ]
runs-on: ${{ matrix.runs_on }}
timeout-minutes: 15
strategy:
fail-fast: true
matrix: ${{ fromJson(needs.matrix_prep.outputs.matrix) }}
steps:
- name: Checkout devtools
uses: actions/checkout@v4
with:
submodules: recursive
- name: Build svdconv
uses: Open-CMSIS-Pack/devtools-build-action@arm64
with:
target: svdconvdist
arch: ${{ matrix.arch }}
- name: Archive svdconv binary
if: ${{ github.event_name != 'release' || (needs.setup.outputs.nightly == 'true')}}
uses: actions/upload-artifact@v3
with:
name: svdconv-${{ matrix.target }}-${{ matrix.arch }}
path: ./build/tools/svdconv/SVDConv/svdconv-*-${{ matrix.target }}-${{ matrix.arch }}.*
retention-days: ${{ needs.setup.outputs.retention_days }}
if-no-files-found: error
- name: Attach svdconv binary to release
if: ${{ github.event_name == 'release' }}
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref }}
overwrite: true
file_glob: true
file: build/tools/svdconv/SVDConv/svdconv-*-${{ matrix.target }}-${{ matrix.arch }}.*
test:
needs: [ setup, matrix_prep ]
runs-on: ${{ matrix.runs_on }}
timeout-minutes: 15
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.matrix_prep.outputs.matrix) }}
steps:
- name: Checkout devtools
uses: actions/checkout@v4
with:
submodules: recursive
- name: Testspace client install & config
if: ${{ !github.event.repository.private }}
uses: testspace-com/setup-testspace@v1
with:
domain: ${{github.repository_owner}}
# https://github.com/Open-CMSIS-Pack/devtools-build-action
- name: Build SVDConvUnitTests
uses: Open-CMSIS-Pack/devtools-build-action@arm64
with:
arch: ${{ matrix.arch }}
build_type: Debug
target: SVDConvUnitTests
- name: Run svdconv unit tests
if: (matrix.arch != 'arm64')
run: |
ctest -V -R SVDConvUnitTests
working-directory: ./build
# https://github.com/Open-CMSIS-Pack/devtools-build-action
- name: Build SvdConvIntegTests
uses: Open-CMSIS-Pack/devtools-build-action@arm64
with:
arch: ${{ matrix.arch }}
build_type: Debug
target: SvdConvIntegTests
- name: Run svdconv integ tests
if: matrix.arch != 'arm64'
run: |
ctest -V -R SvdConvIntegTests
working-directory: ./build
- name: Archive unit test results
if: always() && (matrix.arch != 'arm64')
uses: actions/upload-artifact@v3
with:
name: unit_test_result-${{ matrix.target }}-${{ matrix.arch }}
path: ./build/test_reports/svdconvunittests-*.xml
if-no-files-found: error
retention-days: ${{ needs.setup.outputs.retention_days }}
- name: Archive integration test results
if: always() && (matrix.arch != 'arm64')
uses: actions/upload-artifact@v3
with:
name: integ_test_result-${{ matrix.target }}-${{ matrix.arch }}
path: ./build/test_reports/svdconvintegtests-*.xml
if-no-files-found: error
retention-days: ${{ needs.setup.outputs.retention_days }}
- name: Testspace push unit test content
if: ${{ (!github.event.repository.private) && always() && (matrix.arch != 'arm64') }}
run: |
testspace "[${{ github.workflow }} / Test Report/ ${{ matrix.target }}-${{ matrix.arch }}]./build/test_reports/svdconvunittests-*.xml"
testspace "[${{ github.workflow }} / Test Report/ ${{ matrix.target }}-${{ matrix.arch }}]./build/test_reports/svdconvintegtests-*.xml"
coverage:
if: |
(github.event_name == 'pull_request') ||
(github.event_name == 'push') ||
(github.event_name == 'release' && startsWith(github.ref, 'refs/tags/tools/svdconv/')) ||
((github.event.schedule != '') && (!github.event.repository.private))
env:
lcov_base: https://github.com/linux-test-project/lcov/releases/download/v1.15/
lcov_installer: lcov-1.15.tar.gz
runs-on: ubuntu-22.04
timeout-minutes: 15
steps:
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install \
lcov
- name: Checkout devtools
uses: actions/checkout@v4
with:
submodules: recursive
- name: Testspace client install & config
if: ${{ !github.event.repository.private }}
uses: testspace-com/setup-testspace@v1
with:
domain: ${{github.repository_owner}}
# https://github.com/Open-CMSIS-Pack/devtools-build-action
- name: Build SVDConvUnitTests
uses: Open-CMSIS-Pack/devtools-build-action@arm64
with:
add_cmake_variables: -DCOVERAGE=ON
arch: amd64
build_type: Debug
target: SVDConvUnitTests
# https://github.com/Open-CMSIS-Pack/devtools-build-action
- name: Build SvdConvIntegTests
uses: Open-CMSIS-Pack/devtools-build-action@arm64
with:
add_cmake_variables: -DCOVERAGE=ON
arch: amd64
build_type: Debug
target: SvdConvIntegTests
- name: Run svdconv tests
run: |
ctest -V -C Debug -R SVDConvUnitTests
ctest -V -C Debug -R SvdConvIntegTests
working-directory: ./build
- name: Get retention days
id: var
run: |
echo "retention_days=$(echo '${{ (!github.event.repository.private && (github.event_name == 'push' || github.event.schedule != '')) && '7' || '1' }}')" >> $GITHUB_OUTPUT
- name: Archive unit test results
if: (github.event_name == 'push')
uses: actions/upload-artifact@v3
with:
name: unit_test_report-linux-amd64
path: ./build/test_reports/svdconvunittests-*.xml
if-no-files-found: error
retention-days: ${{ steps.var.outputs.retention_days }}
- name: Archive integration test results
if: (github.event_name == 'push')
uses: actions/upload-artifact@v3
with:
name: integ_test_report-linux-amd64
path: ./build/test_reports/svdconvintegtests-*.xml
if-no-files-found: error
retention-days: ${{ steps.var.outputs.retention_days }}
# Needs to be removed once the bug is resolved
# lcov reporting 1.14 on 1.15 version
# https://groups.google.com/g/linux.debian.bugs.dist/c/a9SZGCENJ2s?pli=1
- name: Setup lcov1.15
run: |
wget -q ${{ env.lcov_base }}/${{ env.lcov_installer }}
tar -xvf ${{ env.lcov_installer }}
working-directory: ./build/tools/svdconv
- name: Generate coverage report
run: |
lcov-1.15/bin/lcov --rc lcov_branch_coverage=1 --rc geninfo_no_exception_branch=1 --rc lcov_branch_coverage=1 -c --directory . --output-file full_coverage.info
lcov-1.15/bin/lcov --rc lcov_branch_coverage=1 --rc geninfo_no_exception_branch=1 --rc lcov_branch_coverage=1 -e full_coverage.info \
'*/tools/svdconv/SVDConv/include/*' \
'*/tools/svdconv/SVDConv/src/*' \
'*/tools/svdconv/SVDGenerator/include/*' \
'*/tools/svdconv/SVDGenerator/src/*' \
'*/tools/svdconv/SVDModel/include/*' \
'*/tools/svdconv/SVDModel/src/*' \
-o coverage_svdconv.info
genhtml coverage_svdconv.info --output-directory coverage_svdconv --branch-coverage
working-directory: ./build/tools/svdconv
# testspace changes start
- name: Set up Python
if: ${{ !github.event.repository.private }}
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install dependencies
if: ${{ !github.event.repository.private }}
run: |
python -m pip install --upgrade pip
pip install lcov_cobertura
- name: Convert to xml
if: ${{ !github.event.repository.private }}
run: |
lcov_cobertura ./build/tools/svdconv/coverage_svdconv.info
- name: Testspace push coverage
if: ${{ !github.event.repository.private }}
run: |
testspace "[${{ github.workflow }} / Code Coverage]./coverage.xml"
# testspace changes start
- name: Upload Report to Codecov
if: ${{ !github.event.repository.private }}
uses: Wandalen/[email protected]
with:
action: codecov/codecov-action@v3
with: |
files: ./build/tools/svdconv/coverage_svdconv.info
fail_ci_if_error: true
flags: svdconv-cov
functionalities: fix
attempt_limit: 3
attempt_delay: 5000
- name: Archive coverage report
uses: actions/upload-artifact@v3
with:
name: coverage-report
path: |
./build/tools/svdconv/coverage_svdconv/
./build/tools/svdconv/coverage_svdconv.info
retention-days: ${{ steps.var.outputs.retention_days }}
if-no-files-found: error
release:
if: |
github.event_name == 'release' &&
startsWith(github.ref, 'refs/tags/tools/svdconv/')
needs: [ build, test, coverage ]
runs-on: ubuntu-22.04
timeout-minutes: 15
steps:
- name: Checkout devtools
uses: actions/checkout@v4
- name: Create distribution folders
run: |
mkdir -p tools/svdconv/distribution/
- name: Download coverage report
uses: actions/download-artifact@v3
with:
name: coverage-report
path: tools/svdconv/distribution/coverage/
- name: Zip distribution folder
run: zip -r svdconv.zip *
working-directory: tools/svdconv/distribution
- name: Attach zip archive to release assets
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: tools/svdconv/distribution/svdconv.zip
tag: ${{ github.ref }}
overwrite: true
asset_name: svdconv.zip
test-results-preparation:
name: "Publish Tests Results"
needs: [ test ]
runs-on: ubuntu-22.04
steps:
- name: Event File
uses: actions/upload-artifact@v3
with:
name: Event File
path: ${{ github.event_path }}