Automatizzare il Deployment di App .NET MAUI con CI/CD

.NET MAUI CI/CD

INDICE

Cerca nel sito

Cerca inserendo le parole chiave di tuo interesse. Puoi cercare tra centinaia di articoli e decine di pagine informative sul mondo web e blockchain.

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:

  1. Firma il codice con Apple Developer Certificates.
  2. 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!

Servizi di sviluppo IT che forniamo sia ai clienti finali, sia alle altre aziende di sviluppo in subappalto in white label