name: Build Beta on: workflow_dispatch: merge_group: push: branches: - master - bleeding-edge paths-ignore: - 'src/main/resources/assets/skyblocker/lang/**' - 'CHANGELOG.md' - 'FEATURES.md' - 'README.md' pull_request: paths-ignore: - 'src/main/resources/assets/skyblocker/lang/**' - 'CHANGELOG.md' - 'FEATURES.md' - 'README.md' env: REF_NAME: ${{ github.ref_name }} PR_NUMBER: ${{ github.event.number }} PR_SHA: ${{ github.event.pull_request.head.sha }} jobs: # This workflow contains a single job called "build" build: # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - name: Checkout repository uses: actions/checkout@v4 - name: Set jar name uses: actions/github-script@v7 with: result-encoding: string script: | let buildType; let commitSha; buildType = process.env.REF_NAME === "master" || process.env.REF_NAME === "main" ? "beta" : "alpha"; if (process.env.PR_NUMBER) { buildType += `-pr-${process.env.PR_NUMBER}`; commitSha = process.env.PR_SHA; } else { commitSha = process.env.GITHUB_SHA; } console.log(`Set build type to ${buildType} and commit sha to ${commitSha}`); const fs = require("fs"); let file = fs.readFileSync("./gradle.properties"); file = file.toString().split("\n").map(e => e.trim().startsWith("mod_version") ? `${e}-${buildType}-${commitSha.substring(0, 7)}` : e).join("\n"); fs.writeFileSync("./gradle.properties", file); - name: Set up JDK 21 uses: actions/setup-java@v4 with: distribution: 'microsoft' java-version: '21' - name: Initialize caches uses: actions/cache@v4 with: path: | ~/.gradle/caches ~/.gradle/loom-cache ~/.gradle/wrapper key: ${{ runner.os }}-build-external-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }} restore-keys: | ${{ runner.os }}-build-external- - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Build with Gradle run: ./gradlew build - name: Store reports if: failure() uses: actions/upload-artifact@v4 with: name: reports path: | **/build/reports/ **/build/test-results/ - name: Process artifacts uses: actions/github-script@v7 id: fname with: result-encoding: string script: | const fs = require("fs") return fs.readdirSync("build/libs/").filter(e => !e.endsWith("dev.jar") && !e.endsWith("sources.jar") && e.endsWith(".jar"))[0].replace(".jar", ""); - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: ${{ steps.fname.outputs.result }} path: build/libs/