name: CI

# Активируется, когда на инфре B зарегистрирован self-hosted act_runner с меткой `f7-android`
# (JDK 21 + Android SDK 36 — как на билд-машине). Пока раннера нет — джобы ждут исполнителя.
# Регистрация раннера — инфра-шаг ячейки B (см. docs/CI.md).

on:
  push:
    branches: [main]
    tags: ['v*']
  pull_request:

env:
  JAVA_HOME: /usr/lib/jvm/java-21-openjdk-amd64
  ANDROID_HOME: /opt/android-sdk
  GRADLE_OPTS: "-Dorg.gradle.daemon=false"

jobs:
  verify:
    # lint + unit-тесты + 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
