name: hydrun CI on: push: pull_request: schedule: - cron: "0 0 * * 0" jobs: build-linux: runs-on: ubuntu-latest strategy: matrix: target: - id: test src: . os: golang:1.18beta1-bullseye # 1.18 is required due to `GroupIds` requiring CGo on older versions flags: "-e '--ulimit nofile=262144:262144'" # Parallel tests require a lot of open files cmd: GOFLAGS="-short" ./Hydrunfile test dst: out/* - id: go src: . os: golang:1.18beta1-bullseye # 1.18 is required due to `GroupIds` requiring CGo on older versions flags: "" cmd: ./Hydrunfile go dst: out/* - id: gccgo src: . os: ghcr.io/pojntfx/bagccgop-base-sid flags: -e '--privileged' cmd: ./Hydrunfile gccgo dst: out/* - id: windows-386 src: . os: fedora:rawhide flags: -e '--privileged' cmd: ./Hydrunfile windows 386 dst: out/* steps: - name: Maximize build space run: | sudo rm -rf /usr/share/dotnet sudo rm -rf /usr/local/lib/android sudo rm -rf /opt/ghc - name: Checkout uses: actions/checkout@v2 - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - name: Set up hydrun run: | curl -L -o /tmp/hydrun "https://github.com/pojntfx/hydrun/releases/latest/download/hydrun.linux-$(uname -m)" sudo install /tmp/hydrun /usr/local/bin - name: Build with hydrun working-directory: ${{ matrix.target.src }} run: hydrun -o ${{ matrix.target.os }} ${{ matrix.target.flags }} "${{ matrix.target.cmd }}" - name: Fix permissions for output run: sudo chown -R $USER . - name: Upload output uses: actions/upload-artifact@v2 with: name: ${{ matrix.target.id }} path: ${{ matrix.target.dst }} publish-linux: runs-on: ubuntu-latest needs: build-linux steps: - name: Checkout uses: actions/checkout@v2 - name: Download output uses: actions/download-artifact@v2 with: path: /tmp/out - name: Publish pre-release to GitHub releases if: ${{ github.ref == 'refs/heads/main' }} uses: marvinpinto/action-automatic-releases@latest with: repo_token: "${{ secrets.GITHUB_TOKEN }}" automatic_release_tag: unstable prerelease: true files: | /tmp/out/*/* - name: Publish release to GitHub releases if: startsWith(github.ref, 'refs/tags/v') uses: marvinpinto/action-automatic-releases@latest with: repo_token: "${{ secrets.GITHUB_TOKEN }}" prerelease: false files: | /tmp/out/*/*