Files
f7cloud_mobile/docs/CI.md
T
b-dev-mobile d047dea210 docs/CI: раннер развёрнут на инфре B (repo-scope, host-исполнение)
act_runner v0.2.11 + Node 20 + Docker + systemd, метки self-hosted/f7-android
на хосте, тёплый кэш /root/.gradle. Зарегистрирован в scope репозитория
(repo-токен; site-admin токен подхватывал чужую ячейку glb_adm — не годится).
2026-07-09 03:20:32 +00:00

3.6 KiB

CI — Gitea Actions

Пайплайн: .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).

Регистрация — repo-токен из Gitea → репозиторий root/f7cloud_mobile → Settings → Actions → Runners → Create new Runner (НЕ site-admin токен — тот регистрирует раннер общеинстансно и он подхватывает джобы чужих ячеек; проверено — брал glb_adm/f7_talk). Метки self-hosted+f7-android соответствуют runs-on: [self-hosted, f7-android].

Развёрнуто на инфре B (2026-07-09): act_runner v0.2.11 + Node 20 (/opt/nodejs) + Docker (docker.io, нужен act_runner для старта, но джобы идут на хосте — метки :host, тёплый кэш /root/.gradle). Конфиг /opt/act_runner/config.yaml (labels self-hosted:host,f7-android:host, container.docker_host: "-"). systemd-сервис act_runner.service (enabled, Restart=always, env JAVA_HOME/ANDROID_HOME/PATH+node). Регистрация — repo-scope (только f7cloud_mobile).

systemctl status act_runner        # состояние
journalctl -u act_runner -f        # логи

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

GPL corresponding source

scripts/package-source.sh собирает архив всего исходника (вкл. vendor/talk-android GPL, LICENSE, NOTICE) — обязательство GPLv3 §6. Работает и вручную:

scripts/package-source.sh dist/     # → dist/f7cloud-mobile-v<ver>-<rev>-source.tar.gz

В CI прикладывается к каждому Gitea Release. До появления раннера — публиковать исходник вручную этим скриптом к каждой распространяемой сборке.

Статус

Активно (2026-07-09): self-hosted раннер f7-b-android зарегистрирован и запущен на инфре B (scope — репозиторий, host-исполнение). Workflow срабатывает на push/PR (lint+тесты+assembleDebug). Осталось для джобы release по тегу: завести Secrets репозитория (keystore base64 + пароли) — пока release-сборки делаются вручную на билд-машине тем же ключом.