[projmgr] Add for-context
and for-compiler
spelling check
#1220
Workflow file for this run
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: projmgr | |
on: | |
workflow_call: | |
push: | |
branches: | |
- main | |
paths: | |
- '.github/workflows/projmgr.yml' | |
- '.github/matrix_includes_projmgr.json' | |
- 'CMakeLists.txt' | |
- 'libs/crossplatform/**' | |
- 'libs/rtefsutils/**' | |
- 'libs/xmlreader/**' | |
- 'libs/xmltree/**' | |
- 'libs/xmltreeslim/**' | |
- 'tools/projmgr/**' | |
- '!**/docs/**/*' | |
- '!**/*.md' | |
pull_request: | |
paths: | |
- '.github/workflows/projmgr.yml' | |
- '.github/matrix_includes_projmgr.json' | |
- 'CMakeLists.txt' | |
- 'libs/crossplatform/**' | |
- 'libs/rtefsutils/**' | |
- 'libs/xmlreader/**' | |
- 'libs/xmltree/**' | |
- 'libs/xmltreeslim/**' | |
- 'tools/projmgr/**' | |
- '!**/*.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/projmgr/')) || ((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: projmgr | |
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: true | |
# https://github.com/Open-CMSIS-Pack/devtools-build-action | |
- name: Build | |
uses: Open-CMSIS-Pack/devtools-build-action@arm64 | |
with: | |
target: projmgr | |
arch: ${{ matrix.arch }} | |
- name: Archive projmgr | |
uses: actions/upload-artifact@v3 | |
with: | |
name: projmgr-${{ matrix.target }}-${{ matrix.arch }} | |
path: ./build/tools/projmgr/${{ matrix.target }}-${{ matrix.arch }}/Release/${{ matrix.binary }} | |
retention-days: ${{ needs.setup.outputs.retention_days }} | |
if-no-files-found: error | |
build-swig: | |
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 | |
if: matrix.pyswig || matrix.goswig | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Build swig python libs | |
if: matrix.pyswig | |
uses: Open-CMSIS-Pack/devtools-build-action@arm64 | |
with: | |
add_cmake_variables: -DSWIG_LIBS=ON | |
add_cmake_build_args: --config Release | |
arch: ${{ matrix.arch }} | |
build_folder: buildswig | |
target: projmgr-python | |
- name: Build swig go libs | |
if: matrix.goswig | |
uses: Open-CMSIS-Pack/devtools-build-action@arm64 | |
with: | |
add_cmake_variables: -DSWIG_LIBS=ON | |
add_cmake_build_args: --config Release | |
arch: ${{ matrix.arch }} | |
build_folder: buildswig | |
target: projmgr-go | |
- name: Archive projmgr swig python libs | |
if: always() && matrix.pyswig | |
uses: actions/upload-artifact@v3 | |
with: | |
name: projmgr-swig-python-${{ matrix.target }}-${{ matrix.arch }} | |
path: | | |
./buildswig/tools/projmgr/swig/python/projmgr.py | |
./buildswig/tools/projmgr/swig/python/_projmgr.pyd | |
./buildswig/tools/projmgr/swig/python/_projmgr.so | |
retention-days: ${{ needs.setup.outputs.retention_days }} | |
- name: Archive projmgr swig go libs | |
if: always() && matrix.goswig | |
uses: actions/upload-artifact@v3 | |
with: | |
name: projmgr-swig-go-${{ matrix.target }}-${{ matrix.arch }} | |
path: | | |
./buildswig/tools/projmgr/swig/go/projmgr.go | |
./buildswig/tools/projmgr/swig/go/projmgr.so | |
retention-days: ${{ needs.setup.outputs.retention_days }} | |
release: | |
if: | | |
github.event_name == 'release' && | |
startsWith(github.ref, 'refs/tags/tools/projmgr/') | |
needs: [ build, build-swig, unittest, 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/projmgr/distribution/bin tools/projmgr/distribution/lib tools/projmgr/distribution/doc tools/projmgr/distribution/etc | |
cp tools/projmgr/docs/LICENSE.txt tools/projmgr/distribution/ | |
cp -r tools/projmgr/docs/Manual/* tools/projmgr/distribution/doc/ | |
cp -r tools/projmgr/schemas/* tools/projmgr/distribution/etc/ | |
cp -r tools/projmgr/templates/* tools/projmgr/distribution/etc/ | |
- name: Download projmgr linux-amd64 | |
uses: actions/download-artifact@v3 | |
with: | |
name: projmgr-linux-amd64 | |
path: tools/projmgr/distribution/bin/linux-amd64/ | |
- name: Download projmgr linux-arm64 | |
uses: actions/download-artifact@v3 | |
with: | |
name: projmgr-linux-arm64 | |
path: tools/projmgr/distribution/bin/linux-arm64/ | |
- name: Download projmgr macos-amd64 | |
uses: actions/download-artifact@v3 | |
with: | |
name: projmgr-darwin-amd64 | |
path: tools/projmgr/distribution/bin/darwin-amd64/ | |
- name: Download projmgr macos-arm64 | |
uses: actions/download-artifact@v3 | |
with: | |
name: projmgr-darwin-arm64 | |
path: tools/projmgr/distribution/bin/darwin-arm64/ | |
- name: Download projmgr windows-amd64 | |
uses: actions/download-artifact@v3 | |
with: | |
name: projmgr-windows-amd64 | |
path: tools/projmgr/distribution/bin/windows-amd64/ | |
- name: Download projmgr windows-arm64 | |
uses: actions/download-artifact@v3 | |
with: | |
name: projmgr-windows-arm64 | |
path: tools/projmgr/distribution/bin/windows-arm64/ | |
- name: Download projmgr-swig-python linux-amd64 | |
uses: actions/download-artifact@v3 | |
with: | |
name: projmgr-swig-python-linux-amd64 | |
path: tools/projmgr/distribution/lib/linux-amd64/python/ | |
- name: Download projmgr-swig-python macos-amd64 | |
if: ${{ !github.event.repository.private }} | |
uses: actions/download-artifact@v3 | |
with: | |
name: projmgr-swig-python-darwin-amd64 | |
path: tools/projmgr/distribution/lib/darwin-amd64/python/ | |
- name: Download projmgr-swig-python windows-amd64 | |
uses: actions/download-artifact@v3 | |
with: | |
name: projmgr-swig-python-windows-amd64 | |
path: tools/projmgr/distribution/lib/windows-amd64/python/ | |
- name: Download projmgr-swig-go linux-amd64 | |
uses: actions/download-artifact@v3 | |
with: | |
name: projmgr-swig-go-linux-amd64 | |
path: tools/projmgr/distribution/lib/linux-amd64/go/ | |
- name: Download projmgr-swig-go macos-amd64 | |
if: ${{ !github.event.repository.private }} | |
uses: actions/download-artifact@v3 | |
with: | |
name: projmgr-swig-go-darwin-amd64 | |
path: tools/projmgr/distribution/lib/darwin-amd64/go/ | |
- name: Zip distribution folder | |
run: zip -r projmgr.zip * | |
working-directory: tools/projmgr/distribution | |
- name: Attach zip archive to release assets | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: tools/projmgr/distribution/projmgr.zip | |
tag: ${{ github.ref }} | |
overwrite: true | |
asset_name: projmgr.zip | |
- name: Download test report windows-amd64 | |
uses: actions/download-artifact@v3 | |
with: | |
name: unit_test_result-windows-amd64 | |
path: tools/testreport/windows-amd64/ | |
- name: Download test report linux-amd64 | |
uses: actions/download-artifact@v3 | |
with: | |
name: unit_test_result-linux-amd64 | |
path: tools/testreport/linux-amd64/ | |
- name: Download test report macos-amd64 | |
if: ${{ !github.event.repository.private }} | |
uses: actions/download-artifact@v3 | |
with: | |
name: unit_test_result-darwin-amd64 | |
path: tools/testreport/darwin-amd64/ | |
- name: Zip test reports | |
run: zip -r testreport.zip * | |
working-directory: tools/testreport | |
- name: Attach test report archive to release assets | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: tools/testreport/testreport.zip | |
tag: ${{ github.ref }} | |
overwrite: true | |
asset_name: testreport.zip | |
- name: Download coverage report | |
uses: actions/download-artifact@v3 | |
with: | |
name: coverage-report | |
path: tools/coverage/ | |
- name: Zip coverage reports | |
run: zip -r coverage.zip coverage_projmgr | |
working-directory: tools/coverage | |
- name: Attach coverage archive to release assets | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: tools/coverage/coverage.zip | |
tag: ${{ github.ref }} | |
overwrite: true | |
asset_name: coverage.zip | |
unittest: | |
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: true | |
- 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 ProjMgrUnitTests | |
uses: Open-CMSIS-Pack/devtools-build-action@arm64 | |
with: | |
arch: ${{ matrix.arch }} | |
build_type: Debug | |
target: ProjMgrUnitTests | |
- name: Run projmgr unit tests | |
if: (matrix.arch != 'arm64') | |
run: | | |
ctest -V -C Debug -R ProjMgrUnitTests | |
working-directory: ./build | |
- name: Archive unit tests results | |
if: always() && (matrix.arch != 'arm64') | |
uses: actions/upload-artifact@v3 | |
with: | |
name: unittest-${{ matrix.target }}-${{ matrix.arch }} | |
path: ./build/Testing/Temporary/LastTest.log | |
retention-days: ${{ needs.setup.outputs.retention_days }} | |
if-no-files-found: error | |
- name: Archive gtest report | |
if: always() && (matrix.arch != 'arm64') | |
uses: actions/upload-artifact@v3 | |
with: | |
name: unit_test_result-${{ matrix.target }}-${{ matrix.arch }} | |
path: ./build/test_reports/projmgrunittests-*.xml | |
retention-days: ${{ needs.setup.outputs.retention_days }} | |
if-no-files-found: error | |
- name: Testspace push test content | |
if: ${{ (!github.event.repository.private) && always() && (matrix.arch != 'arm64') }} | |
run: | | |
testspace "[${{ github.workflow }} / Test Report/ ${{ matrix.target }}-${{ matrix.arch }}]./build/test_reports/projmgrunittests-*.xml" | |
coverage: | |
if: | | |
(github.event_name == 'pull_request') || | |
(github.event_name == 'push') || | |
(github.event_name == 'release' && startsWith(github.ref, 'refs/tags/tools/projmgr/')) || | |
((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 linux deps | |
run: | | |
sudo apt-get update | |
sudo apt-get install \ | |
lcov | |
- name: Checkout devtools | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- 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 ProjMgrUnitTests | |
uses: Open-CMSIS-Pack/devtools-build-action@arm64 | |
with: | |
add_cmake_variables: -DCOVERAGE=ON | |
arch: amd64 | |
build_type: Debug | |
target: ProjMgrUnitTests | |
- name: Run ProjMgrUnitTests | |
run: | | |
ctest -V -C Debug -R ProjMgrUnitTests | |
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 test report | |
if: (github.event_name == 'push') | |
uses: actions/upload-artifact@v3 | |
with: | |
name: unit_test_result-linux-amd64 | |
path: ./build/test_reports/projmgrunittests-*.xml | |
retention-days: ${{ steps.var.outputs.retention_days }} | |
if-no-files-found: error | |
# 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/projmgr | |
- name: Generate coverage report | |
run: | | |
lcov-1.15/bin/lcov --rc lcov_branch_coverage=1 --rc geninfo_no_exception_branch=1 -c --directory . --output-file full_coverage.info | |
lcov-1.15/bin/lcov --rc lcov_branch_coverage=1 --rc geninfo_no_exception_branch=1 -e full_coverage.info '/tools/projmgr/include/*' '*/tools/projmgr/src/*' -o coverage_projmgr.info | |
genhtml coverage_projmgr.info --output-directory coverage_projmgr --branch-coverage | |
working-directory: ./build/tools/projmgr/ | |
# 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/projmgr/coverage_projmgr.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/projmgr/coverage_projmgr.info | |
fail_ci_if_error: true | |
flags: projmgr-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/projmgr/coverage_projmgr/ | |
./build/tools/projmgr/coverage_projmgr.info | |
retention-days: ${{ steps.var.outputs.retention_days }} | |
if-no-files-found: error | |
test-results-preparation: | |
name: "Publish Tests Results" | |
needs: [ unittest ] | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Event File | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Event File | |
path: ${{ github.event_path }} |