diff --git a/.github/workflows/gradle.build.yaml b/.github/workflows/gradle.build.yaml index 9e3a4d2..f28bbf3 100644 --- a/.github/workflows/gradle.build.yaml +++ b/.github/workflows/gradle.build.yaml @@ -5,53 +5,31 @@ on: workflow_call: inputs: java: - description: "The version of Java to use to run Gradle" # Note: Gradle's Java toolchains feature is used for compiling, which is separate from this + description: "The version of Java to use to run Gradle" required: false type: string default: "21" gradle_tasks: - description: "The Gradle task(s) to run at publication" + description: "The Gradle task(s) to run for building" required: false type: string - default: "publish" + default: "build" secrets: - CROWDIN_API_KEY: - required: true - GRADLE_ENCRYPTION_KEY: - required: true + description: The AES key to enable Gradle cache encryption + required: false permissions: contents: read - statuses: write - packages: write jobs: - compute-version: - name: Compute version + compute-suffix: runs-on: ubuntu-latest outputs: - version: ${{ steps.version.outputs.version }} - version_tag: ${{ steps.version.outputs.version_tag }} - minecraft_version: ${{ steps.minecraftVersion.outputs.minecraft_version }} + branch_suffix: ${{ steps.computeBranchSuffix.outputs.branch_suffix }} steps: - - id: checkout - name: "📦 Checkout" - uses: actions/checkout@v4 - with: - fetch-depth: 0 - fetch-tags: true - - - id: minecraftVersion - name: "📦 Extract Minecraft version" - run: | - cat gradle.properties | grep exactMinecraftVersion | cut -d "=" -f 2 > minecraft_version.txt - echo "Minecraft version: $(cat minecraft_version.txt)" - echo "minecraft_version=$(cat minecraft_version.txt)" >> "$GITHUB_OUTPUT" - - id: computeBranchSuffix name: "🔢 Compute branch suffix" - if: github.event_name == 'push' run: | gitRef="${{ github.ref }}" branchName=$(echo "${gitRef/refs\/heads\//}") @@ -62,31 +40,22 @@ jobs: echo "branch_suffix=$cleanedBranchName" >> "$GITHUB_OUTPUT" - - id: version - name: "🔢 Compute version" - uses: PaulHatch/semantic-version@v5.4.0 - with: - tag_prefix: "v" - search_commit_body: true - debug: true - bump_each_commit: true - version_format: "${major}.${minor}.${patch}-${{ steps.minecraftVersion.outputs.minecraft_version }}-${{ github.event_name == 'pull_request' && format('pr-{0}', github.event.number) || format('branch-{0}', steps.computeBranchSuffix.outputs.branch_suffix) }}" + compute-version: + needs: [ "compute-suffix" ] + uses: ./.github/workflows/gradle.version.yaml + with: + suffix: ${{ format('branch-{0}', needs.compute-suffix.outputs.branch_suffix) }} - gradle: - needs: ["compute-version"] # Make sure we now the version before starting to build + build: + needs: [ "compute-version" ] runs-on: ubuntu-latest steps: - id: checkout name: "📦 Checkout" uses: actions/checkout@v4 - with: - fetch-depth: 1000 - fetch-tags: true - id: setupJava name: "🔧 Setup Java" - # https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2204-Readme.md#java - # language=bash run: | echo "JAVA_HOME=$(echo $JAVA_HOME_${{ inputs.java }}_X64)" >> "$GITHUB_ENV" @@ -101,10 +70,4 @@ jobs: name: "🏗️ Build" run: ./gradlew --build-cache ${{ inputs.gradle_tasks }} env: - crowdinKey: ${{ secrets.CROWDIN_API_KEY }} - Version: "${{ needs.compute-version.outputs.version }}" - GITHUB_TOKEN: ${{ github.token }} - GITHUB_REPOSITORY: ${{ github.repository }} - GITHUB_USERNAME: ${{ github.actor }} - - + Version: "${{ needs.compute-version.outputs.version }}" \ No newline at end of file diff --git a/.github/workflows/gradle.prerelease.yaml b/.github/workflows/gradle.prerelease.yaml new file mode 100644 index 0000000..4517c8b --- /dev/null +++ b/.github/workflows/gradle.prerelease.yaml @@ -0,0 +1,66 @@ +# Based off https://github.com/MinecraftForge/SharedActions/blob/main/.github/workflows/gradle.yml +name: Gradle Pre-release CI + +on: + workflow_call: + inputs: + java: + description: "The version of Java to use to run Gradle" + required: false + type: string + default: "21" + gradle_tasks: + description: "The Gradle task(s) to run for building" + required: false + type: string + default: "publish" + secrets: + GRADLE_ENCRYPTION_KEY: + description: The AES key to enable Gradle cache encryption + required: true + CROWDIN_API_KEY: + required: true + +permissions: + contents: read + statuses: write + packages: write + +jobs: + compute-version: + uses: ./.github/workflows/gradle.version.yaml + with: + suffix: pre-release + + gradle: + needs: [ "compute-version" ] + runs-on: ubuntu-latest + steps: + - id: checkout + name: "📦 Checkout" + uses: actions/checkout@v4 + with: + fetch-depth: 1000 + fetch-tags: true + + - id: setupJava + name: "🔧 Setup Java" + run: | + echo "JAVA_HOME=$(echo $JAVA_HOME_${{ inputs.java }}_X64)" >> "$GITHUB_ENV" + + - id: setupGradle + name: "🔧 Setup Gradle" + uses: gradle/actions/setup-gradle@v4 + with: + gradle-version: wrapper + cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} + + - id: build + name: "🏗️ Build" + run: ./gradlew --build-cache ${{ inputs.gradle_tasks }} + env: + GITHUB_TOKEN: ${{ github.token }} + GITHUB_REPOSITORY: ${{ github.repository }} + GITHUB_USERNAME: ${{ github.actor }} + crowdinKey: ${{ secrets.CROWDIN_API_KEY }} + Version: "${{ needs.compute-version.outputs.version }}" \ No newline at end of file diff --git a/.github/workflows/gradle.publish.yaml b/.github/workflows/gradle.publish.yaml index cbfd512..54d3fff 100644 --- a/.github/workflows/gradle.publish.yaml +++ b/.github/workflows/gradle.publish.yaml @@ -5,7 +5,7 @@ on: workflow_call: inputs: java: - description: "The version of Java to use to run Gradle" # Note: Gradle's Java toolchains feature is used for compiling, which is separate from this + description: "The version of Java to use to run Gradle" required: false type: string default: "21" @@ -24,23 +24,19 @@ on: required: false type: number default: 100 - secrets: DISCORD_WEBHOOK: required: true - MAVEN_USER: required: true MAVEN_PASSWORD: required: true - CURSE_API_KEY: required: true - CROWDIN_API_KEY: required: true - GRADLE_ENCRYPTION_KEY: + description: The AES key to enable Gradle cache encryption required: true permissions: @@ -49,39 +45,12 @@ permissions: jobs: compute-version: - name: Compute version - runs-on: ubuntu-latest - outputs: - version: ${{ steps.version.outputs.version }} - version_tag: ${{ steps.version.outputs.version_tag }} - minecraft_version: ${{ steps.minecraftVersion.outputs.minecraft_version }} - steps: - - id: checkout - name: "📦 Checkout" - uses: actions/checkout@v4 - with: - fetch-depth: 0 - fetch-tags: true - - - id: minecraftVersion - name: "📦 Extract Minecraft version" - run: | - cat gradle.properties | grep exactMinecraftVersion | cut -d "=" -f 2 > minecraft_version.txt - echo "Minecraft version: $(cat minecraft_version.txt)" - echo "minecraft_version=$(cat minecraft_version.txt)" >> "$GITHUB_OUTPUT" - - - id: version - name: "🔢 Compute version" - uses: PaulHatch/semantic-version@v5.4.0 - with: - tag_prefix: "v" - search_commit_body: true - debug: true - bump_each_commit: true - version_format: "${major}.${minor}.${patch}-${{ steps.minecraftVersion.outputs.minecraft_version }}-${{ inputs.curse_release_type }}" + uses: ./.github/workflows/gradle.version.yaml + with: + suffix: ${{ inputs.curse_release_type }} notify-build-start: - needs: ["compute-version"] + needs: [ "compute-version" ] name: "🔴 Build notifications (start)" runs-on: ubuntu-latest steps: @@ -104,7 +73,7 @@ jobs: target_url: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} gradle: - needs: ["compute-version"] # Make sure we now the version before starting to build + needs: [ "compute-version" ] runs-on: ubuntu-latest steps: - id: checkout @@ -116,8 +85,6 @@ jobs: - id: setupJava name: "🔧 Setup Java" - # https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2204-Readme.md#java - # language=bash run: | echo "JAVA_HOME=$(echo $JAVA_HOME_${{ inputs.java }}_X64)" >> "$GITHUB_ENV" diff --git a/.github/workflows/gradle.version.yaml b/.github/workflows/gradle.version.yaml new file mode 100644 index 0000000..fa5f660 --- /dev/null +++ b/.github/workflows/gradle.version.yaml @@ -0,0 +1,47 @@ +name: Common Version Determination CI + +on: + workflow_call: + inputs: + suffix: + description: "The suffix to finish the version string with" + required: false + type: string + default: "" + outputs: + version: + description: "The computed version" + value: ${{ jobs.compute-version.outputs.version }} + +permissions: + contents: read + +jobs: + compute-version: + runs-on: ubuntu-latest + outputs: + version: ${{ steps.version.outputs.version }} + steps: + - id: checkout + name: "📦 Checkout" + uses: actions/checkout@v4 + with: + fetch-depth: 0 + fetch-tags: true + + - id: minecraftVersion + name: "📦 Extract Minecraft version" + run: | + cat gradle.properties | grep exactMinecraftVersion | cut -d "=" -f 2 > minecraft_version.txt + echo "Minecraft version: $(cat minecraft_version.txt)" + echo "minecraft_version=$(cat minecraft_version.txt)" >> "$GITHUB_OUTPUT" + + - id: version + name: "🔢 Compute version" + uses: PaulHatch/semantic-version@v5.4.0 + with: + tag_prefix: "v" + search_commit_body: true + debug: true + bump_each_commit: true + version_format: "${{ steps.minecraftVersion.outputs.minecraft_version }}-${major}.${minor}.${patch}-${{ inputs.suffix }}" \ No newline at end of file