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!

Questo articolo non è stato generato usando l'intelligenza artificiale

I nostri contenuti sono tutti originali, pensati e scritti da essere umani professionisti tecnici con esperienza nel proprio settore.

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