name: Build and release on: push: branches: - master tags: - 'v*' pull_request: branches: - master jobs: build: name: Build binary runs-on: ${{ matrix.os }} env: CABAL_VER: 3.6.2.0 CACHE_VER: 1 MACOSX_DEPLOYMENT_TARGET: 10.13 JSON_VERSION: "0.0.7" strategy: matrix: include: - os: ubuntu-latest ARTIFACT: "i386-linux-ghcup" GHC_VER: 8.10.7 ARCH: 32 - os: ubuntu-latest ARTIFACT: "x86_64-linux-ghcup" GHC_VER: 8.10.7 ARCH: 64 - os: [self-hosted, macOS, aarch64] ARTIFACT: "aarch64-apple-darwin-ghcup" GHC_VER: 9.2.5 ARCH: ARM64 - os: macOS-10.15 ARTIFACT: "x86_64-apple-darwin-ghcup" GHC_VER: 9.2.5 ARCH: 64 - os: windows-latest ARTIFACT: "x86_64-mingw64-ghcup" GHC_VER: 8.10.7 ARCH: 64 steps: - name: Checkout code uses: actions/checkout@v3 with: submodules: 'true' - if: matrix.ARCH == '32' && runner.os == 'Linux' name: Run build (32 bit linux) uses: docker://i386/alpine:3.12 with: args: sh .github/scripts/build.sh env: ARTIFACT: ${{ matrix.ARTIFACT }} ARCH: ${{ matrix.ARCH }} GHC_VER: ${{ matrix.GHC_VER }} DISTRO: Alpine - if: matrix.ARCH == '64' && runner.os == 'Linux' name: Run build (64 bit linux) uses: docker://alpine:3.12 with: args: sh .github/scripts/build.sh env: ARTIFACT: ${{ matrix.ARTIFACT }} ARCH: ${{ matrix.ARCH }} GHC_VER: ${{ matrix.GHC_VER }} DISTRO: Alpine - if: runner.os != 'Linux' name: Run build (windows/mac) run: bash .github/scripts/build.sh env: ARTIFACT: ${{ matrix.ARTIFACT }} ARCH: ${{ matrix.ARCH }} GHC_VER: ${{ matrix.GHC_VER }} DISTRO: na - if: always() name: Upload artifact uses: actions/upload-artifact@v3 with: name: artifacts path: | ./out/* test: name: Test needs: build runs-on: ${{ matrix.os }} env: CABAL_VER: 3.6.2.0 CACHE_VER: 1 MACOSX_DEPLOYMENT_TARGET: 10.13 JSON_VERSION: "0.0.7" strategy: matrix: include: - os: ubuntu-latest ARTIFACT: "i386-linux-ghcup" GHC_VER: 8.10.7 ARCH: 32 DISTRO: Alpine - os: ubuntu-latest ARTIFACT: "x86_64-linux-ghcup" GHC_VER: 8.10.7 ARCH: 64 DISTRO: Alpine - os: ubuntu-latest ARTIFACT: "x86_64-linux-ghcup" GHC_VER: 8.10.7 ARCH: 64 DISTRO: Ubuntu - os: [self-hosted, macOS, aarch64] ARTIFACT: "aarch64-apple-darwin-ghcup" GHC_VER: 9.2.5 ARCH: ARM64 DISTRO: na - os: macOS-10.15 ARTIFACT: "x86_64-apple-darwin-ghcup" GHC_VER: 9.2.5 ARCH: 64 DISTRO: na - os: windows-latest ARTIFACT: "x86_64-mingw64-ghcup" GHC_VER: 8.10.7 ARCH: 64 DISTRO: na steps: - name: Checkout code uses: actions/checkout@v3 with: submodules: 'true' - uses: actions/download-artifact@v3 with: name: artifacts path: ./out - if: matrix.ARCH == '32' && runner.os == 'Linux' && matrix.DISTRO == 'Alpine' name: Run build (32 bit linux Alpine) uses: docker://i386/alpine:3.12 with: args: sh .github/scripts/test.sh env: ARTIFACT: ${{ matrix.ARTIFACT }} ARCH: ${{ matrix.ARCH }} GHC_VER: ${{ matrix.GHC_VER }} DISTRO: ${{ matrix.DISTRO }} - if: matrix.ARCH == '64' && runner.os == 'Linux' && matrix.DISTRO == 'Alpine' name: Run build (64 bit linux Alpine) uses: docker://alpine:3.12 with: args: sh .github/scripts/test.sh env: ARTIFACT: ${{ matrix.ARTIFACT }} ARCH: ${{ matrix.ARCH }} GHC_VER: ${{ matrix.GHC_VER }} DISTRO: ${{ matrix.DISTRO }} - if: runner.os == 'Linux' && matrix.DISTRO != 'Alpine' name: Run build (64 bit linux) run: sh .github/scripts/test.sh env: ARTIFACT: ${{ matrix.ARTIFACT }} ARCH: ${{ matrix.ARCH }} GHC_VER: ${{ matrix.GHC_VER }} DISTRO: ${{ matrix.DISTRO }} - if: runner.os != 'Linux' name: Run build (windows/mac) run: bash .github/scripts/test.sh env: ARTIFACT: ${{ matrix.ARTIFACT }} ARCH: ${{ matrix.ARCH }} GHC_VER: ${{ matrix.GHC_VER }} DISTRO: ${{ matrix.DISTRO }} hls: name: hls needs: build runs-on: ubuntu-latest env: GHC_VERSION: "8.10.7" HLS_TARGET_VERSION: "1.8.0.0" CABAL_VERSION: "3.6.2.0" JSON_VERSION: "0.0.7" ARTIFACT: "x86_64-linux-ghcup" DISTRO: Ubuntu steps: - name: Checkout code uses: actions/checkout@v3 with: submodules: 'true' - uses: actions/download-artifact@v3 with: name: artifacts path: ./out - name: Run hls build run: sh .github/scripts/hls.sh release: name: release needs: [build, test, hls] runs-on: ubuntu-latest if: startsWith(github.ref, 'refs/tags/v') steps: - name: Download artifacts uses: actions/download-artifact@v3 with: name: artifacts path: ./out - name: Release uses: softprops/action-gh-release@v1 with: draft: true files: | ./out/*