# Триггерится при публикации релиза в Gitea. Публикует все KMP-библиотеки # (jvm + native таргеты) в домашний Nexus-репозиторий "caffeine", а также # собирает fatjar'ы запускаемых модулей и прикрепляет их к релизу как # бинарные ассеты. # # Требуемые 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: release: types: [published] concurrency: group: release-${{ github.ref }} cancel-in-progress: false jobs: publish-libraries: name: Publish KMP libraries → caffeine Nexus runs-on: ubuntu-latest timeout-minutes: 120 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: Publish libraries (all KMP targets, all modules) shell: bash env: BINOM_REPO_USER: ${{ secrets.BINOM_REPO_USER }} BINOM_REPO_PASSWORD: ${{ secrets.BINOM_REPO_PASSWORD }} BINOM_REPO_URL: ${{ vars.BINOM_REPO_URL }} run: | # Gitea Actions (Forgejo-based) экспонирует env-переменные под # GITHUB_-префиксом: GITHUB_REF_NAME = "v0.1.0" для tag-trigger'а. # Внутри bash подставляем через $GITHUB_REF_NAME (а не # ${GITEA_REF_NAME} — Forgejo этого не подставляет). TAG="$GITHUB_REF_NAME" echo "Publishing version: ${TAG}" ./gradlew \ "-Pversion=${TAG}" \ "-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 - name: Attach to release uses: https://code.forgejo.org/actions/forgejo-release@v1 if: startsWith(github.ref, 'refs/tags/') with: url: ${{ github.server_url }} repo: ${{ github.repository }} token: ${{ secrets.RELEASE_TOKEN }} tag: ${{ github.ref_name }} files: | standalone/build/libs/standalone-*-all.jar agentik-cli/build/libs/agentik-cli-*-all.jar agentik-tui/build/libs/agentik-tui-*-all.jar