2021-02-10 19:24:43 +00:00
|
|
|
buildscript {
|
2022-09-01 18:49:28 +00:00
|
|
|
ext.kotlin_version = "1.7.0"
|
2021-03-31 10:09:03 +00:00
|
|
|
ext.CI_PROJECT_ID = System.env.CI_PROJECT_ID
|
|
|
|
|
2021-08-07 13:50:55 +00:00
|
|
|
repositories { mavenCentral() }
|
2021-02-10 19:24:43 +00:00
|
|
|
|
|
|
|
dependencies {
|
|
|
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
2021-08-07 13:50:55 +00:00
|
|
|
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
|
2021-02-10 19:24:43 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-03-25 15:31:29 +00:00
|
|
|
apply plugin: "org.jetbrains.kotlin.jvm"
|
|
|
|
apply plugin: "java-library"
|
|
|
|
apply plugin: "java-test-fixtures"
|
|
|
|
apply plugin: "maven-publish"
|
|
|
|
apply plugin: "kotlinx-serialization"
|
2021-08-07 13:50:55 +00:00
|
|
|
|
2021-02-10 19:24:43 +00:00
|
|
|
|
2022-03-25 15:31:29 +00:00
|
|
|
group = "org.domaindrivenarchitecture.provs"
|
2023-04-13 20:32:15 +00:00
|
|
|
version = "release-0.18.4"
|
2021-02-10 19:24:43 +00:00
|
|
|
|
|
|
|
repositories {
|
|
|
|
mavenCentral()
|
|
|
|
}
|
|
|
|
|
2021-12-27 21:18:55 +00:00
|
|
|
|
|
|
|
java {
|
|
|
|
toolchain {
|
|
|
|
languageVersion = JavaLanguageVersion.of(11)
|
2021-08-08 14:27:21 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-02-05 14:59:05 +00:00
|
|
|
jar {
|
|
|
|
duplicatesStrategy(DuplicatesStrategy.EXCLUDE)
|
|
|
|
}
|
|
|
|
|
2021-12-27 21:18:55 +00:00
|
|
|
|
2021-02-10 19:24:43 +00:00
|
|
|
test {
|
2021-02-25 18:57:06 +00:00
|
|
|
// set properties for the tests
|
|
|
|
def propertiesForTests = ["testdockerwithoutsudo"]
|
|
|
|
for (def prop : propertiesForTests) {
|
|
|
|
def value = System.getProperty(prop)
|
|
|
|
if (value != null) {
|
|
|
|
systemProperty prop, value
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-02-10 19:24:43 +00:00
|
|
|
useJUnitPlatform {
|
2021-12-06 14:04:41 +00:00
|
|
|
def excludedTags = System.getProperty("excludeTags")
|
|
|
|
if (System.getProperty("excludeTags") != null) {
|
2022-04-08 15:14:58 +00:00
|
|
|
excludeTags(excludedTags.split(","))
|
2021-12-06 14:04:41 +00:00
|
|
|
}
|
2021-02-25 18:57:06 +00:00
|
|
|
if (System.getenv("CI_JOB_TOKEN") != null) {
|
2022-03-25 15:31:29 +00:00
|
|
|
excludeTags("containernonci")
|
2021-02-25 18:57:06 +00:00
|
|
|
}
|
2021-02-10 19:24:43 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
compileJava.options.debugOptions.debugLevel = "source,lines,vars"
|
2021-05-15 17:33:56 +00:00
|
|
|
compileTestFixturesJava.options.debugOptions.debugLevel = "source,lines,vars"
|
2021-02-10 19:24:43 +00:00
|
|
|
compileTestJava.options.debugOptions.debugLevel = "source,lines,vars"
|
|
|
|
|
|
|
|
// https://stackoverflow.com/questions/21904269/configure-gradle-to-publish-sources-and-javadoc
|
|
|
|
java {
|
|
|
|
withSourcesJar()
|
|
|
|
withJavadocJar()
|
|
|
|
}
|
|
|
|
|
2021-04-19 19:02:21 +00:00
|
|
|
|
2021-02-10 19:24:43 +00:00
|
|
|
dependencies {
|
2021-08-07 13:50:55 +00:00
|
|
|
|
2022-03-26 17:10:03 +00:00
|
|
|
api("org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version")
|
2022-03-26 11:07:16 +00:00
|
|
|
api("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2")
|
|
|
|
api("org.jetbrains.kotlinx:kotlinx-serialization-core:1.3.2")
|
|
|
|
api("org.jetbrains.kotlinx:kotlinx-cli:0.3.4")
|
2021-09-07 15:59:03 +00:00
|
|
|
|
2023-01-31 18:06:09 +00:00
|
|
|
api('com.charleskorn.kaml:kaml:0.49.0')
|
2021-02-10 19:24:43 +00:00
|
|
|
|
2022-03-25 15:31:29 +00:00
|
|
|
api("org.slf4j:slf4j-api:1.7.36")
|
2022-03-26 11:07:16 +00:00
|
|
|
api('ch.qos.logback:logback-classic:1.2.11')
|
|
|
|
api('ch.qos.logback:logback-core:1.2.11')
|
2021-02-10 19:24:43 +00:00
|
|
|
|
2022-03-26 17:10:03 +00:00
|
|
|
implementation("org.jetbrains.kotlin:kotlin-reflect:$kotlin_version")
|
|
|
|
implementation("com.hierynomus:sshj:0.32.0")
|
|
|
|
|
2022-09-01 18:49:28 +00:00
|
|
|
implementation("aws.sdk.kotlin:s3:0.17.1-beta")
|
|
|
|
|
2022-03-25 15:31:29 +00:00
|
|
|
testFixturesApi("org.junit.jupiter:junit-jupiter-api:5.8.2")
|
2022-03-26 11:07:16 +00:00
|
|
|
testFixturesApi('io.mockk:mockk:1.12.3')
|
|
|
|
|
2022-03-25 15:31:29 +00:00
|
|
|
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.8.2")
|
2021-02-10 19:24:43 +00:00
|
|
|
}
|
|
|
|
|
2021-12-01 20:19:08 +00:00
|
|
|
|
2022-01-21 17:15:23 +00:00
|
|
|
task uberjarDesktop(type: Jar) {
|
2021-02-10 19:24:43 +00:00
|
|
|
|
|
|
|
from sourceSets.main.output
|
|
|
|
|
|
|
|
dependsOn configurations.runtimeClasspath
|
|
|
|
from {
|
2022-03-25 15:31:29 +00:00
|
|
|
configurations.runtimeClasspath.findAll { it.name.endsWith("jar") }.collect { zipTree(it) }
|
2021-02-10 19:24:43 +00:00
|
|
|
} {
|
2021-07-28 14:31:41 +00:00
|
|
|
duplicatesStrategy(DuplicatesStrategy.EXCLUDE)
|
2022-03-25 15:31:29 +00:00
|
|
|
exclude "META-INF/*.RSA", "META-INF/*.SF", "META-INF/*.DSA"
|
2021-02-10 19:24:43 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
manifest {
|
2022-03-25 15:31:29 +00:00
|
|
|
attributes "Implementation-Title": "Uberjar of provs",
|
|
|
|
"Implementation-Version": project.version,
|
|
|
|
"Main-Class": "org.domaindrivenarchitecture.provs.desktop.application.ApplicationKt"
|
2021-02-10 19:24:43 +00:00
|
|
|
}
|
2022-03-25 15:31:29 +00:00
|
|
|
archiveFileName = "provs-desktop.jar"
|
2022-01-21 17:15:23 +00:00
|
|
|
}
|
|
|
|
|
2022-02-22 16:26:02 +00:00
|
|
|
|
2022-01-21 17:15:23 +00:00
|
|
|
task uberjarServer(type: Jar) {
|
|
|
|
|
|
|
|
from sourceSets.main.output
|
|
|
|
|
|
|
|
dependsOn configurations.runtimeClasspath
|
|
|
|
from {
|
2022-03-25 15:31:29 +00:00
|
|
|
configurations.runtimeClasspath.findAll { it.name.endsWith("jar") }.collect { zipTree(it) }
|
2022-01-21 17:15:23 +00:00
|
|
|
} {
|
|
|
|
duplicatesStrategy(DuplicatesStrategy.EXCLUDE)
|
2022-03-25 15:31:29 +00:00
|
|
|
exclude "META-INF/*.RSA", "META-INF/*.SF", "META-INF/*.DSA"
|
2022-01-21 17:15:23 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
manifest {
|
2022-03-25 15:31:29 +00:00
|
|
|
attributes "Implementation-Title": "Uberjar of provs",
|
|
|
|
"Implementation-Version": project.version,
|
|
|
|
"Main-Class": "org.domaindrivenarchitecture.provs.server.application.ApplicationKt"
|
2022-01-21 17:15:23 +00:00
|
|
|
}
|
2022-03-25 15:31:29 +00:00
|
|
|
archiveFileName = "provs-server.jar"
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
task uberjarSyspec(type: Jar) {
|
|
|
|
|
|
|
|
from sourceSets.main.output
|
|
|
|
|
|
|
|
dependsOn configurations.runtimeClasspath
|
|
|
|
from {
|
|
|
|
configurations.runtimeClasspath.findAll { it.name.endsWith("jar") }.collect { zipTree(it) }
|
|
|
|
} {
|
|
|
|
duplicatesStrategy(DuplicatesStrategy.EXCLUDE)
|
|
|
|
exclude "META-INF/*.RSA", "META-INF/*.SF", "META-INF/*.DSA"
|
|
|
|
}
|
|
|
|
|
|
|
|
manifest {
|
|
|
|
attributes "Implementation-Title": "Uberjar of provs",
|
|
|
|
"Implementation-Version": project.version,
|
|
|
|
"Main-Class": "org.domaindrivenarchitecture.provs.syspec.application.ApplicationKt"
|
|
|
|
}
|
|
|
|
archiveFileName = "provs-syspec.jar"
|
2021-02-10 19:24:43 +00:00
|
|
|
}
|
2022-04-13 10:59:52 +00:00
|
|
|
def projectRoot = rootProject.projectDir
|
|
|
|
|
2021-02-10 19:24:43 +00:00
|
|
|
|
2022-03-04 14:53:42 +00:00
|
|
|
// copy jar to /usr/local/bin and make it executable
|
|
|
|
// Remark: to be able to use it you must have jarwrapper installed (sudo apt install jarwrapper)
|
|
|
|
task installlocally {
|
2022-03-25 15:31:29 +00:00
|
|
|
dependsOn(uberjarServer, uberjarDesktop, uberjarSyspec)
|
2022-03-04 14:53:42 +00:00
|
|
|
doLast {
|
2022-06-10 10:16:15 +00:00
|
|
|
exec { commandLine("sh", "-c", "sudo apt-get update & sudo apt-get install jarwrapper") }
|
2022-04-13 10:59:52 +00:00
|
|
|
exec { commandLine("sh", "-c", "sudo cp $projectRoot/build/libs/provs-server.jar /usr/local/bin/") }
|
|
|
|
exec { commandLine("sh", "-c", "sudo cp $projectRoot/build/libs/provs-desktop.jar /usr/local/bin/") }
|
|
|
|
exec { commandLine("sh", "-c", "sudo cp $projectRoot/build/libs/provs-syspec.jar /usr/local/bin/") }
|
2022-03-25 15:31:29 +00:00
|
|
|
exec { commandLine("sh", "-c", "sudo chmod 755 /usr/local/bin/provs-server.jar") }
|
|
|
|
exec { commandLine("sh", "-c", "sudo chmod 755 /usr/local/bin/provs-desktop.jar") }
|
|
|
|
exec { commandLine("sh", "-c", "sudo chmod 755 /usr/local/bin/provs-syspec.jar") }
|
2022-03-04 14:53:42 +00:00
|
|
|
}
|
|
|
|
}
|
2021-02-10 19:24:43 +00:00
|
|
|
|
|
|
|
task sourceJar(type: Jar, dependsOn: classes) {
|
|
|
|
from sourceSets.main.allSource
|
|
|
|
archiveClassifier.set("sources")
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
publishing {
|
|
|
|
publications {
|
2021-02-11 18:24:16 +00:00
|
|
|
library(MavenPublication) {
|
2021-02-10 19:24:43 +00:00
|
|
|
from components.java
|
|
|
|
}
|
|
|
|
}
|
|
|
|
repositories {
|
|
|
|
if (System.getenv("CI_JOB_TOKEN") != null) {
|
|
|
|
// see https://docs.gitlab.com/ee/user/packages/maven_repository/index.html
|
|
|
|
maven {
|
2021-03-31 10:09:03 +00:00
|
|
|
url "https://gitlab.com/api/v4/projects/$CI_PROJECT_ID/packages/maven"
|
2021-02-10 19:24:43 +00:00
|
|
|
name "GitLab"
|
|
|
|
credentials(HttpHeaderCredentials) {
|
2022-03-25 15:31:29 +00:00
|
|
|
name = "Job-Token"
|
2021-02-10 19:24:43 +00:00
|
|
|
value = System.getenv("CI_JOB_TOKEN")
|
|
|
|
}
|
|
|
|
authentication {
|
|
|
|
header(HttpHeaderAuthentication)
|
|
|
|
}
|
|
|
|
}
|
2021-04-16 11:45:05 +00:00
|
|
|
} else {
|
|
|
|
mavenLocal()
|
2021-02-10 19:24:43 +00:00
|
|
|
}
|
|
|
|
}
|
2021-09-07 15:59:03 +00:00
|
|
|
}
|