From 7a47131f6f700588a2eedd809e1b568a115ff8aa Mon Sep 17 00:00:00 2001 From: SubochevAV Date: Wed, 16 Sep 2026 23:41:45 +0300 Subject: [PATCH] =?UTF-8?q?ci:=20release.yml=20=E2=80=94=20=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D0=B2=D0=BB=D1=8F=D0=B5=D0=BC=20=D1=82=D0=BE=D0=BB?= =?UTF-8?q?=D1=8C=D0=BA=D0=BE=20=D0=BF=D1=83=D0=B1=D0=BB=D0=B8=D0=BA=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8E=20KMP-=D0=B1=D0=B8=D0=B1=D0=BB=D0=B8=D0=BE?= =?UTF-8?q?=D1=82=D0=B5=D0=BA=20=D0=B2=20Nexus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Удалён job build-fatjars + upload-artifact + Attach-to-release-API. Сборка и прикрепление fatjar-ов делается локально (./gradlew ::shadowJar) и через Gitea UI/API руками. CICD занимается только тем, что умеет: публикует библиотеки в Nexus caffeine. --- .gitea/workflows/release.yml | 120 ++++------------------------------- 1 file changed, 14 insertions(+), 106 deletions(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 9d7375d..3f8301b 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -1,14 +1,16 @@ # Триггерится при публикации релиза в Gitea. Публикует все KMP-библиотеки -# (jvm + native таргеты) в домашний Nexus-репозиторий "caffeine", а также -# собирает fatjar'ы запускаемых модулей и прикрепляет их к релизу как -# бинарные ассеты. +# (jvm + native таргеты) в домашний Nexus-репозиторий "caffeine". +# +# Fatjar-ы запускаемых модулей (:standalone, :agentik-cli, :agentik-tui) +# НЕ собираются и НЕ крепятся к релизу здесь. Сборка артефактов +# выполняется локально из исходников (или руками через `./gradlew +# ::shadowJar`) и загружается в релиз через Gitea UI / API +# отдельно от этого workflow. # # Требуемые Gitea Action Variables: # BINOM_REPO_URL — например http://192.168.76.117/repository/caffeine/ # Требуемые Gitea Action Secrets: # BINOM_REPO_USER, BINOM_REPO_PASSWORD — креды Nexus с правами на публикацию. -# RELEASE_TOKEN — Gitea API-токен с правами на запись в релиз (используется -# forgejo-release action для прикрепления fatjar'ов к release). name: release on: @@ -56,112 +58,18 @@ jobs: # GITHUB_-префиксом: GITHUB_REF_NAME = "v0.1.0" для tag-trigger'а. # Внутри bash подставляем через $GITHUB_REF_NAME (а не # ${GITEA_REF_NAME} — Forgejo этого не подставляет). + # + # Версия = имя тега (с trim'ом опционального префикса 'v'), чтобы + # тег "1" публиковался как pw.binom.agentik::1. CICD не + # хардкодит версию — берёт её из тега каждый раз. TAG="$GITHUB_REF_NAME" - echo "Publishing version: ${TAG}" + VERSION="${TAG#v}" + echo "Publishing version: ${VERSION}" ./gradlew \ - "-Pversion=${TAG}" \ + "-Pversion=${VERSION}" \ "-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-fatjars: - name: Build runnable fatjars - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup JDK 21 - uses: actions/setup-java@v4 - with: - java-version: '21' - distribution: 'adopt' - - - name: Gradle cache - uses: actions/cache@v4 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - .gradle - key: ${{ runner.os }}-gradle-agentik-${{ hashFiles('**/*.gradle.kts', '**/gradle/libs.versions.toml', 'gradle/wrapper/gradle-wrapper.properties') }} - restore-keys: | - ${{ runner.os }}-gradle-agentik- - - - name: Build :standalone shadowJar - shell: bash - run: | - ./gradlew :standalone:shadowJar \ - -Pdisable-javadoc=true \ - -Dorg.gradle.jvmargs=-Xmx4096M \ - --no-daemon --no-watch-fs --stacktrace - - - name: Build :agentik-cli shadowJar - shell: bash - run: | - ./gradlew :agentik-cli:shadowJar \ - -Pdisable-javadoc=true \ - -Dorg.gradle.jvmargs=-Xmx4096M \ - --no-daemon --no-watch-fs --stacktrace - - - name: Build :agentik-tui shadowJar - shell: bash - run: | - ./gradlew :agentik-tui:shadowJar \ - -Pdisable-javadoc=true \ - -Dorg.gradle.jvmargs=-Xmx4096M \ - --no-daemon --no-watch-fs --stacktrace - - - name: Upload fatjars as release assets - uses: actions/upload-artifact@v3 - with: - name: agentik-fatjars - path: | - standalone/build/libs/standalone-*-all.jar - agentik-cli/build/libs/agentik-cli-*-all.jar - agentik-tui/build/libs/agentik-tui-*-all.jar - if-no-files-found: error - retention-days: 90 - - # Ассеты прикрепляются через прямой Gitea API-вызов: forgejo-release - # action всегда пытается tea release create с теми же tag+title, - # что уже опубликованный релиз, и валится с - # "There already is a release for this tag". - # - # Тонкость: redirect-тело от PUT на /releases/{id}/assets для - # бинарной загрузки обычно пустое. Используем POST (по текущему - # контракту Gitea API для ассетов). - - name: Attach fatjars to release via API - if: startsWith(github.ref, 'refs/tags/') - shell: bash - env: - RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }} - run: | - TAG="$GITHUB_REF_NAME" - # strip leading "v" if present (artifact filename doesn't include it) - VERSION="${TAG#v}" - REL_ID=$(curl -sS -H "Authorization: token $RELEASE_TOKEN" \ - "$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/releases/tags/$TAG" \ - | jq -r .id) - echo "release id: $REL_ID tag: $TAG version: $VERSION" - for f in \ - "standalone/build/libs/standalone-${VERSION}-all.jar" \ - "agentik-cli/build/libs/agentik-cli-${VERSION}-all.jar" \ - "agentik-tui/build/libs/agentik-tui-${VERSION}-all.jar" - do - if [ -f "$f" ]; then - fname=$(basename "$f") - curl -sS -X POST \ - -H "Authorization: token $RELEASE_TOKEN" \ - -H "Content-Type: application/octet-stream" \ - --data-binary "@$f" \ - "$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/releases/$REL_ID/assets?name=$fname" \ - -w " upload: $fname -> HTTP %{http_code}\n" - else - echo " skip missing: $f" - fi - done