name: Build and Push Yavsc Apk on: push: branches: - main tags: - 'v*' workflow_dispatch: # softprops/action-gh-release a besoin de contents: write # pour publier une release + uploader un asset. permissions: contents: write jobs: apk-deploy: runs-on: ubuntu-latest steps: - name: Checkout du code uses: actions/checkout@v7 # 1. Votre étape de build actuelle (on nomme l'image "postit-android") # --target build-env : on ne veut que le stage de build (qui # contient les artefacts .apk). Sans --target, Docker ciblerait # le DERNIER stage du Dockerfile (blogs-runtime, qui est une # image ASP.NET runtime sans aucun APK à extraire). - name: Build de l'image Docker run: docker build --build-arg ANDROID_TARGET_RID=android-arm64 --target build-env -t postit-android . # 2. EXTRACTION : Créer un conteneur éphémère pour copier l'APK vers l'hôte GitHub - name: Extraire l'APK du conteneur Docker run: | docker create --name extractor postit-android docker cp extractor:/src/src/PostIt/PostIt.Android/bin/Release/net10.0-android/android-arm64/com.CompanyName.PostIt-Signed.apk ./PostIt.Android.apk docker rm extractor - name: Téléverser l'APK en tant qu'Artéfact GitHub uses: actions/upload-artifact@v7 with: name: application-apk-release path: ./PostIt.Android.apk retention-days: 7 publish-release: # Uniquement déclenché par un tag v*. Le job apk-deploy tourne en # parallèle, on partage l'artefact entre jobs. if: startsWith(github.ref, 'refs/tags/v') needs: apk-deploy runs-on: ubuntu-latest steps: - name: Récupérer l'APK depuis l'artefact uses: actions/download-artifact@v7 with: name: application-apk-release path: ./ - name: Publier la release GitHub et uploader l'APK uses: softprops/action-gh-release@v2 with: # Le nom de fichier final dans la release. C'est ce qui # apparaîtra dans l'asset et donc dans le permalink : # https://github.com///releases/latest/download/PostIt.Android.apk files: ./PostIt.Android.apk # generate_release_notes: true -> évite d'avoir à maintenir # le corps de release à la main. Décommente si tu veux. # generate_release_notes: true