From 4b402825cae891c7a54ca24dd7aa952e87b80d84 Mon Sep 17 00:00:00 2001 From: Daniel Walsh Date: Fri, 7 Jul 2023 08:47:41 +0100 Subject: [PATCH 1/2] Use hash in preview build --- .github/workflows/preview-builds.yml | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/.github/workflows/preview-builds.yml b/.github/workflows/preview-builds.yml index 0d45c81b24..ecd6f1d1c4 100644 --- a/.github/workflows/preview-builds.yml +++ b/.github/workflows/preview-builds.yml @@ -2,7 +2,7 @@ name: Preview builds on: workflow_run: - workflows: ["Java CI"] + workflows: ["Pull Request"] types: - completed @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - # Kinda jank way to grab the PR and run ID and then download the artifact + # Kinda jank way to grab the PR and commit hash and then download the artifact # TODO: Move this code to our own mini-action - name: Grab PR & run ID and download the artifact uses: actions/github-script@v6 @@ -30,13 +30,13 @@ jobs: }); for (const artifact of allArtifacts.data.artifacts) { - // Extract the PR number from the artifact name - const match = /^slimefun-(\d+)$/.exec(artifact.name); + // Extract the PR number and commit hash from the artifact name + const match = /^slimefun-(\d+)-([a-f0-9]{8})$/.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}` + `\nPR_NUMBER=${match[1]}` + + `\nCOMMIT_HASH=${match[2]}` ); const download = await github.rest.actions.downloadArtifact({ @@ -56,7 +56,7 @@ jobs: run: | unzip preview.zip rm preview.zip - mv 'Slimefun v4.9-UNOFFICIAL.jar' preview.jar + mv 'Slimefun vPreview Build \#${{ env.PR_NUMBER }}-${{ env.COMMIT_HASH }}' preview.jar - name: Upload to preview service run: | @@ -64,7 +64,7 @@ jobs: -H 'Authorization: ${{ secrets.PUBLISH_TOKEN }}' \ -H "X-Checksum: $(sha256sum 'preview.jar' | awk '{print $1}')" \ --data-binary '@preview.jar' \ - https://preview-builds.walshy.dev/upload/Slimefun/${{ env.WORKFLOW_PR_ID }}/${{ env.WORKFLOW_RUN_ID }} + https://preview-builds.walshy.dev/upload/Slimefun/${{ env.PR_NUMBER }}/${{ env.COMMIT_HASH }} - name: Post comment uses: marocchino/sticky-pull-request-comment@v2 @@ -74,6 +74,7 @@ jobs: ### Slimefun preview build A Slimefun preview build is available for testing! + Commit: ${{ env.COMMIT_HASH }} https://preview-builds.walshy.dev/download/Slimefun/${{ env.WORKFLOW_PR_ID }}/${{ env.WORKFLOW_RUN_ID }} From c0e0b64fead7094296311adb273454ae05357bf1 Mon Sep 17 00:00:00 2001 From: Daniel Walsh Date: Fri, 7 Jul 2023 09:07:46 +0100 Subject: [PATCH 2/2] Move to PR workflow and out of usual push workflow --- .github/workflows/maven-compiler.yml | 6 ---- .github/workflows/preview-builds.yml | 8 ++--- .github/workflows/pull-request.yml | 52 ++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/pull-request.yml diff --git a/.github/workflows/maven-compiler.yml b/.github/workflows/maven-compiler.yml index 17a7a7a855..bd3763ff75 100644 --- a/.github/workflows/maven-compiler.yml +++ b/.github/workflows/maven-compiler.yml @@ -44,9 +44,3 @@ jobs: - name: Build with Maven run: mvn package --file pom.xml - - - name: Upload the artifact - uses: actions/upload-artifact@v3 - 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 index ecd6f1d1c4..2b0b32b59f 100644 --- a/.github/workflows/preview-builds.yml +++ b/.github/workflows/preview-builds.yml @@ -56,11 +56,11 @@ jobs: run: | unzip preview.zip rm preview.zip - mv 'Slimefun vPreview Build \#${{ env.PR_NUMBER }}-${{ env.COMMIT_HASH }}' preview.jar + mv 'Slimefun vPreview Build #${{ env.PR_NUMBER }}-${{ env.COMMIT_HASH }}' preview.jar - name: Upload to preview service run: | - curl -v -X POST \ + curl -X POST \ -H 'Authorization: ${{ secrets.PUBLISH_TOKEN }}' \ -H "X-Checksum: $(sha256sum 'preview.jar' | awk '{print $1}')" \ --data-binary '@preview.jar' \ @@ -69,14 +69,14 @@ jobs: - name: Post comment uses: marocchino/sticky-pull-request-comment@v2 with: - number: ${{ env.WORKFLOW_PR_ID }} + number: ${{ env.PR_NUMBER }} message: | ### Slimefun preview build A Slimefun preview build is available for testing! Commit: ${{ env.COMMIT_HASH }} - https://preview-builds.walshy.dev/download/Slimefun/${{ env.WORKFLOW_PR_ID }}/${{ env.WORKFLOW_RUN_ID }} + https://preview-builds.walshy.dev/download/Slimefun/${{ env.PR_NUMBER }}/${{ env.COMMIT_HASH }} > **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! diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml new file mode 100644 index 0000000000..2c3a31ab8c --- /dev/null +++ b/.github/workflows/pull-request.yml @@ -0,0 +1,52 @@ +name: Pull Request + +on: + pull_request: + paths: + - '.github/workflows/**' + - 'src/**' + - 'pom.xml' + +permissions: + contents: read + +jobs: + setup-preview-build: + name: Preview build + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up JDK 17 + uses: actions/setup-java@v3.11.0 + with: + distribution: 'adopt' + java-version: '17' + java-package: jdk + architecture: x64 + + - name: Cache Maven packages + uses: actions/cache@v3 + with: + path: ~/.m2 + key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-m2 + + # Setup for the preview build + - run: | + SHORT_COMMIT_HASH=$(git rev-parse --short=8 ${{ github.sha }}) + JAR_VERSION="Preview Build #${{ github.event.number }}-$SHORT_COMMIT_HASH" + echo "SHORT_COMMIT_HASH=$SHORT_COMMIT_HASH" >> "$GITHUB_ENV" + echo "JAR_VERSION=$JAR_VERSION" >> "$GITHUB_ENV" + sed -i "s/4.9-UNOFFICIAL<\/version>/$JAR_VERSION<\/version>/g" pom.xml + + - name: Build with Maven + run: mvn package + + - name: Upload the artifact + uses: actions/upload-artifact@v3 + with: + name: slimefun-${{ github.event.number }}-${{ env.SHORT_COMMIT_HASH }} + path: 'target/Slimefun v${{ env.JAR_VERSION }}.jar'