name: build on: push: branches: - master - stable tags: - "v*" pull_request: jobs: build: name: build-${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: - os: ubuntu-18.04 - os: ubuntu-20.04 steps: - name: Clone project uses: actions/checkout@v2 - name: Setup Haskell uses: haskell/actions/setup@v1 with: ghc-version: "8.10.7" cabal-version: "latest" - name: Cache dependencies uses: actions/cache@v2 with: path: | ~/.cabal/store dist-newstyle key: ${{ matrix.os }}-${{ hashFiles('cabal.project', 'simplexmq.cabal') }} - name: Build shell: bash run: cabal build --enable-tests - name: Test if: matrix.os == 'ubuntu-18.04' timeout-minutes: 30 shell: bash run: cabal test --test-show-details=direct - name: Prepare binaries if: startsWith(github.ref, 'refs/tags/v') && matrix.os == 'ubuntu-20.04' shell: bash run: | mv $(cabal list-bin smp-server) smp-server-ubuntu-20_04-x86-64 mv $(cabal list-bin ntf-server) ntf-server-ubuntu-20_04-x86-64 mv $(cabal list-bin xftp-server) xftp-server-ubuntu-20_04-x86-64 mv $(cabal list-bin xftp) xftp-ubuntu-20_04-x86-64 - name: Build changelog if: startsWith(github.ref, 'refs/tags/v') && matrix.os == 'ubuntu-20.04' id: build_changelog uses: mikepenz/release-changelog-builder-action@v1 with: configuration: .github/changelog_conf.json failOnError: true ignorePreReleases: true commitMode: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Create release if: startsWith(github.ref, 'refs/tags/v') && matrix.os == 'ubuntu-20.04' uses: softprops/action-gh-release@v1 with: body: | See full changelog [here](https://github.com/simplex-chat/simplexmq/blob/master/CHANGELOG.md). Commits: ${{ steps.build_changelog.outputs.changelog }} prerelease: true files: | LICENSE smp-server-ubuntu-20_04-x86-64 ntf-server-ubuntu-20_04-x86-64 xftp-server-ubuntu-20_04-x86-64 xftp-ubuntu-20_04-x86-64 fail_on_unmatched_files: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}