From 88af57182ffa789320632b9320f3b31be2cba963 Mon Sep 17 00:00:00 2001 From: subochev Date: Tue, 15 Sep 2026 23:31:07 +0300 Subject: [PATCH] =?UTF-8?q?ci:=20=D1=83=D0=B1=D0=B8=D1=80=D0=B0=D1=8E=20bu?= =?UTF-8?q?ild-standalone=20job=20=D0=B8=D0=B7=20release=20workflow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit standalone fatjar собирается локально через ./gradlew :standalone:shadowJar — CI-прикрепление к релизу через softprops/action-gh-release оказалось лишней обвязкой и сильно усложнило отладку публикации KMP-библиотек в Nexus (та упорно падала с 'Invalid publication kotlinMultiplatform: version cannot be empty' на разных subprojects при каждом фиксе). Теперь release.yml делает ровно одну вещь: ./gradlew publish → caffeine Nexus. debug-println в publications.configureEach тоже убран — он свою задачу выполнил (показал что configureEach срабатывает с правильной version, но KMP-plugin всё равно создаёт публикацию с пустой version в CI). --- .gitea/workflows/release.yml | 69 ++++-------------------------------- build.gradle.kts | 4 +-- 2 files changed, 8 insertions(+), 65 deletions(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 54f3c33..573d65f 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -1,17 +1,14 @@ -# Триггерится при публикации релиза в Gitea. Делает две вещи: -# 1. publish-libraries — публикует все KMP-библиотеки (jvm + все нативные таргеты) -# в домашний Nexus-репозиторий "caffeine". -# 2. build-standalone — собирает :standalone fatjar (shadowJar) и прикрепляет -# standalone--all.jar к release как downloadable asset. +# Триггерится при публикации релиза в Gitea. Публикует все KMP-библиотеки +# (jvm + native таргеты) в домашний Nexus-репозиторий "caffeine". +# +# Сборку :standalone fatjar'a и прикрепление JAR к release было решено убрать +# из CI (2026-09-15, итерация с публикацией затянулась). JAR собирается локально +# через `./gradlew :standalone:shadowJar` — его достаточно для запуска. # # Требуемые Gitea Action Variables: # BINOM_REPO_URL — например http://nexus.xx/repository/caffeine/ # Требуемые Gitea Action Secrets: # BINOM_REPO_USER, BINOM_REPO_PASSWORD — креды Nexus с правами на публикацию. -# RELEASE_TOKEN — токен Gitea с правами write:repository (для -# softprops/action-gh-release чтобы прикрепить JAR к релизу). -# Используем кастомное имя вместо GITHUB_TOKEN/GITEA_TOKEN, т.к. -# оба зарезервированы в Gitea. name: release on: @@ -26,21 +23,12 @@ jobs: - name: Checkout uses: actions/checkout@v4 - # agentik не использует Android-target ни в одном модуле (все KMP-таргеты - # JVM + native), поэтому Android SDK шаг не нужен. - - name: Setup JDK 21 uses: actions/setup-java@v4 with: java-version: '21' distribution: 'adopt' - # Раньше здесь стоял subochev/devops/publish@main, но он хардкодно - # читает BINOM_REPO_USER/PASSWORD из ${{ vars.* }}. Креды лежат в Secrets - # (безопаснее), поэтому публикуем inline — это просто `./gradlew publish` - # с теми же -Pbinom.repo.user/password, что и в devops/publish action. - # URL передаём явно через -Pbinom.repo.url (build.gradle.kts читает только - # -P-свойства, не env-vars). - name: Publish libraries shell: bash env: @@ -48,54 +36,11 @@ jobs: BINOM_REPO_PASSWORD: ${{ secrets.BINOM_REPO_PASSWORD }} BINOM_REPO_URL: ${{ vars.BINOM_REPO_URL }} run: | - echo "=== DEBUG: gradle properties and version ===" - ./gradlew --no-daemon properties 2>&1 | grep -E "^version|^group" | head -10 - echo "=== DEBUG: explicit properties task ===" - ./gradlew --no-daemon help -Pversion=v0.1.0 2>&1 | tail -5 - echo "=== DEBUG: try publishing memory-vector explicitly ===" ./gradlew \ - ":memory-vector:publishKotlinMultiplatformPublicationToCaffeineRepository" \ - ":memory-vector:publishJvmPublicationToCaffeineRepository" \ "-Pversion=${GITEA_REF_NAME}" \ "-Pbinom.repo.url=${BINOM_REPO_URL}" \ "-Pbinom.repo.user=${BINOM_REPO_USER}" \ "-Pbinom.repo.password=${BINOM_REPO_PASSWORD}" \ + publish \ -Dorg.gradle.jvmargs=-Xmx4096M \ --no-daemon --no-watch-fs --stacktrace - - build-standalone: - name: Build standalone fatjar - runs-on: ubuntu-latest - needs: publish-libraries - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup JDK 21 - uses: actions/setup-java@v4 - with: - java-version: '21' - distribution: 'adopt' - - - name: Build shadowJar - shell: bash - run: ./gradlew :standalone:shadowJar -Dorg.gradle.jvmargs=-Xmx4096M --no-daemon --no-watch-fs --stacktrace - - - name: Compute version for filename - id: ver - shell: bash - run: echo "version=${GITEA_REF_NAME}" >> "$GITEA_OUTPUT" - - - name: Attach standalone jar to release - uses: https://github.com/softprops/action-gh-release@v2 - with: - files: | - standalone/build/libs/standalone-*-all.jar - standalone/build/libs/standalone-*-sources.jar - # softprops по дефолту читает GITHUB_TOKEN, но это имя зарезервировано - # в Gitea (она сама использует). Поэтому читаем из кастомного RELEASE_TOKEN. - token: ${{ secrets.RELEASE_TOKEN }} - fail_on_unmatched_files: false - generate_release_notes: false - env: - GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }} diff --git a/build.gradle.kts b/build.gradle.kts index cfe8dc0..6570c1b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -70,11 +70,9 @@ subprojects { // Явная установка version здесь гарантирует, что публикация всегда // использует актуальное значение из rootProject.extra. publications.withType().configureEach { - val v = rootProject.extra["projectVersion"] as String - println("DEBUG-CFG publication=${this.name} project=${project.name} setting version=$v (was=$version)") groupId = rootProject.group.toString() artifactId = project.name - version = v + version = rootProject.extra["projectVersion"] as String pom { name = project.name