Skip to content

Change_internal_structure #388

Change_internal_structure

Change_internal_structure #388

Workflow file for this run

# This is a basic workflow to help you get started with Actions
name: CI
# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but only for the master branch
pull_request:
branches: [main]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# # Run tests every month
# schedule:
# - cron: '0 0 1 * *'
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
linux:
# The type of runner that the job will run on
runs-on: ubuntu-latest
strategy:
matrix:
include:
- name: "Ubuntu OpenMPI g++"
CC_COMPILER: gcc
CXX_COMPILER: g++
container: "ubuntu_gcc_openmpi"
MPIEXEC_PREFLAGS: "--allow-run-as-root --oversubscribe"
USE_SANITIZER: ""
# ASAN_OPTIONS: "ASAN_OPTIONS=detect_leaks=0" # issue probably with openmpi
CMAKE_BUILD_TYPE: Debug
CODE_COVERAGE: "OFF"
DOCKER_OPTIONS: "--cap-add SYS_PTRACE"
- name: "Ubuntu OpenMPI clang++"
CC_COMPILER: clang
CXX_COMPILER: clang++
container: "ubuntu_clang_openmpi"
MPIEXEC_PREFLAGS: "--allow-run-as-root --oversubscribe"
USE_SANITIZER: ""
CMAKE_BUILD_TYPE: Debug
CODE_COVERAGE: "OFF"
DOCKER_OPTIONS: "--cap-add SYS_PTRACE"
- name: "Ubuntu MPICH g++"
CC_COMPILER: gcc
CXX_COMPILER: g++
container: "ubuntu_gcc_mpich"
MPIEXEC_PREFLAGS: ""
USE_SANITIZER: "Address"
ASAN_OPTIONS: ""
CMAKE_BUILD_TYPE: Debug
DOCKER_OPTIONS: " "
CODE_COVERAGE: "ON"
- name: "Ubuntu MPICH clang++"
CC_COMPILER: clang
CXX_COMPILER: clang++
container: "ubuntu_clang_mpich"
MPIEXEC_PREFLAGS: ""
USE_SANITIZER: "Address"
ASAN_OPTIONS: ""
CMAKE_BUILD_TYPE: Debug
DOCKER_OPTIONS: " "
CODE_COVERAGE: "OFF"
# Hangs up on github
- name: "Debian OpenMPI g++"
CC_COMPILER: gcc
CXX_COMPILER: g++
container: "debian_gcc_openmpi"
MPIEXEC_PREFLAGS: "--allow-run-as-root --oversubscribe"
USE_SANITIZER: ""
# ASAN_OPTIONS: "ASAN_OPTIONS=detect_leaks=0" # issue probably with openmpi
CMAKE_BUILD_TYPE: Debug
CODE_COVERAGE: "OFF"
DOCKER_OPTIONS: "--cap-add SYS_PTRACE"
- name: "Debian OpenMPI clang++"
CC_COMPILER: clang
CXX_COMPILER: clang++
container: "debian_clang_openmpi"
MPIEXEC_PREFLAGS: "--allow-run-as-root --oversubscribe"
USE_SANITIZER: ""
CMAKE_BUILD_TYPE: Debug
CODE_COVERAGE: "OFF"
DOCKER_OPTIONS: "--cap-add SYS_PTRACE"
- name: "Debian MPICH g++"
CC_COMPILER: gcc
CXX_COMPILER: g++
container: "debian_gcc_mpich"
MPIEXEC_PREFLAGS: ""
USE_SANITIZER: "Address"
ASAN_OPTIONS: ""
CMAKE_BUILD_TYPE: Debug
DOCKER_OPTIONS: " "
CODE_COVERAGE: "OFF"
- name: "Debian MPICH clang++"
CC_COMPILER: clang
CXX_COMPILER: clang++
container: "debian_clang_mpich"
MPIEXEC_PREFLAGS: ""
USE_SANITIZER: "Address"
ASAN_OPTIONS: ""
CMAKE_BUILD_TYPE: Debug
DOCKER_OPTIONS: " "
CODE_COVERAGE: "OFF"
container:
image: pierremarchand/htool_testing_environments:${{ matrix.container }}
options: --user root ${{ matrix.DOCKER_OPTIONS }}
env:
OMPI_CC: ${{ matrix.CC_COMPILER }}
OMPI_CXX: ${{ matrix.CXX_COMPILER }}
CC: ${{ matrix.CC_COMPILER }}
CXX: ${{ matrix.CXX_COMPILER }}
name: CI (${{ matrix.name }})
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- name: Checkout htool
uses: actions/checkout@v3
with:
path: "htool"
# ref: 14d013835eceb940b9b51dd90462fe67834db777
fetch-depth: 0 # to get tags
- name: Checkout hpddm
run: |
git clone https://github.com/hpddm/hpddm.git hpddm
cd hpddm && git checkout 5890d5addf3962d539dc25c441ec3ff4af93b3ab
# uses: actions/checkout@v3
# with:
# path: "hpddm"
# repository: hpddm/hpddm
# ref: afb9562c9c6673d9ff760985b104ef8d4caa3621
- name: Activate virtualenv
run: |
. /usr/local/share/venv/bin/activate
echo PATH=$PATH >> $GITHUB_ENV
- name: Build tests
run: |
cd htool && mkdir build && cd build
cmake -DHTOOL_WITH_EXAMPLES=ON -DHTOOL_WITH_DOC=ON -DHTOOL_WITH_STRICT_TESTS=ON -DMPIEXEC_PREFLAGS="${{ matrix.MPIEXEC_PREFLAGS }}" -DUSE_SANITIZER=${{ matrix.USE_SANITIZER }} -DCMAKE_BUILD_TYPE=${{ matrix.CMAKE_BUILD_TYPE }} -DCODE_COVERAGE=${{ matrix.CODE_COVERAGE }} ../
make -j 4 build-tests
- name: Run tests
run: |
cd htool/build
export OMP_NUM_THREADS=2
${{ matrix.ASAN_OPTIONS }} ctest -j 4 --output-on-failure
- name: Build examples
run: |
cd htool/build
make -j 4 build-examples
- name: Build documentation
run: |
cd htool/build
make doc
- name: Check c++ format
uses: DoozyX/clang-format-lint-action@v0.16.2
with:
source: 'htool/include htool/tests'
# exclude: './third_party ./external'
extensions: 'hpp,cpp'
clangFormatVersion: 16
style: file
- name: Check cmake format
run: |
. /usr/local/share/venv/bin/activate
cd htool/build
make cmake-format
git diff --exit-code
- name: Generate coverage reports
if: matrix.CODE_COVERAGE == 'ON'
run: |
cd htool/
lcov --capture --base-directory ./ --directory build/ --output-file coverage.info
lcov --remove coverage.info '/usr/*' '*/hpddm/*' --output-file ../coverage.info
- uses: actions/upload-artifact@v4
with:
path: coverage.info
if-no-files-found: error
if: matrix.CODE_COVERAGE == 'ON'
# - name: Upload coverage to Codecov
# if: matrix.CODE_COVERAGE == 'ON'
# uses: codecov/codecov-action@v4.5.0
# with:
# fail_ci_if_error: true
# files: htool/coverage.info
# token: ${{ secrets.CODECOV_TOKEN }}
# verbose: true
coverage:
runs-on: ubuntu-latest
if: ${{ success() }}
needs: [ linux ]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/download-artifact@v4
- name: Upload coverage report
uses: codecov/codecov-action@v4
with:
file: ./coverage.info
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true