# PR / push-build. Прогоняет unit-тесты на JVM, линтер gradle-плагинов # и проверяет, что shadowJar'ы запускаемых модулей собираются без ошибок. # Артефакты не публикует — этим занимается .gitea/workflows/release.yml. # # Зависимости (text-embedding-kmp) подтягиваются из caffeine Nexus. # Все env secrets доступны через vars/secrets репозитория — см. начало # release.yml для требуемых переменных. # # :agentik-cli / :agentik-tui исключены из сборки (settings.gradle.kts # 2026-09-17/21) — соответствующие шаги shadowJar тут НЕ запускаются. name: ci on: push: branches: [main] pull_request: branches: [main] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true # UTF-8 обязателен: в именах тестов есть типографские символы (—), а Kotlin-компилятор # создаёт .class-файлы с именем теста. При LANG=C sun.jnu.encoding = ASCII, и компилятор # падает с "InvalidPathException: Malformed input or input contains unmappable characters" # (проверено локально: LANG=C → BUILD FAILED, LANG=C.UTF-8 → BUILD SUCCESSFUL). env: LANG: C.UTF-8 LC_ALL: C.UTF-8 jobs: build-jvm: name: JVM build + tests runs-on: ubuntu-latest timeout-minutes: 60 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 + test (JVM only — самые быстрые таргеты) shell: bash run: | ./gradlew jvmTest \ -Dorg.gradle.jvmargs=-Xmx4096M \ --no-daemon --no-watch-fs --stacktrace - name: Build :standalone shadowJar (smoke — запускаемый артефакт) shell: bash run: | ./gradlew :standalone:shadowJar \ -Dorg.gradle.jvmargs=-Xmx4096M \ --no-daemon --no-watch-fs --stacktrace test -f standalone/build/libs/standalone-*-all.jar \ && echo "shadowJar OK: $(du -h standalone/build/libs/standalone-*-all.jar)" # Шага "Build :agentik-cli shadowJar" здесь нет: :agentik-cli исключён из # settings.gradle.kts (2026-09-21). :agentik-tui — тоже исключён (2026-09-17). # Когда/если оба вернутся, добавим отдельные шаги по аналогии с :standalone. # # Шага "Upload shadowJars" здесь нет сознательно: upload-artifact@v4 требует # @actions/artifact v2, который на GHES/Gitea-раннере падает с # "GHESNotSupportedError: @actions/artifact v2.0.0+ ... not supported on GHES" # и валит весь джоб уже ПОСЛЕ успешной сборки и зелёных тестов. # У соседних репо (asr-kmp, litert-kmp) артефакты наружу тоже не выгружаются — # проверка сборки ограничивается test -f на jar (шаги выше).