# PR / push-build. Прогоняет unit-тесты на JVM, линтер gradle-плагинов # и проверяет, что shadowJar'ы запускаемых модулей собираются без ошибок. # Артефакты не публикует — этим занимается .gitea/workflows/release.yml. # # Зависимости (text-embedding-kmp) подтягиваются из caffeine Nexus. # Все env secrets доступны через vars/secrets репозитория — см. начало # release.yml для требуемых переменных. 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)" - name: Build :agentik-cli shadowJar shell: bash run: | ./gradlew :agentik-cli:shadowJar \ -Dorg.gradle.jvmargs=-Xmx4096M \ --no-daemon --no-watch-fs --stacktrace test -f agentik-cli/build/libs/agentik-cli-*-all.jar \ && echo "shadowJar OK: $(du -h agentik-cli/build/libs/agentik-cli-*-all.jar)" - name: Upload shadowJars uses: actions/upload-artifact@v4 with: name: agentik-jars path: | standalone/build/libs/standalone-*-all.jar agentik-cli/build/libs/agentik-cli-*-all.jar if-no-files-found: error retention-days: 7