diff --git a/.github/workflows/build-gradle.yml b/.github/workflows/build-gradle.yml index e02e70d..d897b76 100644 --- a/.github/workflows/build-gradle.yml +++ b/.github/workflows/build-gradle.yml @@ -5,20 +5,34 @@ on: [ push, pull_request ] jobs: build: runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v2 + - name: Checkout latest commit + uses: actions/checkout@v3 - name: Set up JDK 17 - uses: actions/setup-java@v2 + uses: actions/setup-java@v3 with: - distribution: 'temurin' + distribution: temurin java-version: 17 + - name: Restore Gradle cache + uses: actions/cache@v3 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: ${{ runner.os }}-gradle + + - name: Validate Gradle wrapper + uses: gradle/wrapper-validation-action@v1 + - name: Build with Gradle run: ./gradlew build - name: Upload build artifacts - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: build-artifacts path: ./build/libs diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index 07b4fe3..cfeac99 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -8,20 +8,40 @@ on: jobs: build: runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v2 + - name: Checkout latest commit + uses: actions/checkout@v3 - name: Set up JDK 17 - uses: actions/setup-java@v2 + uses: actions/setup-java@v3 with: - distribution: 'temurin' + distribution: temurin java-version: 17 - - name: Build with Gradle - run: ./gradlew build + - name: Restore Gradle cache + uses: actions/cache@v3 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: ${{ runner.os }}-gradle + + - name: Validate Gradle wrapper + uses: gradle/wrapper-validation-action@v1 + + - name: Build and publish with Gradle + run: ./gradlew build publish modrinth curseforge + env: + MAVEN_URL: ${{ secrets.MAVEN_URL }} + MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} + CURSEFORGE_TOKEN: ${{ secrets.CURSEFORGE_TOKEN }} + MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }} - name: Upload build artifacts uses: AButler/upload-release-assets@v2.0 with: - files: 'build/libs/!(*-@(dev|sources)).jar' + files: 'build/libs/!(*-sources).jar' repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/build.gradle b/build.gradle index 030f7b7..b3f6f92 100644 --- a/build.gradle +++ b/build.gradle @@ -3,6 +3,9 @@ plugins { alias(libs.plugins.loom.quiltflower) alias(libs.plugins.qmol) alias(libs.plugins.grgit) + alias(libs.plugins.minotaur) + alias(libs.plugins.cursegradle) + id "maven-publish" } archivesBaseName = project.archives_base_name @@ -11,10 +14,10 @@ group = project.maven_group repositories { maven { - name = 'Modrinth' - url = 'https://api.modrinth.com/maven' + name = "Modrinth" + url = "https://api.modrinth.com/maven" content { - includeGroup 'maven.modrinth' + includeGroup "maven.modrinth" } } } @@ -35,16 +38,16 @@ loom { } processResources { - inputs.property 'version', project.version - filteringCharset 'UTF-8' + inputs.property "version", project.version + filteringCharset "UTF-8" - filesMatching('fabric.mod.json') { - expand 'version': project.version + filesMatching("fabric.mod.json") { + expand "version": project.version } } tasks.withType(JavaCompile) { - it.options.encoding = 'UTF-8' + it.options.encoding = "UTF-8" // Minecraft 1.18 (1.18-pre2) upwards uses Java 17. it.options.release = 17 } @@ -58,34 +61,79 @@ java { } jar { - from('LICENSE') { + from("LICENSE") { rename { "${it}_${project.archivesBaseName}"} } } -def getMetadata() { - def build_id = System.getenv('GITHUB_RUN_NUMBER') - def workflow_id = System.getenv('GITHUB_WORKFLOW') +modrinth { + projectId = "5AgJnN8I" + uploadFile = remapJar +} +tasks.modrinth.dependsOn remapJar - def metadata = libs.versions.minecraft.get() +def ENV = System.getenv() +curseforge { + if (ENV.CURSEFORGE_TOKEN) { + apiKey = ENV.CURSEFORGE_TOKEN + } + + project { + id = "564870" + changelog = "No changelog provided" + releaseType = "release" + addGameVersion libs.versions.minecraft.get() + addGameVersion "Fabric" + addGameVersion "Quilt" + + mainArtifact(jar) { + displayName = "Cauldron Dyeing ${project.mod_version}" + } + } +} +tasks.curseforge.dependsOn remapJar + +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + } + } + + repositories { + maven { + url = ENV.MAVEN_URL + credentials { + username = ENV.MAVEN_USERNAME + password = ENV.MAVEN_PASSWORD + } + } + } +} + +def getMetadata() { + def build_id = System.getenv("GITHUB_RUN_NUMBER") + def workflow_id = System.getenv("GITHUB_WORKFLOW") + + def metadata = "" // Release builds only - if (workflow_id == 'build-release') { + if (workflow_id == "build-release") { return metadata } if (build_id != null) { - metadata += "-build.${build_id}" + metadata += "build.${build_id}" } else if (grgit != null) { def head = grgit.head() def id = head.abbreviatedId // Flag the build if the build tree is not clean if (!grgit.status().clean) { - id += '-dirty' + id += "-dirty" } - metadata += "-${id}" + metadata += "${id}" } return metadata diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a47f428..d7c140e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -18,4 +18,6 @@ sodium = { module = "maven.modrinth:sodium", version.ref = "sodium" } fabric_loom = { id = "fabric-loom", version = "0.12.+" } loom_quiltflower = { id = "io.github.juuxel.loom-quiltflower", version = "1.7.+" } qmol = { id = "org.quiltmc.quilt-mappings-on-loom", version = "4.2.0" } -grgit = { id = "org.ajoberstar.grgit", version = "5.0.0" } +grgit = { id = "org.ajoberstar.grgit", version = "5.+" } +minotaur = { id = "com.modrinth.minotaur", version = "2.+" } +cursegradle = { id = "com.matthewprenger.cursegradle", version = "1.+" }