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
.keystoredeve 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!