diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..7e36538 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,114 @@ +# This file is part of CMake-codecov. +# +# Copyright (c) +# 2015-2020 RWTH Aachen University, Federal Republic of Germany +# +# See the LICENSE file in the package base directory for details +# +# Written by Alexander Haase, alexander.haase@rwth-aachen.de +# + +name: CMake-codecov CI +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + cmake_version: [4.0.1, 3.31.7, 3.28.6, 3.26.6, 3.21.7, 3.20.6, 3.16.9, 3.12.4, 3.10.3] + compiler: [gcc, clang] + generator: [Ninja, Unix Makefiles] + os: [ubuntu-24.04] + # CMake-Codecov relies on compiling with absolute paths, but CMake uses absolute paths + # with Ninja only starting with 3.21, so exclude older (non-supported) versions + exclude: + - cmake_version: 3.20.6 + generator: Ninja + - cmake_version: 3.16.9 + generator: Ninja + - cmake_version: 3.12.4 + generator: Ninja + - cmake_version: 3.10.3 + generator: Ninja + # Additionally test Ubuntu and macOS with default packages + include: + - os: ubuntu-22.04 + cmake_version: default + generator: Unix Makefiles + compiler: gcc + - os: ubuntu-22.04 + cmake_version: default + generator: Unix Makefiles + compiler: clang + - os: ubuntu-22.04 + cmake_version: default + generator: Ninja + compiler: gcc + - os: ubuntu-22.04 + cmake_version: default + generator: Ninja + compiler: clang + - os: macos-latest + compiler: clang + cmake_version: default + generator: Unix Makefiles + - os: macos-latest + compiler: clang + cmake_version: default + generator: Ninja + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install lcov, compilers on Linux + if: runner.os == 'Linux' + run: | + sudo apt-get update + sudo apt-get install -y lcov gfortran ${{ matrix.compiler }} + + - name: Install default CMake + if: runner.os == 'Linux' && matrix.cmake_version == 'default' + run: | + sudo apt-get update + sudo apt-get install -y cmake + + - name: Install specific CMake version + if: runner.os == 'Linux' && matrix.cmake_version != 'default' + run: | + sudo apt-get update + sudo apt-get install -y wget + wget https://github.com/Kitware/CMake/releases/download/v${{ matrix.cmake_version }}/cmake-${{ matrix.cmake_version }}-linux-x86_64.tar.gz + tar -xzf cmake-${{ matrix.cmake_version }}-linux-x86_64.tar.gz --strip-components=1 -C cmake + sudo cp -r cmake/* /usr/local/ + + - name: Install CMake, lcov on macOS + if: runner.os == 'macOS' + run: | + brew update + brew install cmake lcov + + - name: Print CMake version + run: cmake --version + + - name: Configure and build + run: | + mkdir build && cd build + cmake .. -DCMAKE_C_COMPILER="${{ matrix.compiler }}" -G "${{ matrix.generator }}" -DENABLE_COVERAGE=On + cmake --build . + cmake --build . --target test + cmake --build . --target gcov + cmake --build . --target lcov + + # - name: Codecov upload + # uses: codecov/codecov-action@v5 + # with: + # name: codecov-coverage + # token: ${{ secrets.CODECOV_TOKEN }} + # fail_ci_if_error: true \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 1a81ea8..0000000 --- a/.travis.yml +++ /dev/null @@ -1,63 +0,0 @@ -# This file is part of CMake-codecov. -# -# Copyright (c) -# 2015-2020 RWTH Aachen University, Federal Republic of Germany -# -# See the LICENSE file in the package base directory for details -# -# Written by Alexander Haase, alexander.haase@rwth-aachen.de -# - -language: c - -matrix: - include: - - os: linux - dist: xenial - compiler: gcc - - os: linux - dist: xenial - compiler: clang - - - os: linux - dist: bionic - compiler: gcc - - os: linux - dist: bionic - compiler: clang - - - os: osx - compiler: clang - - -addons: - apt: - packages: - - cmake - - lcov - - gfortran - - -before_install: - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; - then - brew update --quiet >& /dev/null; - fi - # The following solution was inspired by http://stackoverflow.com/a/20802381 - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; - then - for pkg in gcc cmake lcov; do - if brew list -1 | grep -q "^${pkg}\$"; then - brew outdated $pkg || brew upgrade $pkg; - else - brew install $pkg; - fi - done - fi - -script: - - mkdir build && cd build - - cmake .. -DENABLE_COVERAGE=On && make && make test gcov lcov - -after_success: - - bash <(curl -s https://codecov.io/bash) -X gcov