gigafibre-fsm/apps/field-tech/CI-SETUP.md
louispaulb aa108ab13f feat(field-tech): app Capacitor native (geofence Transistorsoft + scan MLKit) + CI
App technicien : appairage 1x (QR), géorepérage natif en arrière-plan (app fermée)
-> checkpoints au hub /field/ts, scan série/MAC on-device MLKit. UI réutilisée depuis
le hub (/field). APK Android buildé (debug, 19 Mo, arm64-v8a + armeabi-v7a).

- apps/field-tech : Capacitor 6 + Vite ; src/main.js (appairage @capacitor/preferences
  + BackgroundGeolocation.addGeofences + redirection /field) ; projet android/ avec les
  4 correctifs Gradle commités (force work-runtime 2.9.1, minSdk 24, repos maven xms.g
  + Huawei, googlePlayServicesLocationVersion 21.0.1) ; abiFilters arm (APK 32->19 Mo).
- README : recette de build complète (toolchain M4, les 4 fixes, install/appairage) ;
  BUILD-ANDROID.md (Docker + Android Studio + release signée) ; CI-SETUP.md (runner Gitea).
- CI Gitea Actions (.gitea/workflows) : android (runner Linux HORS prod, cache Gradle/npm
  -> artefact APK) + ios (runner macOS, workflow_dispatch, en attente compte Apple).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 19:47:27 -04:00

2.3 KiB

CI build app technicien (Gitea Actions, git.targo.ca)

Usine de build : push → APK Android téléchargeable en artefact. iOS prévu (runner macOS + compte Apple). Workflows : .gitea/workflows/field-tech-android.yml + field-tech-ios.yml.

1. Activer Actions

  • Admin Gitea : Site Administration → Actions activé.
  • Dépôt louis/gigafibre-fsm : Settings → Actions → Enable.

2. Runner Linux (Android) — sur un hôte HORS prod

Le runner exécute les builds → ne pas le mettre sur erp (sinon on retombe sur l'impact prod qu'on évite avec la CI). Un laptop avec Docker, un mini-VM, ou tout hôte Docker convient. Pour des builds occasionnels, un laptop allumé à la demande suffit.

  1. Gitea : Settings → Actions → Runners → Create new Runner → copier le registration token.
  2. Sur l'hôte du runner :
docker run -d --restart=always --name targo-ci-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e GITEA_INSTANCE_URL=https://git.targo.ca \
  -e GITEA_RUNNER_REGISTRATION_TOKEN=<TOKEN> \
  -e GITEA_RUNNER_LABELS="ubuntu-latest:docker://catthehacker/ubuntu:act-22.04" \
  gitea/act_runner:latest
  1. Le runner apparaît dans Gitea → push sur apps/field-tech/** (ou « Run workflow ») → l'APK debug sort dans Artifacts de l'exécution.

3. iOS (plus tard — compte Apple en attente)

  • iOS ne build que sur macOS : enregistrer un Mac comme runner (act_runner natif, label macos, Xcode installé). Pas d'image Docker possible.
  • Quand le compte Apple Developer est prêt : ajouter en secrets dépôt (Settings → Actions → Secrets) le certificat de distribution + provisioning profile (base64) + mot de passe ; le workflow iOS fera xcodebuild -archive/-exportArchive signé → TestFlight.

4. Secrets (selon besoin)

Secret Pour
TRANSISTORSOFT_LICENSE build release (debug = mode dev, sans licence) → injecté en meta-data AndroidManifest
ANDROID_KEYSTORE (+ pass) signer l'APK release
APPLE_CERT / APPLE_PROFILE (+ pass) signature iOS (device/TestFlight)

Alternative immédiate (sans runner) — build local Docker

La même image existe en apps/field-tech/Dockerfile : docker build -t targo-android-build . && docker run --rm -v "$PWD":/app -v targo-gradle:/root/.gradle targo-android-build → APK. Voir BUILD-ANDROID.md.