name: CI # ⏸️ ПАРКОВКА (2026-07-09): CI отложен. Раннер на инфре B развёрнут, но # host-исполнение act_runner 0.2.13 в нашем окружении сломано (криво резолвит # пути к шагам/JS-экшенам: MODULE_NOT_FOUND / "No such file", задвоение # hostexecutor/.cache/act). Рабочий путь — Docker-исполнение с кастомным образом # (JDK 21 + Android SDK 36) и volume для ~/.gradle. До этого — сборки/релизы вручную # на билд-машине (см. docs/CI.md). # # Триггер временно ручной (workflow_dispatch), чтобы push'и не создавали падающие # прогоны. Когда настроим Docker-раннер — вернуть блок on: push/pull_request ниже. # # on: # push: # branches: [main] # tags: ['v*'] # pull_request: on: workflow_dispatch: env: JAVA_HOME: /usr/lib/jvm/java-21-openjdk-amd64 ANDROID_HOME: /opt/android-sdk GRADLE_OPTS: "-Dorg.gradle.daemon=false" jobs: verify: # detekt + unit-тесты + Android Lint + debug-сборка на каждый push в main и на PR runs-on: [self-hosted, f7-android] if: github.ref_type != 'tag' steps: - uses: actions/checkout@v4 - name: Статанализ (detekt + ktlint-форматирование) run: ./gradlew detekt --no-daemon - name: Unit-тесты run: ./gradlew testDebugUnitTest --no-daemon - name: Android Lint (release) run: ./gradlew :app:lintRelease --no-daemon - name: Debug-сборка (артефакт для QA) run: ./gradlew :app:assembleDebug --no-daemon - name: Публикация debug-APK uses: actions/upload-artifact@v3 with: name: f7cloud-mobile-debug path: app/build/outputs/apk/debug/*.apk release: # по тегу v*: подписанный release + архив исходников (GPL corresponding source) в Gitea Release runs-on: [self-hosted, f7-android] if: github.ref_type == 'tag' steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Развернуть keystore из secret run: | echo "${{ secrets.F7_KEYSTORE_BASE64 }}" | base64 -d > "$RUNNER_TEMP/release.jks" - name: Release-сборка (подписанная) env: F7_KEYSTORE_FILE: ${{ runner.temp }}/release.jks F7_KEYSTORE_PASSWORD: ${{ secrets.F7_KEYSTORE_PASSWORD }} F7_KEY_ALIAS: ${{ secrets.F7_KEY_ALIAS }} F7_KEY_PASSWORD: ${{ secrets.F7_KEY_PASSWORD }} run: ./gradlew :app:assembleRelease --no-daemon - name: Архив исходников (GPL corresponding source) run: bash scripts/package-source.sh "$RUNNER_TEMP/dist" - name: Публикация Gitea Release (APK + исходники) uses: akkuman/gitea-release-action@v1 with: files: | app/build/outputs/apk/release/*.apk ${{ runner.temp }}/dist/*-source.tar.gz