name: main on: push: branches: - master pull_request: branches: - master jobs: build: strategy: matrix: CC: - clang - gcc distro: - alpine - archlinux - debian-stretch - fedora - ubuntu-xenial - ubuntu-bionic env: CC: ${{ matrix.CC }} steps: - uses: actions/checkout@v2 with: # Clone the whole branch, we have to fetch tags later fetch-depth: 0 # Fetch tags to determine proper version number inside git - name: fetch tags run: git fetch --tags # We cannot pull tags with old distros, since there is no `.git`. See below. if: "! (matrix.distro == 'ubuntu-bionic' || matrix.distro == 'ubuntu-xenial' || matrix.distro == 'debian-stretch')" # The Github checkout Action doesn't support distros with git older than 2.18 # With git<2.18 it downloads the code via API and does not clone it via git :facepalm: # To succeed the tests, we have to manually replace the VERSION macro - name: fix version number for old distros run: 'sed -i "s/1.4.1-non-git/1.4.1-ci-oldgit-$GITHUB_SHA/" Makefile' if: " (matrix.distro == 'ubuntu-bionic' || matrix.distro == 'ubuntu-xenial' || matrix.distro == 'debian-stretch')" - name: build run: make -j all dunstify test/test - name: test run: make -j test - name: installation run: ./test/test-install.sh - name: valgrind memleaks run: | make clean make -j test-valgrind - name: coverage run: | make clean make -j test-coverage - name: Coveralls assemble with lcov run: lcov -c -d . -o lcov.info if: "matrix.CC == 'gcc'" - name: Coveralls upload uses: coverallsapp/github-action@master if: "matrix.CC == 'gcc'" with: parallel: true path-to-lcov: "./lcov.info" github-token: ${{ secrets.GITHUB_TOKEN }} runs-on: ubuntu-latest container: image: dunst/ci:${{ matrix.distro }} # Just send the signal to coveralls to finish # the build and finalise coverage stats finish-coverage: needs: build runs-on: ubuntu-latest steps: - name: Coveralls finish uses: coverallsapp/github-action@master with: parallel-finish: true github-token: ${{ secrets.GITHUB_TOKEN }}