name: Testing on: push: pull_request: jobs: quicktest: name: Smoke test runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Run minimal test set run: | ./autogen.sh ./configure make test fulltest: needs: quicktest name: Full test runs-on: ${{ matrix.os }} strategy: fail-fast: true matrix: os: - ubuntu-latest - ubuntu-18.04 - macos-latest - windows-latest steps: - uses: actions/checkout@v2 - if: runner.os == 'Linux' name: Install essential run: | sudo apt-get update sudo apt-get install build-essential - if: runner.os == 'macOS' name: Install packages run: | brew install automake gcovr - if: runner.os == 'Windows' # This is a pretty big hammer, but gets the windows compile moving name: Hack up a fake autoconf run: | echo true >autogen.sh cp scripts/hack_fakeautoconf configure shell: bash - name: generate a makefile and use it to install more packages run: | ./autogen.sh ./configure make build-dep shell: bash - name: Run the real configure step run: | CFLAGS="-fprofile-arcs -ftest-coverage" LDFLAGS="--coverage" ./configure --with-zstd shell: bash - name: Run embedded tests run: make test shell: bash - if: ${{ always() }} name: Upload tests output uses: actions/upload-artifact@v2 with: name: tests-out-${{matrix.os}} path: tests/*.out - name: Generate coverage data run: | make gcov shell: bash - if: runner.os != 'Windows' name: Generate gcovr report run: | make cover shell: bash - if: runner.os != 'Windows' name: Upload gcovr report artifact uses: actions/upload-artifact@v2 with: name: coverage-${{matrix.os}} path: coverage - name: Upload data to codecov uses: codecov/codecov-action@v2 package_dpkg: needs: fulltest name: Create packages for Debian/Ubuntu runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Install packages needed for build run: | sudo apt-get install debhelper - name: Configure run: | ./autogen.sh ./configure cd packages/debian/ ./configure - name: Build run: | cd packages/debian/ make - name: Upload dpkg uses: actions/upload-artifact@v2 with: name: package-amd64-dpkg path: packages/debian/*.deb package_rpm: needs: fulltest name: Create packages for Redhat runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Install packages needed for build run: | sudo apt-get install rpm - name: Configure run: | ./autogen.sh ./configure cd packages/rpm/ ./configure - name: Build run: | make HOME=$(pwd)/../ cd packages/rpm/ make cd ../../ mv ../rpmbuild ./ - name: Upload rpm uses: actions/upload-artifact@v2 with: name: package-amd64-rpm path: rpmbuild/RPMS/x86_64/*.rpm package_windows: needs: fulltest name: Create packages for Windows runs-on: windows-latest steps: - uses: actions/checkout@v2 - name: Configure and Build shell: bash run: | ./scripts/hack_fakeautoconf make - name: Create binary dir shell: bash run: | make install DESTDIR=package - name: Upload binary zip uses: actions/upload-artifact@v2 with: name: package-amd64-windows path: package package_macos: needs: fulltest name: Create packages for MacOS runs-on: macos-latest steps: - uses: actions/checkout@v2 - name: Install packages needed for build run: | brew install automake - name: Configure and Build shell: bash run: | ./autogen.sh ./configure make - name: Create binary dir shell: bash run: | make install DESTDIR=package - name: Upload binary zip uses: actions/upload-artifact@v2 with: name: package-amd64-macos path: package