Merge pull request #304 from prusa3d/vintagepc/build-with-actions

Add Actions firmware build
pull/308/head
3d-gussner 2023-09-18 14:47:51 +02:00 committed by GitHub
commit a7286de016
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 148 additions and 3 deletions

130
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,130 @@
name: ci-build
on:
pull_request:
branches:
- '*'
push:
branches: [ main, MMU_* ]
jobs:
build:
runs-on: ubuntu-latest
steps:
# setup base required dependencies
- name: Setup dependencies
run: |
sudo apt-get install cmake ninja-build python3-pyelftools python3-regex python3-polib
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Checkout ${{ github.event.pull_request.head.ref }}
uses: actions/checkout@v3
if: ${{ github.event.pull_request }}
with:
ref: ${{ github.event.pull_request.head.sha }}
submodules: true
- name: Checkout ${{ github.event.ref }}
uses: actions/checkout@v3
if: ${{ !github.event.pull_request }}
with:
ref: ${{ github.event.ref }}
submodules: true
- name: Cache Dependencies
uses: actions/cache@v3.0.11
id: cache-pkgs
with:
path: ".dependencies"
key: "build-deps-1_0_0-linux"
- name: Setup build dependencies
run: |
./utils/bootstrap.py
- name: Cache permissions
run: sudo chmod -R 744 .dependencies
- name: Build
run: |
mkdir build
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE="../cmake/AvrGcc.cmake" -DCMAKE_BUILD_TYPE=Release -G Ninja
ninja
- name: Upload artifacts
if: ${{ !github.event.pull_request }}
uses: actions/upload-artifact@v3.1.1
with:
name: Firmware
path: build/*.hex
tests:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
# setup base required dependencies
- name: Setup dependencies
run: |
sudo apt-get install gcc-11 g++11 lcov cmake ninja-build python3-pyelftools python3-regex python3-polib
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Checkout ${{ github.event.pull_request.head.ref }}
uses: actions/checkout@v3
if: ${{ github.event.pull_request }}
with:
ref: ${{ github.event.pull_request.head.sha }}
submodules: true
- name: Checkout ${{ github.event.ref }}
uses: actions/checkout@v3
if: ${{ !github.event.pull_request }}
with:
ref: ${{ github.event.ref }}
submodules: true
- name: Cache Dependencies
uses: actions/cache@v3.0.11
id: cache-pkgs
with:
path: ".dependencies"
key: "build-deps-1_0_0-linux"
- name: Setup build dependencies
run: |
./utils/bootstrap.py
- name: Cache permissions
run: sudo chmod -R 744 .dependencies
- name: Build
id: tests_run
continue-on-error: true
run: |
mkdir build
cd build
cmake .. -G Ninja
ninja test_coverage_report
- name: Upload artifacts
uses: actions/upload-artifact@v3.1.1
with:
name: Coverage
path: build/Coverage
- name: Add PR Comment
if: ${{ github.event.pull_request }}
uses: mshick/add-pr-comment@v2
with:
message-path: build/Summary.txt
message-id: "coverage"
- name: Report failure
if: steps.tests_run.outcome == 'failure'
run: echo ${{ steps.tests_run.outcome }} && test -n ""

View File

@ -24,10 +24,20 @@ jobs:
- name: Checkout base - name: Checkout base
uses: actions/checkout@v3 uses: actions/checkout@v3
- name: Cache Dependencies
uses: actions/cache@v3.0.11
id: cache-pkgs
with:
path: ".dependencies"
key: "build-deps-1_0_0-linux"
- name: Setup build dependencies - name: Setup build dependencies
run: | run: |
./utils/bootstrap.py ./utils/bootstrap.py
- name: Cache permissions
run: sudo chmod -R 744 .dependencies
- name: Build base - name: Build base
run: | run: |
rm -rf build-base rm -rf build-base

View File

@ -15,7 +15,7 @@ if(GCOV_ENABLE)
COMMAND ${CMAKE_COMMAND} -E remove ${PROJECT_BINARY_DIR}/.ctest-finished COMMAND ${CMAKE_COMMAND} -E remove ${PROJECT_BINARY_DIR}/.ctest-finished
) )
set(ctest_test_args --timeout 30 --output-on-failure) set(ctest_test_args --timeout 180 --output-on-failure)
include(ProcessorCount) include(ProcessorCount)
ProcessorCount(N) ProcessorCount(N)
@ -55,7 +55,8 @@ if(GCOV_ENABLE)
COMMAND tar -zcvf Coverage.tar.gz Coverage COMMAND tar -zcvf Coverage.tar.gz Coverage
# Cheat and compare a file to itself to check for existence. File-Not-Found is a failure # Cheat and compare a file to itself to check for existence. File-Not-Found is a failure
# code. # code.
COMMAND ../../utils/gcovr.py -r . -e '../../tests' -e '../../lib/Catch2' | tee Summary.txt COMMAND ${PROJECT_SOURCE_DIR}/utils/gcovr.py -r ${CMAKE_SOURCE_DIR} -e 'tests' -e 'lib/Catch2' |
tee Summary.txt
COMMAND ${CMAKE_COMMAND} -E compare_files ${PROJECT_BINARY_DIR}/.ctest-finished COMMAND ${CMAKE_COMMAND} -E compare_files ${PROJECT_BINARY_DIR}/.ctest-finished
${PROJECT_BINARY_DIR}/.ctest-finished ${PROJECT_BINARY_DIR}/.ctest-finished
BYPRODUCTS ${PROJECT_BINARY_DIR}/Summary.txt ${PROJECT_BINARY_DIR}/Coverage.tar.gz BYPRODUCTS ${PROJECT_BINARY_DIR}/Summary.txt ${PROJECT_BINARY_DIR}/Coverage.tar.gz

View File

@ -619,6 +619,10 @@ def process_gcov_data(data_fname, covdata, source_fname, options):
is_code_statement = False is_code_statement = False
if tmp[0] == '-' or (excluding and tmp[0] in "#=0123456789"): if tmp[0] == '-' or (excluding and tmp[0] in "#=0123456789"):
is_code_statement = True is_code_statement = True
if len(segments) < 3:
noncode.add(lineno)
continue
code = segments[2].strip() code = segments[2].strip()
# remember certain non-executed lines # remember certain non-executed lines
if excluding or is_non_code(segments[2]): if excluding or is_non_code(segments[2]):
@ -634,7 +638,7 @@ def process_gcov_data(data_fname, covdata, source_fname, options):
uncovered_exceptional.add(lineno) uncovered_exceptional.add(lineno)
elif tmp[0] in "0123456789": elif tmp[0] in "0123456789":
is_code_statement = True is_code_statement = True
covered[lineno] = int(segments[0].strip()) covered[lineno] = int(segments[0].strip().rstrip('*'))
elif tmp.startswith('branch'): elif tmp.startswith('branch'):
exclude_branch = False exclude_branch = False
if options.exclude_unreachable_branches and \ if options.exclude_unreachable_branches and \