75 lines
3.2 KiB
YAML
75 lines
3.2 KiB
YAML
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 dans /data/build..."
|
|
rm -rf /data/build
|
|
git config --global --add safe.directory "*"
|
|
git clone --depth 1 "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@git.kevlar.cloud/${{ github.repository }}.git" /data/build
|
|
|
|
- name: 🔨 Compilation de l'APK (Conteneur Flutter / Android SDK)
|
|
run: |
|
|
echo "🚀 Démarrage de la compilation Flutter dans Docker..."
|
|
# Utilisation du volume partagé /data du conteneur runner
|
|
docker run --rm \
|
|
--volumes-from gitea-act-runner \
|
|
-w /data/build \
|
|
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 /data/build/build/app/outputs/flutter-apk/app-release.apk"
|
|
|
|
- name: 📦 Publication de la Release sur Gitea & Upload de l'APK
|
|
run: |
|
|
which curl >/dev/null 2>&1 || apk add --no-cache curl
|
|
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="/data/build/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."
|