Skip to content

Commit

Permalink
Merge pull request #304 from prusa3d/vintagepc/build-with-actions
Browse files Browse the repository at this point in the history
Add Actions firmware build
  • Loading branch information
3d-gussner authored Sep 18, 2023
2 parents 03b0d6f + b0eac8f commit a7286de
Show file tree
Hide file tree
Showing 4 changed files with 148 additions and 3 deletions.
130 changes: 130 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -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/[email protected]
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/[email protected]
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/[email protected]
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/[email protected]
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 ""
10 changes: 10 additions & 0 deletions .github/workflows/pr-size.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,20 @@ jobs:
- name: Checkout base
uses: actions/checkout@v3

- name: Cache Dependencies
uses: actions/[email protected]
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 base
run: |
rm -rf build-base
Expand Down
5 changes: 3 additions & 2 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ if(GCOV_ENABLE)
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)
ProcessorCount(N)
Expand Down Expand Up @@ -55,7 +55,8 @@ if(GCOV_ENABLE)
COMMAND tar -zcvf Coverage.tar.gz Coverage
# Cheat and compare a file to itself to check for existence. File-Not-Found is a failure
# 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
${PROJECT_BINARY_DIR}/.ctest-finished
BYPRODUCTS ${PROJECT_BINARY_DIR}/Summary.txt ${PROJECT_BINARY_DIR}/Coverage.tar.gz
Expand Down
6 changes: 5 additions & 1 deletion utils/gcovr.py
Original file line number Diff line number Diff line change
Expand Up @@ -619,6 +619,10 @@ def process_gcov_data(data_fname, covdata, source_fname, options):
is_code_statement = False
if tmp[0] == '-' or (excluding and tmp[0] in "#=0123456789"):
is_code_statement = True
if len(segments) < 3:
noncode.add(lineno)
continue

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

0 comments on commit a7286de

Please sign in to comment.