From da7f94b5b906371cca1759b26c287d9edb68ded6 Mon Sep 17 00:00:00 2001 From: ishland Date: Tue, 26 Jan 2021 18:31:36 +0800 Subject: [PATCH] Try to address path issue and improve Jenkins build speed --- Jenkinsfile | 21 ++----------------- .../org/yatopia/yatoclip/ServerSetup.java | 14 ++++++------- .../yatoclip/SpecialSourceLauncher.java | 10 ++++----- 3 files changed, 14 insertions(+), 31 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index ab69c021..f39110cd 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -51,31 +51,14 @@ pipeline { ) { withCredentials([usernamePassword(credentialsId: 'jenkins-deploy', usernameVariable: 'ORG_GRADLE_PROJECT_mavenUsername', passwordVariable: 'ORG_GRADLE_PROJECT_mavenPassword')]) { sh ''' - ./gradlew build - ./gradlew publish - ''' - } - } - } - } - stage('Build Launcher') { - tools { - jdk "OpenJDK 8" - } - steps { - withMaven( - maven: '3', - mavenLocalRepo: '.repository', - publisherStrategy: 'EXPLICIT' - ) { - sh ''' + ./gradlew clean yatoclip publish mkdir -p "./target" - ./gradlew yatoclip basedir=$(pwd) paperworkdir="$basedir/Paper/work" mcver=$(cat "$paperworkdir/BuildData/info.json" | grep minecraftVersion | cut -d '"' -f 4) cp "yatopia-$mcver-yatoclip.jar" "./target/yatopia-$mcver-yatoclip-b$BUILD_NUMBER.jar" ''' + } } } post { diff --git a/Yatoclip/src/main/java/org/yatopia/yatoclip/ServerSetup.java b/Yatoclip/src/main/java/org/yatopia/yatoclip/ServerSetup.java index 9d1ac1c4..d0892f38 100644 --- a/Yatoclip/src/main/java/org/yatopia/yatoclip/ServerSetup.java +++ b/Yatoclip/src/main/java/org/yatopia/yatoclip/ServerSetup.java @@ -65,22 +65,22 @@ public class ServerSetup { final Path memberMappedJar = minecraftDir.resolve(minecraftVersion + "-m.jar"); final Path patchedJar = minecraftDir.resolve(minecraftVersion + "-patched.jar"); if (!isValidZip(classMappedJar) || !isValidZip(memberMappedJar)) { - System.err.println("Applying class mapping..."); SpecialSourceLauncher.resetSpecialSourceClassloader(); final Path buildData = cacheDirectory.resolve("BuildData"); SpecialSourceLauncher.setSpecialSourceJar(buildData.resolve("bin").resolve("SpecialSource-2.jar").toFile()); + System.err.println("Applying class mapping..."); SpecialSourceLauncher.runProcess( "map", "--only", ".", "--only", "net/minecraft", "--auto-lvt", "BASIC", "--auto-member", "SYNTHETIC", - "-i", Paths.get(".").relativize(vanillaJar).toString(), - "-m", Paths.get(".").relativize(buildData.resolve("mappings").resolve(buildDataInfo.classMappings)).toString(), - "-o", Paths.get(".").relativize(classMappedJar).toString() + "-i", vanillaJar.toAbsolutePath().toString(), + "-m", buildData.resolve("mappings").resolve(buildDataInfo.classMappings).toAbsolutePath().toString(), + "-o", classMappedJar.toAbsolutePath().toString() ); System.err.println("Applying member mapping..."); SpecialSourceLauncher.runProcess( "map", "--only", ".", "--only", "net/minecraft", "--auto-member", "LOGGER", "--auto-member", "TOKENS", - "-i", Paths.get(".").relativize(classMappedJar).toString(), - "-m", Paths.get(".").relativize(buildData.resolve("mappings").resolve(buildDataInfo.memberMappings)).toString(), - "-o", Paths.get(".").relativize(memberMappedJar).toString() + "-i", classMappedJar.toAbsolutePath().toString(), + "-m", buildData.resolve("mappings").resolve(buildDataInfo.memberMappings).toAbsolutePath().toString(), + "-o", memberMappedJar.toAbsolutePath().toString() ); SpecialSourceLauncher.resetSpecialSourceClassloader(); if (!isValidZip(classMappedJar) || !isValidZip(memberMappedJar)) diff --git a/Yatoclip/src/main/java/org/yatopia/yatoclip/SpecialSourceLauncher.java b/Yatoclip/src/main/java/org/yatopia/yatoclip/SpecialSourceLauncher.java index f221bd46..0f94f082 100644 --- a/Yatoclip/src/main/java/org/yatopia/yatoclip/SpecialSourceLauncher.java +++ b/Yatoclip/src/main/java/org/yatopia/yatoclip/SpecialSourceLauncher.java @@ -36,6 +36,7 @@ import java.lang.reflect.Modifier; import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; +import java.util.Arrays; import java.util.concurrent.atomic.AtomicReference; public class SpecialSourceLauncher { @@ -45,7 +46,7 @@ public class SpecialSourceLauncher { static void setSpecialSourceJar(File specialSourceJar) { synchronized (classLoader) { - System.out.println("Setting up SpecialSource: " + specialSourceJar); + System.err.println("Setting up SpecialSource: " + specialSourceJar); try { classLoader.get().addURL(specialSourceJar.toURI().toURL()); mainClass.set(Yatoclip.getMainClass(specialSourceJar.toPath())); @@ -57,7 +58,8 @@ public class SpecialSourceLauncher { static void resetSpecialSourceClassloader() { synchronized (classLoader) { - System.out.println("Releasing SpecialSource"); + if(!classLoader.get().isLoaded) return; + System.err.println("Releasing SpecialSource"); try { classLoader.get().close(); classLoader.set(new SpecialSourceClassLoader(new URL[0], SpecialSourceLauncher.class.getClassLoader().getParent())); @@ -71,9 +73,7 @@ public class SpecialSourceLauncher { public static void runProcess(String... command) throws IOException { if (!(command != null && command.length > 0)) throw new IllegalArgumentException(); - if (command[0].equals("java")) { - command[0] = System.getProperty("java.home") + "/bin/" + command[0]; - } + System.err.println("Invoking SpecialSource with arguments: " + Arrays.toString(command)); AtomicReference thrown = new AtomicReference<>(null); final Thread thread = new Thread(() -> {