name: Build & Release Android APK on: push: tags: - 'v*' - 'V*' # Se déclenche quand vous poussez un tag comme v1.0.0, v1.0.1... workflow_dispatch: # Permet aussi de lancer la compilation manuellement depuis l'interface Gitea jobs: build-apk: # Utilise votre runner hôte avec Docker runs-on: docker steps: - name: 📥 Récupération du code run: | echo "📥 Clonage du code source..." git config --global --add safe.directory "$GITHUB_WORKSPACE" git clone --depth 1 "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@git.kevlar.cloud/${{ github.repository }}.git" . - name: 🔨 Compilation de l'APK (Conteneur Flutter / Android SDK) run: | echo "🚀 Démarrage de la compilation Flutter dans Docker..." # Utilisation du conteneur runner pour monter le volume du projet docker run --rm \ --volumes-from gitea-act-runner \ -w "$PWD" \ ghcr.io/cirruslabs/flutter:stable \ sh -c "git config --global --add safe.directory '*' && flutter pub get && flutter build apk --release" echo "✅ APK généré avec succès dans build/app/outputs/flutter-apk/app-release.apk" - name: 📦 Publication de la Release sur Gitea & Upload de l'APK run: | TAG_NAME="${{ github.ref_name }}" if [ -z "$TAG_NAME" ] || [ "$TAG_NAME" = "main" ]; then TAG_NAME="build-$(date +'%Y%m%d-%H%M%S')" fi APK_PATH="build/app/outputs/flutter-apk/app-release.apk" APK_NAME="bully-impact-${TAG_NAME}.apk" echo "🚀 Création de la release $TAG_NAME sur Gitea..." # 1. Création de la Release via l'API REST de Gitea RELEASE_RESPONSE=$(curl -s -X POST "https://git.kevlar.cloud/api/v1/repos/${{ github.repository }}/releases" \ -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ -H "Content-Type: application/json" \ -d "{ \"tag_name\": \"${TAG_NAME}\", \"name\": \"Version ${TAG_NAME}\", \"body\": \"Nouvelle version de l'application Bully Impact générée automatiquement par CI/CD.\", \"draft\": false, \"prerelease\": false }") RELEASE_ID=$(echo "$RELEASE_RESPONSE" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2) if [ -z "$RELEASE_ID" ]; then echo "❌ Erreur lors de la création de la release: $RELEASE_RESPONSE" exit 1 fi echo "📦 Upload du fichier APK (Release ID: $RELEASE_ID)..." # 2. Upload de l'APK en tant qu'asset téléchargeable curl -s -X POST "https://git.kevlar.cloud/api/v1/repos/${{ github.repository }}/releases/${RELEASE_ID}/assets?name=${APK_NAME}" \ -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ -H "Content-Type: application/vnd.android.package-archive" \ --data-binary @"$APK_PATH" echo "🎉 Release terminée avec succès ! APK téléchargeable sur Gitea."