diff --git a/.github/workflows/maven-compiler.yml b/.github/workflows/maven-compiler.yml index bd3763ff7..b6b24dea5 100644 --- a/.github/workflows/maven-compiler.yml +++ b/.github/workflows/maven-compiler.yml @@ -44,3 +44,9 @@ jobs: - name: Build with Maven run: mvn package --file pom.xml + + - name: Upload the artifact + uses: actions/upload-artifact@v2 + with: + name: slimefun-${{ github.event.number }} + path: 'target/Slimefun v4.9-UNOFFICIAL.jar' diff --git a/.github/workflows/preview-builds.yml b/.github/workflows/preview-builds.yml new file mode 100644 index 000000000..f43eb9d1f --- /dev/null +++ b/.github/workflows/preview-builds.yml @@ -0,0 +1,70 @@ +name: Preview builds + +on: + workflow_run: + workflows: ["Java CI"] + types: + - completed + +permissions: + contents: read + pull-requests: write + +jobs: + preview: + if: ${{ github.repository_owner == 'Slimefun' && github.event.workflow_run.conclusion == 'success' }} + name: Build and Publish the jar + runs-on: ubuntu-latest + + steps: + # Kinda jank way to grab the PR and run ID + # However, not sure a better way + - name: Grab PR and run ID + uses: actions/github-script@v5 + with: + script: | + const allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: context.payload.workflow_run.id, + }); + + for (const artifact of allArtifacts.data.artifacts) { + // Extract the PR number from the artifact name + const match = /^slimefun-(\d+)$/.exec(artifact.name); + if (match) { + require("fs").appendFileSync( + process.env.GITHUB_ENV, + `\nWORKFLOW_PR_ID=${match[1]}` + + `\nWORKFLOW_RUN_ID=${context.payload.workflow_run.id}` + ); + break; + } + } + + # Download the artifact from the build workflow + - uses: actions/download-artifact@v3 + with: + name: slimefun-${{ env.WORKFLOW_PR_ID }} + + - name: Upload to preview service + run: | + curl -v -X POST \ + -H 'Authorization: ${{ secrets.PUBLISH_TOKEN }}' \ + -H "X-Checksum: $(sha256sum 'target/Slimefun v4.9-UNOFFICIAL.jar' | awk '{print $1}')" \ + --data-binary '@target/Slimefun v4.9-UNOFFICIAL.jar' \ + https://preview-builds.walshy.dev/upload/Slimefun/${{ env.WORKFLOW_PR_ID }}/${{ env.WORKFLOW_RUN_ID }} + + - name: Post comment + uses: marocchino/sticky-pull-request-comment@v2 + with: + number: ${{ env.WORKFLOW_PR_ID }} + message: | + ### Slimefun preview build + + A Slimefun preview build is available for testing! + + https://preview-builds.walshy.dev/download/Slimefun/${{ env.WORKFLOW_PR_ID }}/${{ env.WORKFLOW_RUN_ID }} + + > **Note**: This is not a supported build and is only here for the purposes of testing. + > Do not run this on a live server and do not report bugs anywhere but this PR!