Skip to content

Create new CobcSoftware folder/component #773

Create new CobcSoftware folder/component

Create new CobcSoftware folder/component #773

Workflow file for this run

name: Continuous Integration
# format-and-spell-check : push, pull_request, release
# coverage : push, pull_request, release
# sanitize : push, pull_request, release
# build-cobc : push, pull_request (Upload of artifacts), release (upload binaries to release)
# test : push, pull_request, release
# docs : release
on:
push:
branches:
- master
pull_request:
branches:
- master
release:
types:
- created
jobs:
format-and-spell-check:
runs-on: ubuntu-latest
container: tuwienspaceteam/sts1-cobc:1.8.0-linux-x86
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.8"
- name: Format check
run: cmake -P cmake/format.cmake
- name: Spell check
if: always()
run: cmake -P cmake/spell.cmake
coverage:
needs: format-and-spell-check
runs-on: ubuntu-latest
container: tuwienspaceteam/sts1-cobc:1.8.0-linux-x86
steps:
- uses: actions/checkout@v4
- name: Configure
run: cmake --preset=ci-coverage
- name: Build all tests
run: cmake --build build/coverage -t AllTests -j 2
- name: Test
working-directory: build/coverage
run: ctest --output-on-failure -j 2
- name: Process coverage info
run: cmake --build build/coverage -t coverage
- name: Submit to codecov.io
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: build/coverage/coverage.info
sanitize:
needs: format-and-spell-check
runs-on: ubuntu-latest
container: tuwienspaceteam/sts1-cobc:1.8.0-linux-x86
steps:
- uses: actions/checkout@v4
- name: Configure
run: cmake --preset=ci-sanitize
- name: Build all tests
run: cmake --build build/sanitize -t AllTests -j 2
- name: Test
working-directory: build/sanitize
env:
ASAN_OPTIONS: "strict_string_checks=1:\
detect_stack_use_after_return=1:\
check_initialization_order=1:\
strict_init_order=1:\
detect_leaks=1"
UBSAN_OPTIONS: print_stacktrace=1
run: ctest --output-on-failure -j 2
build-cobc:
needs: format-and-spell-check
runs-on: ubuntu-latest
container: tuwienspaceteam/sts1-cobc:1.8.0
steps:
- uses: actions/checkout@v4
- uses: actions/cache/restore@v4
id: restorecache
with:
path: /.cache/clang-tidy
key: ctcache
- name: Echo cache miss
if: steps.restorecache.outputs.cache-hit != 'true'
run: echo "Cache miss"
- name: Configure
run: cmake --preset=ci-cobc
- name: Build COBC SW
run: cmake --build build/cobc -j 2
- name: Build tests
run: cmake --build build/cobc -t AllTests -j 2
- uses: actions/cache/save@v4
id: savecache
with:
path: /.cache/clang-tidy
key: ctcache
- name: Upload artifacts
if: github.event_name == 'push' || github.event_name == 'pull_request'
uses: actions/upload-artifact@v4
with:
name: CobcBinaries
path: |
./build/cobc/*.bin
./build/cobc/Tests/**/*.bin
retention-days: 7
- name: Add assets to release
if: github.event_name == 'release'
uses: softprops/action-gh-release@v2
with:
files: ./build/cobc/*.bin
test:
needs: format-and-spell-check
runs-on: ubuntu-latest
container: tuwienspaceteam/sts1-cobc:1.8.0-linux-x86
steps:
- uses: actions/checkout@v4
- name: Configure linux-x86
run: cmake --preset=ci-linux-x86
- name: Build all tests
run: cmake --build build/linux-x86 -t AllTests -j 2
- name: Test
working-directory: build/linux-x86/Tests
run: ctest --output-on-failure -C Release -j 2
docs:
# Deploy docs only when builds and tests succeed
needs: [sanitize, build-cobc, test]
runs-on: ubuntu-latest
if: github.event_name == 'release'
&& github.repository_owner == 'SpaceTeam'
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.8"
- name: Install m.css dependencies
run: pip3 install jinja2 Pygments
- name: Install Doxygen
run: sudo apt-get update -q
&& sudo apt-get install doxygen -q -y
- name: Build docs
run: cmake -B build -D "CMAKE_PROJECT_INCLUDE=$PWD/cmake/docs.cmake"
&& cmake --build build -t docs
- name: Deploy docs
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: build/docs/html