Automatizzare la consegna di un'app Flutter significa eliminare la classe di errori più fastidiosa: quella umana. Keystore dimenticati sul portatile di un collega, build number duplicati, provisioning profile scaduti, versioni caricate sullo store con il flavor sbagliato.
In questo tutorial advanced costruiamo una pipeline CI/CD completa con GitHub Actions:
- job di quality gate (
flutter analyze,dart format, test unitari e widget) su ogni pull request; - firma Android con keystore iniettato dai GitHub Secrets in base64 e build di un
.aabcon obfuscation e symbol upload; - firma iOS con certificati e provisioning profile importati in un keychain temporaneo sul runner macOS;
- upload automatico su Google Play (traccia
internal) e su TestFlight tramite App Store Connect API key; - versionamento derivato dal tag Git e build number derivato da
github.run_number, per build sempre riproducibili e monotone.
Prerequisiti: un progetto Flutter 3.x funzionante, un account Google Play Console con l'app già creata (il primo upload va sempre fatto a mano), un account Apple Developer con app registrata su App Store Connect, e diritti di amministratore sul repository per creare Secrets ed Environments.
Alla fine avrai un flusso in cui git tag v1.4.0 && git push --tags produce una release firmata su entrambi gli store senza toccare un solo pulsante.