Этап 1: CI (Gitea Actions) + GPL corresponding source (п.4c)
- .gitea/workflows/ci.yml: push/PR → testDebugUnitTest+lintRelease+assembleDebug; тег v* → подписанный assembleRelease + архив исходников в Gitea Release. Gitea 1.26.1 поддерживает Actions. Self-hosted раннер (метка f7-android), т.к. проект тяжёлый (WebRTC) и нужен тёплый Gradle-кэш. - scripts/package-source.sh: GPL corresponding source (§6) — архив всего дерева вкл. vendor talk-android (GPL), LICENSE, NOTICE. Проверен: 6.7 МБ, 2353 файла. Закрывает п.4c, работает и вручную до появления раннера. - docs/CI.md: пайплайн, регистрация раннера, secrets. НЕ активно до регистрации раннера на инфре B (нужен Gitea-админ для токена).
This commit is contained in:
+47
@@ -0,0 +1,47 @@
|
||||
# CI — Gitea Actions
|
||||
|
||||
Пайплайн: [`.gitea/workflows/ci.yml`](../.gitea/workflows/ci.yml). Gitea на git.f7cloud.ru — **1.26.1**
|
||||
(Actions поддерживаются).
|
||||
|
||||
## Что делает
|
||||
|
||||
| Триггер | Джоба | Действия |
|
||||
|---|---|---|
|
||||
| push в `main`, любой PR | `verify` | `testDebugUnitTest` + `:app:lintRelease` + `:app:assembleDebug` (+ артефакт debug-APK) |
|
||||
| тег `v*` | `release` | подписанный `assembleRelease` + архив исходников (GPL §6) → Gitea Release |
|
||||
|
||||
## Предпосылка: self-hosted раннер (инфра ячейки B)
|
||||
|
||||
Проект тяжёлый (vendor talk-android + WebRTC), поэтому раннер — **self-hosted** с тёплым
|
||||
Gradle-кэшем, а не контейнер (иначе WebRTC качается каждый прогон). Требования к машине раннера —
|
||||
как у билд-машины: **JDK 21** (`/usr/lib/jvm/java-21-openjdk-amd64`) + **Android SDK 36**
|
||||
(`/opt/android-sdk`, platform android-36, build-tools 36.0.0).
|
||||
|
||||
Регистрация (нужен registration-токен из Gitea → Settings → Actions → Runners, **права Gitea-админа**):
|
||||
```bash
|
||||
# на машине раннера (инфра B):
|
||||
act_runner register --instance https://git.f7cloud.ru --token <TOKEN> --labels f7-android
|
||||
act_runner daemon
|
||||
```
|
||||
Метка `f7-android` соответствует `runs-on: [self-hosted, f7-android]` в workflow.
|
||||
|
||||
## Secrets репозитория (Gitea → Settings → Actions → Secrets)
|
||||
|
||||
Для джобы `release`:
|
||||
- `F7_KEYSTORE_BASE64` — боевой keystore, `base64 -w0 release.jks`
|
||||
- `F7_KEYSTORE_PASSWORD`, `F7_KEY_ALIAS`, `F7_KEY_PASSWORD` — см. [RELEASE-SIGNING.md](RELEASE-SIGNING.md)
|
||||
|
||||
## GPL corresponding source
|
||||
|
||||
`scripts/package-source.sh` собирает архив всего исходника (вкл. vendor/talk-android GPL, LICENSE,
|
||||
NOTICE) — обязательство GPLv3 §6. Работает и вручную:
|
||||
```bash
|
||||
scripts/package-source.sh dist/ # → dist/f7cloud-mobile-v<ver>-<rev>-source.tar.gz
|
||||
```
|
||||
В CI прикладывается к каждому Gitea Release. До появления раннера — публиковать исходник
|
||||
вручную этим скриптом к каждой распространяемой сборке.
|
||||
|
||||
## Статус
|
||||
|
||||
Workflow и скрипт готовы и в репо. **Не активны, пока не зарегистрирован раннер** (инфра-шаг ячейки B,
|
||||
нужен Gitea-админ для токена). До активации: сборки — вручную на билд-машине, исходники — скриптом.
|
||||
Reference in New Issue
Block a user