ZapretKVN-android/.forgejo/workflows/test-release-verify.yml
loop-uh ac64b1b4af
Some checks failed
Android CI / build (push) Has been cancelled
Модули: :core:model и :feature:{home,servers,routing,settings}
- :core:model: типы значений для UI (состояние VPN, профили, маршруты,
  приложения, диагностика, настройки, обновления) с прежними пакетами;
  типы обновлений вынесены из :app-updater, смешанные файлы разделены.
- :feature:*: экраны, презентеры и их JVM-тесты; *Route.kt, ViewModel,
  BuildConfig и QR-лаунчеры остаются в :app. Общие флаги, release notes,
  PresetPicker, DiagnosticShareButton — в :core:designsystem, форматтер
  задержки и ScreenshotPrivacy — в :core:ui-model.
- verify-project.sh: запрет зависимости :feature:* от :app и импорта рантайма
  VPN/ViewModel/AppContainer из feature/**; пути delay и AboutPage обновлены.
- CI и build-test-bundle запускают testDebugUnitTest всех модулей.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 22:37:48 +03:00

86 lines
3.1 KiB
YAML

name: Verify published emulator-only test
on:
workflow_dispatch:
inputs:
tag:
description: Existing locally published test prerelease tag
required: true
type: string
jobs:
verify:
runs-on: android
timeout-minutes: 120
env:
TEST_TAG: ${{ inputs.tag }}
ZAPRET_UPDATE_REPOSITORY: zapretkvn/ZapretKVN-android
GRADLE_OPTS: >-
-Dorg.gradle.daemon=false
-Dorg.gradle.workers.max=1
-Dorg.gradle.parallel=false
-Dkotlin.compiler.execution.strategy=in-process
-Dkotlin.daemon.enabled=false
steps:
- name: Validate requested test tag
run: |
[[ "$TEST_TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+-test\.[0-9]+$ ]]
- name: Checkout exact test tag
uses: https://data.forgejo.org/actions/checkout@v6
with:
ref: ${{ inputs.tag }}
persist-credentials: false
- name: Set up pinned Go
uses: https://data.forgejo.org/actions/setup-go@v6
with:
go-version: 1.26.8
cache: false
- name: Restore Gradle and native build cache
uses: https://data.forgejo.org/actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
~/.cache/go-build
core-build/gopath/pkg/mod
key: zapret-kvn-android-test-${{ hashFiles('core.properties', 'gradle/wrapper/gradle-wrapper.properties', '**/*.gradle*') }}
- name: Verify tagged source and Android tests
run: |
scripts/verify-project.sh
./gradlew testDebugUnitTest :app:compileDebugAndroidTestKotlin
- name: Download exact prerelease assets
run: |
set -euo pipefail
release_url="https://git2.zapret.moe/api/v1/repos/$ZAPRET_UPDATE_REPOSITORY/releases/tags/$TEST_TAG"
curl --fail --silent --show-error --proto '=https' "$release_url" > test-release.json
jq -e --arg tag "$TEST_TAG" \
'.tag_name == $tag and .draft == false and .prerelease == true and (.assets | length) == 5' \
test-release.json >/dev/null
mkdir published-test
while IFS=$'\t' read -r name url; do
[[ "$name" =~ ^[A-Za-z0-9._-]+$ ]]
expected="https://git2.zapret.moe/$ZAPRET_UPDATE_REPOSITORY/releases/download/$TEST_TAG/"
[[ "$url" == "$expected"* ]]
curl --fail --silent --show-error --location --proto '=https' --max-redirs 3 \
--output "published-test/$name" "$url"
done < <(jq -r '.assets[] | [.name, .browser_download_url] | @tsv' test-release.json)
- name: Verify exact downloaded bundle
run: scripts/verify-test-bundle.sh "$TEST_TAG" published-test
- name: Upload verification proof
uses: https://data.forgejo.org/forgejo/upload-artifact@v4
with:
name: zapret-kvn-${{ inputs.tag }}-emulator-test-proof
if-no-files-found: error
path: |
published-test/**
app/build/reports/tests/testDebugUnitTest/**
core/*/build/reports/tests/testDebugUnitTest/**
feature/*/build/reports/tests/testDebugUnitTest/**