ci: maven-publish всех модулей + Gitea release workflow
- build.gradle.kts (root): настроен maven-publish для всех сабпроектов; репо 'caffeine' (Nexus) с setAllowInsecureProtocol=true, POM-метаданные (Apache-2.0, subochev as developer, scm). Version берётся из -Pversion=<tag> с fallback 0.1.0. - gradle.properties: дефолтная version=0.1.0 для локальных билдов. - .gitea/workflows/release.yml: триггер на release.published; две job'ы — publish-libraries (subochev/devops/publish action с BINOM_REPO_* env-vars) и build-standalone (собирает :standalone shadowJar, прикрепляет standalone-<version>-all.jar и sources.jar к release assets через softprops/action-gh-release + GITEA_TOKEN). - В пяти KMP-модулях (skills, storage-core, agent-toolsets, server, client) добавлен api(libs.kotlinx.serialization.core) — раньше commonMain компилировался только на JVM, и эта зависимость была пропущена; теперь commonMain корректно публикуется как Gradle Module Metadata. Локальная проверка: ./gradlew publishToMavenLocal — все 11 модулей × 9-10 таргетов ./gradlew jvmTest — все тесты зелёные ./gradlew :standalone:shadowJar — 240MB fatjar, Main-Class загружается
This commit is contained in:
+68
-1
@@ -2,7 +2,74 @@ plugins {
|
||||
alias(libs.plugins.kotlin.multiplatform) apply false
|
||||
alias(libs.plugins.kotlin.jvm) apply false
|
||||
alias(libs.plugins.kotlin.serialization) apply false
|
||||
// maven-publish — стандартный плагин Gradle, объявлен apply'ем в subprojects ниже.
|
||||
}
|
||||
|
||||
group = "pw.binom.agentik"
|
||||
version = "0.1.0"
|
||||
|
||||
// Publication version: -Pversion=<tag> (CICD publishes by release tag).
|
||||
// Без явного -Pversion берётся fallback из gradle.properties или "0.1.0".
|
||||
if (version == "unspecified") {
|
||||
version = providers.gradleProperty("version").getOrElse("0.1.0")
|
||||
}
|
||||
|
||||
// Home Nexus URL/creds — Gitea action-variables BINOM_REPO_* (subochev/devops/publish).
|
||||
// Локально для дебага: ./gradlew publish \
|
||||
// -Pbinom.repo.url=http://... -Pbinom.repo.user=... -Pbinom.repo.password=...
|
||||
val binomRepoUrl = (findProperty("binom.repo.url") ?: "http://nexus.xx/repository/caffeine/").toString()
|
||||
val binomRepoUser = (findProperty("binom.repo.user") as String? ?: "").toString()
|
||||
val binomRepoPassword = (findProperty("binom.repo.password") as String? ?: "").toString()
|
||||
|
||||
subprojects {
|
||||
group = rootProject.group
|
||||
version = rootProject.version
|
||||
|
||||
apply(plugin = "maven-publish")
|
||||
|
||||
extensions.configure<PublishingExtension>("publishing") {
|
||||
repositories {
|
||||
maven {
|
||||
name = "caffeine"
|
||||
url = uri(binomRepoUrl)
|
||||
isAllowInsecureProtocol = true
|
||||
credentials {
|
||||
username = binomRepoUser
|
||||
password = binomRepoPassword
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Per-subproject POM-метаданные (name, scm, licenses, developers).
|
||||
publications.withType<MavenPublication>().configureEach {
|
||||
pom {
|
||||
name = project.name
|
||||
description = providers.provider {
|
||||
project.findProperty("description")?.toString()
|
||||
?: "agentik: ${project.name} (pw.binom.agentik)"
|
||||
}
|
||||
url = "https://git.binom.pw/subochev/agentik"
|
||||
|
||||
licenses {
|
||||
license {
|
||||
name = "Apache-2.0"
|
||||
url = "https://www.apache.org/licenses/LICENSE-2.0"
|
||||
}
|
||||
}
|
||||
|
||||
developers {
|
||||
developer {
|
||||
id = "subochev"
|
||||
name = "Subochev Alexey"
|
||||
url = "https://git.binom.pw/subochev"
|
||||
}
|
||||
}
|
||||
|
||||
scm {
|
||||
connection = "scm:git:https://git.binom.pw/subochev/agentik.git"
|
||||
developerConnection = "scm:git:ssh://git@git.binom.pw/subochev/agentik.git"
|
||||
url = "https://git.binom.pw/subochev/agentik"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user