ci #24
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: ci | |
on: [push] | |
permissions: | |
contents: write | |
jobs: | |
analysis-headers: | |
runs-on: ubuntu-latest | |
container: ubuntu:20.04 | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Generate Headers & Compare | |
run: | | |
./scripts/generate_streampu_header.sh streampu.hpp | |
diff streampu.hpp include/streampu.hpp | |
shell: bash | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: analysis-headers | |
path: streampu.hpp | |
analysis-clang-format: | |
runs-on: ubuntu-latest | |
container: ubuntu:22.04 | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Install clang-format | |
run: | | |
apt-get update | |
apt-get -y install clang-format | |
shell: bash | |
- name: Invoke clang-format on the source code & Compare | |
run: | | |
mkdir original_code | |
cp -r include original_code | |
cp -r src original_code | |
cp -r tests original_code | |
cp -r signal_tracer original_code | |
./scripts/apply_clang_format.sh | |
mkdir new_code | |
cp -r include new_code | |
cp -r src new_code | |
cp -r tests new_code | |
cp -r signal_tracer new_code | |
diff -r new_code original_code | |
shell: bash | |
build-linux-gcc-x64-avx2: | |
runs-on: ubuntu-latest | |
needs: [analysis-headers] | |
container: registry.gitlab.com/aff3ct/aff3ct/x86_64_ubuntu_gcc:v9.3.0 | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Build | |
run: | | |
export CXX="g++" | |
export CFLAGS="-Wall -funroll-loops -m64 -mavx2 -mfma" | |
export LFLAGS="-static -static-libgcc -static-libstdc++ -Wl,--whole-archive -lrt -lpthread -Wl,--no-whole-archive" | |
export GIT_TAG="v0.0.0" | |
export CMAKE_OPT="-DSPU_TESTS=ON -DSPU_COMPILE_STATIC_LIB=ON -DSPU_COMPILE_SHARED_LIB=ON -DSPU_STACKTRACE=OFF -DSPU_OVERRIDE_VERSION=$GIT_TAG" | |
export NAME="build_linux_gcc_x64_avx2" | |
source ./ci/tools/threads.sh | |
./ci/build-linux-macos.sh | |
shell: bash | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build-linux-gcc-x64-avx2 | |
path: build_linux_gcc_x64_avx2 | |
build-linux-gcc-coverage: | |
runs-on: ubuntu-latest | |
needs: [analysis-headers] | |
container: registry.gitlab.com/aff3ct/aff3ct/x86_64_ubuntu_gcc:v9.3.0 | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Build | |
run: | | |
export CXX="g++" | |
export CFLAGS="-Wall -funroll-loops -msse4.2 --coverage" | |
export LFLAGS="--coverage" | |
export GIT_TAG="v0.0.0" | |
export CMAKE_OPT="-DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS_DEBUG=-O0 -DSPU_TESTS=ON -DSPU_COMPILE_STATIC_LIB=ON -DSPU_COMPILE_SHARED_LIB=ON -DSPU_OVERRIDE_VERSION=$GIT_TAG" | |
source ./ci/tools/threads.sh | |
./ci/build-linux-macos.sh | |
shell: bash | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build | |
path: build | |
build-linux-clang: | |
runs-on: ubuntu-latest | |
needs: [analysis-headers] | |
container: registry.gitlab.com/aff3ct/aff3ct/x86_64_ubuntu_clang:v10.0.0 | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Build | |
run: | | |
export CXX="clang++" | |
export CFLAGS="-Wall -Wno-overloaded-virtual -funroll-loops" | |
export GIT_TAG="v0.0.0" | |
export CMAKE_OPT="-DSPU_TESTS=ON -DSPU_COMPILE_STATIC_LIB=ON -DSPU_COMPILE_SHARED_LIB=ON -DSPU_OVERRIDE_VERSION=$GIT_TAG" | |
export NAME="build_linux_clang" | |
source ./ci/tools/threads.sh | |
./ci/build-linux-macos.sh | |
shell: bash | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build-linux-clang | |
path: build_linux_clang | |
test-coverage-regression: | |
runs-on: ubuntu-latest | |
needs: [build-linux-gcc-coverage] | |
container: registry.gitlab.com/aff3ct/aff3ct/x86_64_ubuntu_coverage | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Download Artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: build | |
path: build/ | |
- name: Run Tests & Collect Code Coverage | |
run: | | |
ls -lah ./build/ | |
ls -lah ./build/bin/ | |
chmod +x ./build/bin/* | |
./ci/test-coverage-regression.sh | |
shell: bash | |
- name: Generate Code Coverage Report Files | |
run: ./ci/coverage-linux.sh | |
shell: bash | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-regression-code-coverage-report | |
path: | | |
code_coverage_report/ | |
build/Testing | |
test-memcheck-regression: | |
runs-on: ubuntu-latest | |
needs: [analysis-headers] | |
container: registry.gitlab.com/aff3ct/aff3ct/x86_64_ubuntu_valgrind | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Build & Memcheck | |
run: | | |
export CXX="g++" | |
export CFLAGS="-Wall -funroll-loops -m64 -mavx2 -mfma" | |
export GIT_TAG="v0.0.0" | |
export CMAKE_OPT="-DCMAKE_BUILD_TYPE=RelWithDebInfo -DSPU_TESTS=ON -DSPU_COMPILE_STATIC_LIB=ON -DSPU_COMPILE_SHARED_LIB=ON -DSPU_LINK_HWLOC=ON -DSPU_OVERRIDE_VERSION=$GIT_TAG" | |
source ./ci/tools/threads.sh | |
./ci/build-linux-macos.sh | |
./ci/test-memcheck-regression.sh | |
shell: bash | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-memcheck-regression | |
path: build/Testing | |
coverage: | |
runs-on: ubuntu-latest | |
needs: [test-coverage-regression] | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Download Artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: test-regression-code-coverage-report | |
path: test_regression_code_coverage_report/ | |
- name: Produce the Coverage Report | |
uses: insightsengineering/coverage-action@v2 | |
with: | |
# Path to the Cobertura XML report. | |
path: ./test_regression_code_coverage_report/code_coverage_report/streampu.xml | |
# Minimum total coverage, if you want to the | |
# workflow to enforce it as a standard. | |
# This has no effect if the `fail` arg is set to `false`. | |
threshold: 50.000 | |
# Fail the workflow if the minimum code coverage | |
# reuqirements are not satisfied. | |
fail: true | |
# Publish the rendered output as a PR comment | |
publish: true | |
# Create a coverage diff report. | |
diff: true | |
# Branch to diff against. | |
# Compare the current coverage to the coverage | |
# determined on this branch. | |
diff-branch: master | |
# This is where the coverage reports for the | |
# `diff-branch` are stored. | |
# Branch is created if it doesn't already exist'. | |
diff-storage: _xml_coverage_reports | |
# A custom title that can be added to the code | |
# coverage summary in the PR comment. | |
coverage-summary-title: "Code Coverage Summary" | |
deploy: | |
if: contains( github.ref, 'develop') | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: 3.x | |
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV | |
- uses: actions/cache@v4 | |
with: | |
key: mkdocs-material-${{ env.cache_id }} | |
path: .cache | |
restore-keys: | | |
mkdocs-material- | |
- run: pip install mkdocs-material | |
- run: mkdocs gh-deploy --force |