diff --git a/build.gradle b/build.gradle index f17cecf..a200ef7 100644 --- a/build.gradle +++ b/build.gradle @@ -29,12 +29,20 @@ shadowJar { mergeServiceFiles() } -// Hochladen auf den Limbo: ./gradlew uploadLimbo, danach `sudo systemctl restart limbo` +// Hochladen auf den Limbo: ./gradlew uploadLimbo, danach `sudo systemctl restart limbo`. +// Erst in eine Temp-Datei, Prüfsumme vergleichen, dann atomar umbenennen: ein abgebrochener Upload +// lässt das laufende JAR unberührt, und der laufende Prozess behält bis zum Neustart sein altes JAR. tasks.register('uploadLimbo') { dependsOn shadowJar doLast { + def jar = shadowJar.archiveFile.get().asFile + def checksum = jar.bytes.digest('SHA-256') providers.exec { - commandLine 'scp', shadowJar.archiveFile.get().asFile.absolutePath, 'minecraft@10.20.9.3:/home/minecraft/limbo/limbo.jar' + commandLine 'scp', jar.absolutePath, 'minecraft@10.20.9.3:/home/minecraft/limbo/limbo.jar.new' + }.result.get() + providers.exec { + commandLine 'ssh', 'minecraft@10.20.9.3', + "cd ~/limbo && echo '${checksum} limbo.jar.new' | sha256sum -c --quiet && mv -f limbo.jar.new limbo.jar" }.result.get() } }