From c53885b2307557fc1993c95f722821d1e6302e88 Mon Sep 17 00:00:00 2001 From: b-dev-mobile Date: Thu, 9 Jul 2026 04:50:55 +0000 Subject: [PATCH] =?UTF-8?q?ci:=20=D0=BE=D0=B1=D1=85=D0=BE=D0=B4=20=D0=B1?= =?UTF-8?q?=D0=B0=D0=B3=D0=B0=20host-=D1=80=D0=B5=D0=B6=D0=B8=D0=BC=D0=B0?= =?UTF-8?q?=20act=5Frunner=20=E2=80=94=20checkout=20=D0=BE=D0=B1=D1=8B?= =?UTF-8?q?=D1=87=D0=BD=D1=8B=D0=BC=20git=20(=D0=B1=D0=B5=D0=B7=20JS-?= =?UTF-8?q?=D1=8D=D0=BA=D1=88=D0=B5=D0=BD=D0=BE=D0=B2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/ci.yml | 69 +++++++++++++---------------------------- 1 file changed, 22 insertions(+), 47 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index cbd416e..cb2ce05 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -1,14 +1,15 @@ name: CI -# Активируется, когда на инфре B зарегистрирован self-hosted act_runner с меткой `f7-android` -# (JDK 21 + Android SDK 36 — как на билд-машине). Пока раннера нет — джобы ждут исполнителя. -# Регистрация раннера — инфра-шаг ячейки B (см. docs/CI.md). +# Self-hosted раннер на инфре B (host-исполнение, тёплый Gradle-кэш). +# ВАЖНО: без JS-экшенов (actions/checkout, upload-artifact и т.п.) — в host-режиме +# act_runner 0.2.13 криво резолвит путь к node-экшену (MODULE_NOT_FOUND, задвоенный +# hostexecutor/.cache/act). Поэтому checkout делаем обычным git. +# Release-сборка/публикация в Gitea Release — пока вручную (та же причина: JS-экшены); +# см. docs/CI.md. on: push: branches: [main] - tags: ['v*'] - pull_request: env: JAVA_HOME: /usr/lib/jvm/java-21-openjdk-amd64 @@ -17,48 +18,22 @@ env: jobs: verify: - # lint + unit-тесты + debug-сборка на каждый push в main и на PR + # detekt + unit-тесты + debug-сборка на каждый push в main 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-сборка (подписанная) + - name: Checkout (git, без JS-экшена) 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 + GITHUB_TOKEN: ${{ github.token }} + run: | + set -e + rm -rf src && mkdir src && cd src + git init -q + git remote add origin "https://x-access-token:${GITHUB_TOKEN}@git.f7cloud.ru/${GITHUB_REPOSITORY}.git" + git -c protocol.version=2 fetch -q --depth 1 origin "${GITHUB_SHA}" + git checkout -q FETCH_HEAD + - name: Статанализ (detekt + ktlint) + run: cd src && ./gradlew detekt --no-daemon + - name: Unit-тесты + run: cd src && ./gradlew testDebugUnitTest --no-daemon + - name: Debug-сборка + run: cd src && ./gradlew :app:assembleDebug --no-daemon