Add a proper File
class
#802
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: 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 |