137 lines
2.8 KiB
Kotlin
137 lines
2.8 KiB
Kotlin
import com.netflix.gradle.plugins.deb.Deb
|
|
import com.netflix.gradle.plugins.rpm.Rpm
|
|
import org.gradle.jvm.tasks.Jar
|
|
|
|
plugins {
|
|
java
|
|
application
|
|
id("com.netflix.nebula.ospackage") version "12.3.0"
|
|
}
|
|
|
|
group = "tech.bitgoblin"
|
|
version = "0.3.13"
|
|
description = "Automated video transcoder service"
|
|
|
|
java {
|
|
toolchain {
|
|
languageVersion.set(JavaLanguageVersion.of(21))
|
|
}
|
|
}
|
|
|
|
application {
|
|
mainClass.set("tech.bitgoblin.dragoon.Main")
|
|
}
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
}
|
|
|
|
dependencies {
|
|
implementation("commons-cli:commons-cli:1.3.1")
|
|
implementation("org.tomlj:tomlj:1.0.0")
|
|
implementation("org.apache.logging.log4j:log4j-api:2.19.0")
|
|
implementation("org.apache.logging.log4j:log4j-core:2.19.0")
|
|
|
|
testImplementation("junit:junit:4.11")
|
|
}
|
|
|
|
tasks.test {
|
|
useJUnit()
|
|
}
|
|
|
|
// Fat JAR
|
|
val fatJar by tasks.registering(Jar::class) {
|
|
archiveBaseName.set("dragoon")
|
|
archiveClassifier.set("")
|
|
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
|
|
|
manifest {
|
|
attributes["Main-Class"] = "tech.bitgoblin.dragoon.Main"
|
|
}
|
|
|
|
from(sourceSets.main.get().output)
|
|
|
|
dependsOn(configurations.runtimeClasspath)
|
|
|
|
from({
|
|
configurations.runtimeClasspath.get()
|
|
.filter { it.name.endsWith("jar") }
|
|
.map { zipTree(it) }
|
|
})
|
|
}
|
|
|
|
// ---------------- Deb ----------------
|
|
tasks.register<Deb>("build-deb") {
|
|
dependsOn(fatJar)
|
|
|
|
// Required package metadata
|
|
packageName = project.name
|
|
version = project.version.toString()
|
|
release = "1"
|
|
|
|
requires("openjdk-21-jre")
|
|
requires("ffmpeg")
|
|
|
|
user = project.name
|
|
permissionGroup = project.name
|
|
|
|
// Copy app files
|
|
from(fatJar)
|
|
into("/opt/dragoon") {
|
|
rename { "dragoon.jar" }
|
|
}
|
|
|
|
from("packaging/opt/dragoon/log4j2.xml") {
|
|
into("/opt/dragoon")
|
|
}
|
|
|
|
// config files
|
|
from("packaging/etc/dragoon") {
|
|
into("/etc/dragoon")
|
|
}
|
|
|
|
// systemd
|
|
from("packaging/systemd/dragoon.service") {
|
|
into("/etc/systemd/system")
|
|
}
|
|
}
|
|
|
|
// ---------------- Rpm ----------------
|
|
tasks.register<Rpm>("build-rpm") {
|
|
dependsOn(fatJar)
|
|
|
|
packageName = project.name
|
|
version = project.version.toString()
|
|
release = "1"
|
|
|
|
requires("java-21-openjdk")
|
|
requires("ffmpeg-free")
|
|
|
|
user = project.name
|
|
permissionGroup = project.name
|
|
|
|
from(fatJar)
|
|
into("/opt/dragoon") {
|
|
rename { "dragoon.jar" }
|
|
}
|
|
|
|
from("packaging/opt/dragoon/log4j2.xml") {
|
|
into("/opt/dragoon")
|
|
}
|
|
|
|
from("packaging/etc/dragoon") {
|
|
into("/etc/dragoon")
|
|
}
|
|
|
|
from("packaging/systemd/dragoon.service") {
|
|
into("/etc/systemd/system")
|
|
}
|
|
|
|
postInstall(file("packaging/scripts/postinstall.sh"))
|
|
}
|
|
|
|
// Task to build both
|
|
tasks.register("package-all") {
|
|
dependsOn("build-deb", "build-rpm")
|
|
}
|