Introduzione
L’automatizzazione del deployment delle applicazioni .NET MAUI tramite un sistema di Continuous Integration e Continuous Deployment (CI/CD) consente di velocizzare il processo di rilascio, ridurre gli errori manuali e garantire un flusso di sviluppo più efficiente. In questo articolo, vedremo come configurare una pipeline CI/CD utilizzando GitHub Actions e Azure DevOps per distribuire un’app .NET MAUI su diverse piattaforme.
Prerequisiti
Prima di iniziare, assicurati di avere:
- Un repository GitHub o Azure DevOps con il codice della tua app .NET MAUI.
- Un account su Azure DevOps o GitHub Actions.
- Una chiave di firma per la distribuzione su Android e/o Apple Developer Program per iOS.
- Installazione di .NET SDK, MAUI workloads e strumenti di build per Android/iOS/macOS/Windows.
Configurazione della Pipeline CI/CD con GitHub Actions
GitHub Actions permette di creare workflow per l’automatizzazione della build e della distribuzione.
1. Creare il file di workflow
All’interno del repository GitHub, crea una cartella .github/workflows/
e aggiungi un file YAML (es. maui-ci.yml
).
2. Definire la pipeline CI/CD per .NET MAUI
Ecco un esempio di workflow base per buildare e pubblicare un’app MAUI:
name: Build e Deploy .NET MAUI on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Setup .NET SDK uses: actions/setup-dotnet@v3 with: dotnet-version: '8.0' - name: Install MAUI Workload run: dotnet workload install maui - name: Restore dependencies run: dotnet restore - name: Build app run: dotnet build --configuration Release --no-restore - name: Publish Android APK run: dotnet publish -f:net8.0-android -c Release -o output/android - name: Publish Windows App run: dotnet publish -f:net8.0-windows -c Release -o output/windows - name: Upload APK Artifact uses: actions/upload-artifact@v3 with: name: android-apk path: output/android/*.apk - name: Upload Windows Artifact uses: actions/upload-artifact@v3 with: name: windows-msix path: output/windows/*.msix
3. Firma e distribuzione dell’APK Android
Se l’app deve essere distribuita su Google Play Store, bisogna firmare l’APK. Si può fare aggiungendo un passaggio alla pipeline per la firma con una chiave .keystore
.
- name: Sign APK run: | jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore ${{ secrets.KEYSTORE_FILE }} output/android/app-release.apk alias_name
Nota: Il file
.keystore
deve essere salvato nei secrets di GitHub Actions.
Configurazione CI/CD con Azure DevOps
Se usi Azure DevOps, puoi creare una pipeline YAML nel repository.
1. Creare un file azure-pipelines.yml
trigger: branches: include: - main pool: vmImage: 'windows-latest' steps: - task: UseDotNet@2 inputs: packageType: 'sdk' version: '8.0.x' installationPath: $(Agent.ToolsDirectory)/dotnet - script: dotnet workload install maui displayName: 'Install MAUI Workload' - script: dotnet restore displayName: 'Restore dependencies' - script: dotnet build --configuration Release --no-restore displayName: 'Build project' - script: dotnet publish -f:net8.0-android -c Release -o output/android displayName: 'Publish Android APK' - script: dotnet publish -f:net8.0-windows -c Release -o output/windows displayName: 'Publish Windows App' - task: PublishBuildArtifacts@1 inputs: pathToPublish: output/android artifactName: 'android-apk' - task: PublishBuildArtifacts@1 inputs: pathToPublish: output/windows artifactName: 'windows-msix'
Distribuzione su Store (Google Play e App Store)
Distribuzione su Google Play
Puoi usare GitHub Actions per caricare l’APK su Google Play tramite Google Play Developer API:
- name: Upload to Google Play uses: r0adkll/upload-google-play@v1 with: serviceAccountJson: ${{ secrets.GOOGLE_PLAY_CREDENTIALS }} packageName: com.example.app releaseFiles: output/android/*.apk track: production
Distribuzione su App Store (iOS/macOS)
Per distribuire su App Store:
- Firma il codice con Apple Developer Certificates.
- Usa fastlane o Xcode CLI per la pubblicazione.
Esempio con fastlane
:
- name: Upload to App Store run: fastlane pilot upload --app_identifier com.example.app --username apple@developer.com --ipa output/ios/app.ipa
Conclusione
L’uso di CI/CD in un progetto .NET MAUI semplifica il deployment su più piattaforme, riducendo errori manuali e migliorando l’efficienza. GitHub Actions e Azure DevOps offrono strumenti potenti per gestire la build, la firma e la distribuzione automatizzata delle app su Android, iOS, Windows e macOS.
Se stai pensando di sviluppare un’app, ma non sai come fare, affidati a professionisti che possano guidarti attraverso ogni fase del progetto.
Se hai domande o desideri una consulenza dedicata, contattaci!