name: Build and test on: push: pull_request: types: - opened - synchronize jobs: test-linux: strategy: matrix: os: [ubuntu-18.04, ubuntu-20.04] compiler: [clang, gcc] legacy_protocol: ["", --disable-legacy-protocol] fail-fast: false runs-on: ${{ matrix.os }} env: CC: ${{ matrix.compiler }} steps: - name: Checkout code uses: actions/checkout@v2 - name: Install Artistic Style and build deps run: > sudo apt-get install -y --no-install-{recommends,suggests} zlib1g-dev liblzo2-dev libncurses-dev libreadline-dev libminiupnpc-dev libvdeplug-dev astyle socket - name: Install OpenSSL run: sudo apt-get install -y libssl-dev if: ${{ matrix.legacy_protocol == '' }} - name: Run autoreconf run: autoreconf -fsi - name: Run ./configure run: > ./configure --enable-{miniupnpc,uml,vde} ${{ matrix.legacy_protocol }} - name: Check code formatting run: make check-style - name: Compile project run: make -j$(nproc) - name: Run tests # root is required for some tests run: sudo make check-recursive timeout-minutes: 20 - name: Upload test results uses: actions/upload-artifact@v2 with: name: tests_${{ matrix.os }}_${{ matrix.compiler }} path: test/test-suite.log if: failure() build-windows: runs-on: windows-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Install msys2 uses: msys2/setup-msys2@v2 with: update: true # https://packages.msys2.org/package/ install: >- base-devel mingw-w64-x86_64-gcc mingw-w64-x86_64-openssl mingw-w64-x86_64-zlib mingw-w64-x86_64-lzo2 mingw-w64-x86_64-ncurses mingw-w64-x86_64-miniupnpc git - name: Build the project shell: msys2 {0} run: | autoreconf -fsi ./configure --with-curses-include=/mingw64/include/ncurses --disable-readline make -j$(nproc) - name: Check that tinc can be started shell: msys2 {0} run: ./src/tinc --version - name: Check that tincd can be started shell: msys2 {0} run: ./src/tincd --version release-deb: if: startsWith(github.ref, 'refs/tags/release-') needs: test-linux strategy: matrix: os: ["ubuntu-18.04", ubuntu-20.04] runs-on: ${{ matrix.os }} steps: - name: Checkout code uses: actions/checkout@v2 - name: Install build deps run: > sudo apt-get install -y --no-install-{recommends,suggests} dh-make texinfo libssl-dev zlib1g-dev liblzo2-dev libncurses-dev libreadline-dev - name: Run autoreconf run: autoreconf -fsi - name: Run ./configure run: > ./configure --prefix=/usr --sbindir=/usr/sbin --sysconfdir=/etc --localstatedir=/var --with-systemd=/usr/lib/systemd/system - name: Prepare debian directory run: > dh_make --yes --single --createorig --copyright gpl2 --packagename "tinc_$(git describe --tags --always | sed 's/release-//')-${{ matrix.os }}" env: DEBFULLNAME: Automated Builds - name: Build deb package run: dpkg-buildpackage -d -us -uc - name: Publish deb package uses: softprops/action-gh-release@v1 with: files: | ../*.deb env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} test-macos: runs-on: macos-10.15 steps: - name: Checkout code uses: actions/checkout@v2 - name: Install dependencies run: brew install coreutils netcat automake lzo miniupnpc - name: Run autoreconf run: autoreconf -fsi - name: Run ./configure run: > ./configure --with-openssl=/usr/local/opt/openssl@1.1 --enable-{tunemu,miniupnpc} - name: Compile application run: make -j$(sysctl -n hw.ncpu) - name: Run tests run: make check-recursive timeout-minutes: 20 - name: Upload test results uses: actions/upload-artifact@v2 with: name: tests_${{ runner.os }} path: test/test-suite.log if: failure()