name: Deploy Flutter to Firebase iOS (Final & Safe) on: push: branches: release jobs: deploy-ios: runs-on: macos-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Nettoyage et Dépendances run: | flutter pub get cd ios && pod install --repo-update && cd .. - name: Préparer le Code Signing (Final) env: P12_BASE: ${{ secrets.IOS_P12_BASE64 }} P12_PASS: ${{ secrets.IOS_P12_PASSWORD }} PROV_BASE: ${{ secrets.IOS_PROVISION_BASE64 }} run: | # 1. Nettoyage complet security delete-keychain build.keychain || true # 2. Création du trousseau temporaire security create-keychain -p "" build.keychain security unlock-keychain -p "" build.keychain # 3. LIER LE TROUSSEAU (Indispensable pour Xcode 26.2) # On l'ajoute à la liste de recherche pour que Xcode le trouve security list-keychains -d user -s build.keychain $(security list-keychains -d user | xargs) # 4. Importation du certificat Apple Distribution echo "$P12_BASE" | base64 -D -o cert.p12 security import cert.p12 -k build.keychain -P "$P12_PASS" -T /usr/bin/codesign -T /usr/bin/productsign # 5. Autoriser la signature automatique security set-key-partition-list -S apple-tool:,apple: -s -k "" build.keychain # 6. Installation du Profil (be.devdayronvl.TravelMate) mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles echo "$PROV_BASE" | base64 -D -o ~/Library/MobileDevice/Provisioning\ Profiles/dist.mobileprovision # 7. DEBUG : Vérifier que Xcode "voit" bien une identité valide echo "Identités de signature détectées :" security find-identity -v -p codesigning build.keychain - name: Build IPA (Optimisé Xcode 26.2) run: | # Xcode 26.2 accélère cette étape grâce au nouveau cache flutter build ipa --release --export-method ad-hoc - name: Envoi Firebase via Fastlane env: FIREBASE_IOS_APP_ID: ${{ secrets.FIREBASE_IOS_APP_ID }} run: | gem install bundler -v 2.7.2 --no-document cd ios bundle _2.7.2_ config set path 'vendor/bundle' bundle _2.7.2_ install bundle _2.7.2_ exec fastlane run firebase_app_distribution \ app:"$FIREBASE_IOS_APP_ID" \ ipa_path:"../build/ios/ipa/*.ipa" \ service_credentials_file:"firebase_credentials.json" \ release_notes:"Build stable via Xcode 26.2" - name: Nettoyage Automatique if: always() # Se lance même si le build échoue run: | # On remet l'ordre des trousseaux à la normale pour ton Mac perso security list-keychains -d user -s login.keychain security delete-keychain build.keychain || true rm -f ios/firebase_credentials.json