diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..7cb072a --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,69 @@ +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 + + + runs-on: ubuntu-latest + container: + image: dunst/ci:${{ matrix.distro }} diff --git a/README.md b/README.md index d9fd346..b2dc05e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Coverage Status](https://coveralls.io/repos/github/dunst-project/dunst/badge.svg?branch=master)](https://coveralls.io/github/dunst-project/dunst?branch=master) +[![main](https://github.com/dunst-project/dunst/workflows/main/badge.svg)](https://github.com/dunst-project/dunst/actions?query=workflow%3Amain) [![Coverage Status](https://coveralls.io/repos/github/dunst-project/dunst/badge.svg?branch=master)](https://coveralls.io/github/dunst-project/dunst?branch=master) ## Dunst