# Триггерится при публикации релиза в Gitea. Делает две вещи: # 1. publish-libraries — публикует все KMP-библиотеки (jvm + все нативные таргеты) # в домашний Nexus-репозиторий "caffeine". # 2. build-standalone — собирает :standalone fatjar (shadowJar) и прикрепляет # standalone--all.jar к release как downloadable asset. # # Требуемые 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: release: types: [published] jobs: publish-libraries: name: Publish KMP libraries → caffeine Nexus runs-on: ubuntu-latest steps: - 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: BINOM_REPO_USER: ${{ secrets.BINOM_REPO_USER }} BINOM_REPO_PASSWORD: ${{ secrets.BINOM_REPO_PASSWORD }} BINOM_REPO_URL: ${{ vars.BINOM_REPO_URL }} run: | ./gradlew \ "-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 \ --parallel --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 }}