Compare commits
No commits in common. "65c3a42a1b6bce8df2dece256a3ef77944bfcb8a" and "2d0899eaff81ef3cc46c9c5c56c2faa975ceaad5" have entirely different histories.
65c3a42a1b
...
2d0899eaff
1 changed files with 1 additions and 262 deletions
263
build.gradle
263
build.gradle
|
@ -1,263 +1,2 @@
|
||||||
buildscript {
|
|
||||||
ext.kotlin_version = "1.7.20"
|
|
||||||
ext.CI_PROJECT_ID = System.env.CI_PROJECT_ID
|
|
||||||
|
|
||||||
repositories {
|
version = "3.3.3-SNAPSHOT"
|
||||||
mavenCentral()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
plugins {
|
|
||||||
id "org.jetbrains.kotlin.jvm" version "$kotlin_version"
|
|
||||||
id 'org.jetbrains.kotlin.plugin.serialization' version "$kotlin_version"
|
|
||||||
id "java"
|
|
||||||
id "java-test-fixtures"
|
|
||||||
}
|
|
||||||
apply plugin: "maven-publish"
|
|
||||||
|
|
||||||
|
|
||||||
version = "0.28.3-SNAPSHOT"
|
|
||||||
group = "org.domaindrivenarchitecture.provs"
|
|
||||||
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
mavenCentral()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
java {
|
|
||||||
// https://stackoverflow.com/questions/21904269/configure-gradle-to-publish-sources-and-javadoc
|
|
||||||
withSourcesJar()
|
|
||||||
withJavadocJar()
|
|
||||||
|
|
||||||
toolchain {
|
|
||||||
languageVersion = JavaLanguageVersion.of(11)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
jar {
|
|
||||||
duplicatesStrategy(DuplicatesStrategy.EXCLUDE)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
test {
|
|
||||||
// set properties for the tests
|
|
||||||
def propertiesForTests = ["testdockerwithoutsudo"]
|
|
||||||
for (def prop : propertiesForTests) {
|
|
||||||
def value = System.getProperty(prop)
|
|
||||||
if (value != null) {
|
|
||||||
systemProperty prop, value
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
useJUnitPlatform {
|
|
||||||
def excludedTags = System.getProperty("excludeTags")
|
|
||||||
if (System.getProperty("excludeTags") != null) {
|
|
||||||
excludeTags(excludedTags.split(","))
|
|
||||||
}
|
|
||||||
if (System.getenv("CI_JOB_TOKEN") != null) {
|
|
||||||
excludeTags("containernonci")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
compileJava.options.debugOptions.debugLevel = "source,lines,vars"
|
|
||||||
compileTestFixturesJava.options.debugOptions.debugLevel = "source,lines,vars"
|
|
||||||
compileTestJava.options.debugOptions.debugLevel = "source,lines,vars"
|
|
||||||
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
|
|
||||||
api("org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version")
|
|
||||||
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")
|
|
||||||
|
|
||||||
api('com.charleskorn.kaml:kaml:0.54.0')
|
|
||||||
|
|
||||||
api("org.slf4j:slf4j-api:1.7.36")
|
|
||||||
api('ch.qos.logback:logback-classic:1.2.11')
|
|
||||||
api('ch.qos.logback:logback-core:1.2.11')
|
|
||||||
|
|
||||||
implementation("org.jetbrains.kotlin:kotlin-reflect:$kotlin_version")
|
|
||||||
implementation("com.hierynomus:sshj:0.32.0")
|
|
||||||
|
|
||||||
implementation("aws.sdk.kotlin:s3:0.17.1-beta")
|
|
||||||
|
|
||||||
testFixturesApi("org.junit.jupiter:junit-jupiter-api:5.8.2")
|
|
||||||
testFixturesApi('io.mockk:mockk:1.12.3')
|
|
||||||
|
|
||||||
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.8.2")
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tasks.register('uberjarDesktop', 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.desktop.application.ApplicationKt"
|
|
||||||
}
|
|
||||||
archiveFileName = "provs-desktop.jar"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tasks.register('uberjarServer', 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.server.application.ApplicationKt"
|
|
||||||
}
|
|
||||||
archiveFileName = "provs-server.jar"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tasks.register('uberjarSyspec', 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"
|
|
||||||
}
|
|
||||||
def projectRoot = rootProject.projectDir
|
|
||||||
|
|
||||||
|
|
||||||
// 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)
|
|
||||||
tasks.register('installlocally') {
|
|
||||||
dependsOn(uberjarServer, uberjarDesktop, uberjarSyspec)
|
|
||||||
doLast {
|
|
||||||
exec { commandLine("sh", "-c", "sudo apt-get update & sudo apt-get install jarwrapper") }
|
|
||||||
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/") }
|
|
||||||
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") }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// publish to repo.prod.meissa.de with task "publishLibraryPublicationToMeissaRepository" -- (using pattern "publishLibraryPublicationTo<MAVEN REPOSITORY NAME>Repository")
|
|
||||||
publishing {
|
|
||||||
publications {
|
|
||||||
library(MavenPublication) {
|
|
||||||
groupId 'org.domaindrivenarchitecture'
|
|
||||||
artifactId 'provs'
|
|
||||||
from components.java
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
maven {
|
|
||||||
name = "gitlab"
|
|
||||||
url = "https://gitlab.com/api/v4/projects/$CI_PROJECT_ID/packages/maven"
|
|
||||||
credentials(HttpHeaderCredentials) {
|
|
||||||
name = "Job-Token"
|
|
||||||
value = System.getenv("CI_JOB_TOKEN")
|
|
||||||
}
|
|
||||||
authentication {
|
|
||||||
header(HttpHeaderAuthentication)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
maven {
|
|
||||||
name = "meissa"
|
|
||||||
url = uri("https://repo.prod.meissa.de/api/packages/meissa/maven")
|
|
||||||
|
|
||||||
credentials(HttpHeaderCredentials) {
|
|
||||||
name = "Authorization"
|
|
||||||
if (System.getenv("CI_JOB_TOKEN") != null) {
|
|
||||||
def tokenFromEnv = System.getenv("RELEASE_TOKEN")
|
|
||||||
if (tokenFromEnv == null) {
|
|
||||||
println "Error: RELEASE_TOKEN not found"
|
|
||||||
} else {
|
|
||||||
value = "token " + tokenFromEnv
|
|
||||||
println "RELEASE_TOKEN found - "
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// use project-property (define e.g. in "~/.gradle/gradle.properties") when not running in ci
|
|
||||||
// you can create a token in gitea "Profile and Settings ... > Settings > Applications", Token Name, Select scopes (write:package) > "Generate Token"
|
|
||||||
if (!project.hasProperty("RELEASE_TOKEN")) {
|
|
||||||
// if RELEASE_TOKEN is missing, provide a dummy in order to avoid error "Could not get unknown property 'RELEASE_TOKEN' for Credentials [header: Authorization]" for other gradle tasks
|
|
||||||
ext.RELEASE_TOKEN = "RELEASE_TOKEN not provided in file \".gradle/gradle.properties\""
|
|
||||||
println "Error: RELEASE_TOKEN not found"
|
|
||||||
}
|
|
||||||
value = "token $RELEASE_TOKEN"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
authentication {
|
|
||||||
header(HttpHeaderAuthentication)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tasks.register('createReleaseAndUploadAssets') {
|
|
||||||
dependsOn(uberjarServer, uberjarDesktop, uberjarSyspec)
|
|
||||||
doLast {
|
|
||||||
|
|
||||||
def token = project.properties.get("RELEASE_TOKEN") ?: System.getenv("RELEASE_TOKEN")
|
|
||||||
if (token == null) {
|
|
||||||
throw new GradleException('No token found.')
|
|
||||||
}
|
|
||||||
|
|
||||||
def output1 = new ByteArrayOutputStream()
|
|
||||||
exec {
|
|
||||||
standardOutput = output1
|
|
||||||
def TAG = project.version
|
|
||||||
commandLine("sh", "-c", "curl -X 'POST' 'https://repo.prod.meissa.de/api/v1/repos/meissa/provs/releases' -H 'accept: application/json' -H 'Content-Type: application/json' -d '{ \"body\": \"Provides jar-files for release $TAG\\nAttention: The \\\"Source Code\\\"-files below are not up-to-date!\", \"tag_name\": \"$TAG\" }' -H \"Authorization: token $token\"")
|
|
||||||
}
|
|
||||||
|
|
||||||
def matches = output1 =~ /\{"id":(\d+?),/
|
|
||||||
if (!matches) {
|
|
||||||
throw new GradleException('id of release could not be parsed in: ' + output1)
|
|
||||||
}
|
|
||||||
|
|
||||||
def releaseId = matches.group(1)
|
|
||||||
println "Release=$releaseId"
|
|
||||||
|
|
||||||
def releaseApiUrl = "https://repo.prod.meissa.de/api/v1/repos/meissa/provs/releases"
|
|
||||||
exec { commandLine("sh", "-c", "find build/libs/ -type f -exec sha256sum {} \\; | sort > build/libs/sha256sum.lst") }
|
|
||||||
exec { commandLine("sh", "-c", "find build/libs/ -type f -exec sha512sum {} \\; | sort > build/libs/sha512sum.lst") }
|
|
||||||
exec { commandLine("sh", "-c", "curl -X 'POST' '$releaseApiUrl/$releaseId/assets' -H 'accept: application/json' -H \"Authorization: token $token\" -H 'Content-Type: multipart/form-data' -F 'attachment=@build/libs/provs-desktop.jar;type=application/x-java-archive'") }
|
|
||||||
exec { commandLine("sh", "-c", "curl -X 'POST' '$releaseApiUrl/$releaseId/assets' -H 'accept: application/json' -H \"Authorization: token $token\" -H 'Content-Type: multipart/form-data' -F 'attachment=@build/libs/provs-server.jar;type=application/x-java-archive'") }
|
|
||||||
exec { commandLine("sh", "-c", "curl -X 'POST' '$releaseApiUrl/$releaseId/assets' -H 'accept: application/json' -H \"Authorization: token $token\" -H 'Content-Type: multipart/form-data' -F 'attachment=@build/libs/provs-syspec.jar;type=application/x-java-archive'") }
|
|
||||||
exec { commandLine("sh", "-c", "curl -X 'POST' '$releaseApiUrl/$releaseId/assets' -H 'accept: application/json' -H \"Authorization: token $token\" -H 'Content-Type: multipart/form-data' -F 'attachment=@build/libs/sha256sum.lst;type=text/plain'") }
|
|
||||||
exec { commandLine("sh", "-c", "curl -X 'POST' '$releaseApiUrl/$releaseId/assets' -H 'accept: application/json' -H \"Authorization: token $token\" -H 'Content-Type: multipart/form-data' -F 'attachment=@build/libs/sha512sum.lst;type=text/plain'") }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue