7.5 KiB
7.5 KiB
Guide : Déploiement Flutter iOS via Gitea → GitHub → Codemagic → TestFlight
Prérequis obligatoires
- Compte Apple Developer actif (99$/an)
- App déjà créée sur App Store Connect
- Projet Flutter fonctionnel dans Gitea
- Compte GitHub
- Certificats iOS et profils de provisioning
Étape 1 : Configuration GitHub
1.1 Créer le dépôt GitHub
# Sur GitHub, créer un nouveau repository (privé recommandé)
# Nom : même nom que votre projet Gitea
1.2 Configurer les remotes Git localement
# Dans votre projet Flutter local
cd /home/pierre/dev/votre-projet-flutter
# Ajouter GitHub comme remote supplémentaire
git remote add github https://github.com/votre-username/votre-projet.git
# Vérifier les remotes
git remote -v
# origin https://votre-gitea.com/user/projet.git (fetch)
# origin https://votre-gitea.com/user/projet.git (push)
# github https://github.com/user/projet.git (fetch)
# github https://github.com/user/projet.git (push)
1.3 Push initial vers GitHub
# Push toutes les branches vers GitHub
git push github --all
git push github --tags
Étape 2 : Automatisation Gitea → GitHub
2.1 Script de synchronisation
Créer un script sync-github.sh dans votre projet :
#!/bin/bash
# sync-github.sh
echo "🔄 Synchronisation vers GitHub..."
# Push vers Gitea (origine)
git push origin
# Push vers GitHub (miroir)
git push github
echo "✅ Synchronisation terminée"
# Rendre le script exécutable
chmod +x sync-github.sh
# Utilisation
./sync-github.sh
2.2 Hook Git automatique (optionnel)
# Dans .git/hooks/post-commit
#!/bin/bash
git push github
Étape 3 : Configuration Apple Developer
3.1 Récupérer les certificats
- Apple Developer → Certificates
- Télécharger le Distribution Certificate
- Télécharger le Provisioning Profile (App Store)
3.2 Convertir en format P12
# Si vous avez le certificat .cer
# L'ouvrir dans Keychain Access (macOS) ou utiliser OpenSSL
# Exporter au format .p12 avec mot de passe
3.3 Informations nécessaires
Noter :
- Team ID (dans Apple Developer Account)
- Bundle ID (com.votredomaine.votreapp)
- Mot de passe du certificat P12
Étape 4 : Configuration Codemagic
4.1 Inscription et connexion
- Aller sur codemagic.io
- S'inscrire avec GitHub
- Autoriser l'accès à vos dépôts
4.2 Ajouter le projet
- Add application from repository
- Sélectionner votre dépôt GitHub
- Flutter App comme type de projet
4.3 Configuration de base
# codemagic.yaml à créer dans la racine du projet
workflows:
ios-workflow:
name: iOS Workflow
instance_type: mac_mini_m1
max_build_duration: 120
environment:
flutter: stable
groups:
- app_store_credentials
vars:
APP_STORE_APPLE_ID: votre-apple-id@example.com
BUNDLE_ID: com.votredomaine.votreapp
scripts:
- name: Set up code signing settings on Xcode project
script: |
xcode-project use-profiles
- name: Get Flutter packages
script: |
flutter packages pub get
- name: Flutter analyze
script: |
flutter analyze
- name: Flutter unit tests
script: |
flutter test
- name: Install pods
script: |
find . -name "Podfile" -execdir pod install \;
- name: Flutter build ipa
script: |
flutter build ipa --release \
--build-name=1.0.$BUILD_NUMBER \
--export-options-plist=/Users/builder/export_options.plist
artifacts:
- build/ios/ipa/*.ipa
- /tmp/xcodebuild_logs/*.log
- flutter_drive.log
publishing:
app_store_connect:
auth: integration
submit_to_testflight: true
beta_groups:
- App Store Connect Users
4.4 Upload des certificats
- App settings → Environment variables
- Créer un groupe app_store_credentials
- Upload :
- APP_STORE_CONNECT_ISSUER_ID
- APP_STORE_CONNECT_KEY_IDENTIFIER
- APP_STORE_CONNECT_PRIVATE_KEY
- CERTIFICATE_PRIVATE_KEY (contenu du .p12 en base64)
- CERTIFICATE_PASSWORD
4.5 Configuration App Store Connect API
- App Store Connect → Users and Access → Integrations
- Générer une App Store Connect API Key
- Télécharger le fichier .p8
- Noter l'Issuer ID et Key ID
Étape 5 : Configuration iOS spécifique
5.1 Vérifier ios/Runner.xcodeproj
<!-- ios/Runner/Info.plist -->
<key>CFBundleIdentifier</key>
<string>com.votredomaine.votreapp</string>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>
5.2 Signing Configuration
# ios/Runner.xcodeproj/project.pbxproj
# Vérifier que le PRODUCT_BUNDLE_IDENTIFIER correspond
PRODUCT_BUNDLE_IDENTIFIER = com.votredomaine.votreapp;
Étape 6 : Premier build TestFlight
6.1 Préparer le build
# Dans votre projet Flutter
# Incrémenter la version dans pubspec.yaml
version: 1.0.1+2
# Commit et push
git add .
git commit -m "feat: préparation build TestFlight v1.0.1"
./sync-github.sh
6.2 Lancer le build sur Codemagic
- Codemagic Dashboard → votre projet
- Start new build
- Sélectionner la branche
main - iOS Workflow
- Start build
6.3 Suivre le build
- Durée estimée : 15-25 minutes
- Vérifier les logs en cas d'erreur
- L'IPA sera automatiquement envoyé à TestFlight
Étape 7 : Validation TestFlight
7.1 Dans App Store Connect
- TestFlight → votre app
- Vérifier le nouveau build
- Ajouter des Release Notes
- Submit for Review (si nécessaire)
7.2 Inviter des testeurs
- TestFlight → Internal Testing
- Ajouter des testeurs internes
- Ou créer des groupes de External Testing
Script complet d'automatisation
#!/bin/bash
# deploy-ios.sh
echo "🚀 Déploiement iOS automatisé"
# Vérifications préalables
if [ -z "$1" ]; then
echo "❌ Version manquante. Usage: ./deploy-ios.sh 1.0.1"
exit 1
fi
VERSION=$1
BUILD_NUMBER=$(git rev-list --count HEAD)
echo "📝 Version: $VERSION+$BUILD_NUMBER"
# Mise à jour de pubspec.yaml
sed -i "s/version: .*/version: $VERSION+$BUILD_NUMBER/" pubspec.yaml
# Tests locaux
echo "🧪 Tests Flutter..."
flutter test
if [ $? -ne 0 ]; then
echo "❌ Tests échoués"
exit 1
fi
# Commit et push
git add .
git commit -m "release: v$VERSION build $BUILD_NUMBER"
./sync-github.sh
echo "✅ Code pushé vers GitHub"
echo "🔗 Allez sur Codemagic pour lancer le build iOS"
echo "📱 TestFlight sera mis à jour automatiquement"
Utilisation quotidienne
# Développement normal
git add .
git commit -m "feat: nouvelle fonctionnalité"
./sync-github.sh
# Déploiement TestFlight
./deploy-ios.sh 1.0.2
Dépannage courant
Erreur de certificat
- Vérifier que le Bundle ID correspond
- Régénérer le Provisioning Profile
- Vérifier la date d'expiration
Build qui échoue
- Vérifier les logs Codemagic
- Tester
flutter build ioslocalement - Vérifier les variables d'environnement
TestFlight ne reçoit pas le build
- Vérifier la configuration App Store Connect API
- Contrôler les permissions du certificat
Temps estimé de configuration : 2-3 heures Coût : Gratuit (500 min/mois Codemagic) Prochaines publications : ~10 minutes par build