feat: Migrate Android deployment workflow to macOS runner, simplifying setup steps and updating Fastlane descriptions.
Some checks failed
Deploy Flutter to Firebase (Mac) / deploy-android (push) Failing after 22s

This commit is contained in:
Van Leemput Dayron
2025-12-13 12:25:39 +01:00
parent c63124b16b
commit 088f4a2833
2 changed files with 20 additions and 41 deletions

View File

@@ -1,55 +1,40 @@
name: Deploy Flutter to Firebase name: Deploy Flutter to Firebase (Mac)
on: on:
push: push:
branches: release # Vous avez changé la branche ici, c'est noté branches: release
jobs: jobs:
deploy-android: deploy-android:
runs-on: ubuntu-latest # C'est ici que la magie opère : on cible VOTRE Mac
runs-on: macos-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v3 uses: actions/checkout@v3
- name: Setup Java # Pas besoin d'installer Java, Flutter ou Android SDK : ils sont déjà sur votre Mac !
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'
- name: Setup Android SDK - name: Vérifier l'installation
uses: android-actions/setup-android@v3 run: flutter doctor -v
- name: Setup Flutter - name: Installer les dépendances
uses: subosito/flutter-action@v2 run: flutter pub get
with:
channel: 'stable'
cache: false
- name: Accept Android Licenses
run: yes | flutter doctor --android-licenses || true
- name: Setup Ruby (pour Fastlane)
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3'
bundler-cache: true
- name: Créer le fichier .env - name: Créer le fichier .env
run: echo "${{ secrets.ENV_FILE }}" > .env run: echo "${{ secrets.ENV_FILE }}" > .env
- name: Créer le fichier Auth Google - name: Créer les identifiants Firebase
run: echo "${{ secrets.FIREBASE_CREDENTIALS }}" > ./android/firebase_credentials.json run: echo "${{ secrets.FIREBASE_CREDENTIALS }}" > ./android/firebase_credentials.json
- name: Créer key.properties - name: Créer key.properties
run: echo "${{ secrets.ANDROID_KEY_PROPERTIES }}" > ./android/key.properties run: echo "${{ secrets.ANDROID_KEY_PROPERTIES }}" > ./android/key.properties
- name: Lancer Fastlane Android - name: Lancer Fastlane
working-directory: ./android working-directory: ./android
env: env:
ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
FIREBASE_ANDROID_APP_ID: ${{ secrets.FIREBASE_ANDROID_APP_ID }} FIREBASE_ANDROID_APP_ID: ${{ secrets.FIREBASE_ANDROID_APP_ID }}
# --- C'EST ICI LA CORRECTION CRITIQUE POUR LA MÉMOIRE --- # Plus besoin de limiter la RAM, votre Mac est puissant !
GRADLE_OPTS: "-Dorg.gradle.daemon=false -Dorg.gradle.jvmargs=-Xmx3072m"
run: | run: |
bundle install bundle install
bundle exec fastlane deploy_firebase bundle exec fastlane deploy_firebase

View File

@@ -1,35 +1,29 @@
default_platform(:android) default_platform(:android)
platform :android do platform :android do
desc "Déploiement AAB vers Firebase" desc "Deploy to Firebase from Mac"
lane :deploy_firebase do lane :deploy_firebase do
# --- DÉBUT DU BLOC CRITIQUE --- # 1. Création du Keystore depuis le secret Gitea
# C'est ici qu'on crée le fichier keystore physiquement sur le serveur
# avant que Gradle ne le cherche.
if ENV['ANDROID_KEYSTORE_BASE64'] if ENV['ANDROID_KEYSTORE_BASE64']
# On décode le secret Gitea et on l'écrit dans un fichier .jks
File.open("upload-keystore.jks", "wb") do |f| File.open("upload-keystore.jks", "wb") do |f|
f.write(Base64.decode64(ENV['ANDROID_KEYSTORE_BASE64'])) f.write(Base64.decode64(ENV['ANDROID_KEYSTORE_BASE64']))
end end
UI.message("✅ Fichier upload-keystore.jks créé avec succès !")
else else
UI.user_error!("❌ ERREUR : Le secret ANDROID_KEYSTORE_BASE64 est vide !") UI.error("Secret Keystore manquant !")
end end
# --- FIN DU BLOC CRITIQUE ---
# 2. Construire l'App Bundle (.aab) # 2. Build de l'App Bundle (AAB)
# Gradle va maintenant trouver le fichier créé juste au-dessus # Votre Mac va compiler ça très vite 🚀
sh("flutter build appbundle --release") sh("flutter build appbundle --release")
# 3. Envoyer vers Firebase # 3. Envoi vers Firebase App Distribution
firebase_app_distribution( firebase_app_distribution(
app: ENV["FIREBASE_ANDROID_APP_ID"], app: ENV["FIREBASE_ANDROID_APP_ID"],
service_credentials_file: "firebase_credentials.json", service_credentials_file: "firebase_credentials.json",
groups: "testers", groups: "testers",
# On pointe bien vers le fichier .aab généré
android_artifact_path: "../build/app/outputs/bundle/release/app-release.aab", android_artifact_path: "../build/app/outputs/bundle/release/app-release.aab",
release_notes: "Version AAB via Gitea. Commit: #{ENV['GITHUB_SHA']}" release_notes: "Build depuis Mac M1/M2. Commit: #{ENV['GITHUB_SHA']}"
) )
end end
end end