act_runner v0.2.11 + Node 20 + Docker + systemd, метки self-hosted/f7-android на хосте, тёплый кэш /root/.gradle. Зарегистрирован в scope репозитория (repo-токен; site-admin токен подхватывал чужую ячейку glb_adm — не годится).
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.jksF7_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-сборки делаются вручную на билд-машине тем же ключом.