diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2a924ecd..69dc06c1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,6 +19,13 @@ jobs: with: distribution: temurin java-version: 25 + - name: Cache generated data + uses: actions/cache@v5.0.4 + with: + path: | + plugin/build/minecraft/ + plugin/build/generated/minecraft/mapping/ + key: minecraft-${{ hashFiles('gradle.properties') }} - name: Build LimboAPI run: ./gradlew build - name: Upload LimboAPI diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index eb8234ec..10a7d6f3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,6 +15,13 @@ jobs: with: distribution: temurin java-version: 25 + - name: Cache generated data + uses: actions/cache@v5.0.4 + with: + path: | + plugin/build/minecraft/ + plugin/build/generated/minecraft/mapping/ + key: minecraft-${{ hashFiles('gradle.properties') }} - name: Build LimboAPI run: ./gradlew build - name: Upload LimboAPI diff --git a/gradle.properties b/gradle.properties index bbab74cb..5937da46 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,8 @@ org.gradle.jvmargs=-Xmx4096m manifestUrl=https://launchermeta.mojang.com/mc/game/version_manifest.json -cacheValidMillis=6000000 \ No newline at end of file + +# 1 week +cacheValidMillis=604800000 + +# Change to invalidate mappings cache on CI +gameVersion=26.1 \ No newline at end of file diff --git a/plugin/build.gradle b/plugin/build.gradle index 9bdf5432..e6801031 100644 --- a/plugin/build.gradle +++ b/plugin/build.gradle @@ -283,7 +283,8 @@ File generateData(MinecraftVersion version) { } File jarFile = this.getServerJar(version.getVersionName()) - File targetDir = new File(jarFile.getParentFile(), "generated") + File parent = jarFile.getParentFile() + File targetDir = new File(parent, "generated") try { FileUtils.deleteDirectory(targetDir) @@ -306,7 +307,36 @@ File generateData(MinecraftVersion version) { File java = new File(System.getProperty("java.home"), "bin/java") commandLine = ["bash", "-c", String.format(command, java)] } - commandLine.execute([], jarFile.getParentFile()).waitFor() + commandLine.execute([], parent).waitFor() + + // Remove/compact files, reduces disk usage from ~2.9gb to ~92mb (or ~9.5mb on a compressed filesystem) + jarFile.delete() + FileUtils.deleteDirectory(new File(parent, "logs")) + FileUtils.deleteDirectory(new File(parent, "libraries")) + FileUtils.deleteDirectory(new File(parent, "versions")) + + new File(targetDir, "reports/commands.json").delete() + + FileUtils.deleteDirectory(new File(targetDir, ".cache")) + FileUtils.deleteDirectory(new File(targetDir, "reports/biome_parameters")) + FileUtils.deleteDirectory(new File(targetDir, "reports/biomes")) + FileUtils.deleteDirectory(new File(targetDir, "reports/worldgen")) + FileUtils.deleteDirectory(new File(targetDir, "reports/minecraft/components/item")) + FileUtils.deleteDirectory(new File(targetDir, "data/minecraft/datapacks")) + FileUtils.deleteDirectory(new File(targetDir, "data/minecraft/advancements")) + FileUtils.deleteDirectory(new File(targetDir, "data/minecraft/advancement")) + FileUtils.deleteDirectory(new File(targetDir, "data/minecraft/recipes")) + FileUtils.deleteDirectory(new File(targetDir, "data/minecraft/recipe")) + FileUtils.deleteDirectory(new File(targetDir, "data/minecraft/loot_tables")) + FileUtils.deleteDirectory(new File(targetDir, "data/minecraft/loot_table")) + FileUtils.deleteDirectory(new File(targetDir, "data/minecraft/worldgen")) + + java.nio.file.Files.walk(parent.toPath(), 32).forEach { it -> + if (it.fileName.toString().endsWith(".json")) { + java.nio.file.Files.writeString(it, JsonOutput.toJson(new JsonSlurper().parse(it))) + } + } + return targetDir }