Eseguire la distribuzione nel servizio app usando GitHub Actions

Introduzione a GitHub Actions per automatizzare il flusso di lavoro e distribuirlo nel servizio app Azure da GitHub.

Prerequisiti

Configurare la distribuzione di GitHub Actions durante la creazione dell'app

La distribuzione di GitHub Actions è integrata nella creazione guidata di app predefinita. È sufficiente impostare Distribuzione continua su Abilita nella scheda Distribuzione e configurare l'organizzazione, il repository e il ramo desiderati.

A screenshot showing how to enable GitHub Actions deployment in the App Service create wizard.

Quando si abilita la distribuzione continua, la creazione guidata dell'app seleziona automaticamente il metodo di autenticazione in base alla selezione dell'autenticazione di base e configura l'app e il repository GitHub di conseguenza:

Selezione dell'autenticazione di base Metodo di autenticazione
Disabilita Identità assegnata dall'utente (Connessione OpenID)
Abilitazione Autenticazione di base

Nota

Se viene visualizzato un errore durante la creazione dell'app che informa che l'account Azure non dispone di determinate autorizzazioni, potrebbe non avere le autorizzazioni necessarie per creare e configurare l'identità assegnata dall'utente. Per un'alternativa, vedere Configurare la distribuzione di GitHub Actions dal Centro distribuzione.

Configurare la distribuzione di GitHub Actions dal Centro distribuzione

Per un'app esistente, è possibile iniziare rapidamente a usare GitHub Actions usando servizio app Deployment Center. Questo metodo turn-key genera automaticamente un file del flusso di lavoro di GitHub Actions basato sullo stack di applicazioni ed esegue il commit nel repository GitHub.

Il Centro distribuzione consente anche di configurare facilmente l'autenticazione OpenID più sicura Connessione con l'opzione di identità assegnata dall'utente.

Se l'account Azure dispone delle autorizzazioni necessarie, è possibile selezionare per creare un'identità assegnata dall'utente. In caso contrario, è possibile selezionare un'identità gestita assegnata dall'utente esistente nell'elenco a discesa Identità . È possibile collaborare con l'amministratore di Azure per creare un'identità gestita assegnata dall'utente con il ruolo Collaboratore sito Web.

Per altre informazioni, vedere Distribuzione continua nel servizio app Azure.

Configurare manualmente un flusso di lavoro di GitHub Actions

È anche possibile distribuire un flusso di lavoro senza usare il Centro distribuzione.

  1. Generare le credenziali di distribuzione
  2. Configurare il segreto GitHub
  3. Aggiungere il file del flusso di lavoro al repository GitHub

1. Generare le credenziali di distribuzione

Il modo consigliato per eseguire l'autenticazione con i servizi di app Azure per GitHub Actions è con un'identità gestita definita dall'utente e il modo più semplice per eseguire questa operazione consiste nella configurazione della distribuzione di GitHub Actions direttamente nel portale e nella selezione dell'identità gestita assegnata dall'utente.

Nota

L'autenticazione con un'identità gestita assegnata dall'utente è attualmente in anteprima.

In alternativa, è possibile eseguire l'autenticazione con un'entità servizio, un Connessione OpenID o un profilo di pubblicazione.

Nota

Il profilo di pubblicazione richiede l'abilitazione dell'autenticazione di base.

Un profilo di pubblicazione è una credenziale a livello di app. Configurare il profilo di pubblicazione come segreto GitHub.

  1. Passare al servizio app nel portale di Azure.

  2. Nella pagina Panoramica selezionare Recupera profilo di pubblicazione.

  3. Salvare il file scaricato. Si userà il contenuto del file per creare un segreto GitHub.

Nota

A partire da ottobre 2020, le app Web Linux devono avere l'impostazione dell'app impostata WEBSITE_WEBDEPLOY_USE_SCM su trueprima di scaricare il profilo di pubblicazione. Questo requisito verrà rimosso in futuro.

2. Configurare il segreto GitHub

In GitHub esplorare il repository. Selezionare Impostazioni > Segreti di sicurezza > e variabili > Azioni > Nuovo segreto del repository.

Per usare le credenziali a livello di app, incollare il contenuto del file del profilo di pubblicazione scaricato nel campo valore del segreto. Assegnare al segreto AZURE_WEBAPP_PUBLISH_PROFILEil nome .

Quando si configura il file del flusso di lavoro GitHub in un secondo momento, usare AZURE_WEBAPP_PUBLISH_PROFILE nell'azione deploy Azure Web App (Distribuisci app Web di Azure). Ad esempio:

- uses: azure/webapps-deploy@v2
  with:
    publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}

3. Aggiungere il file del flusso di lavoro al repository GitHub

Un flusso di lavoro viene definito da un file YAML (.yml) nel /.github/workflows/ percorso nel repository GitHub. Questa definizione contiene i vari passaggi e i parametri che costituiscono il flusso di lavoro.

Come minimo, il file del flusso di lavoro avrà i passaggi distinti seguenti:

  1. Eseguire l'autenticazione con servizio app usando il segreto GitHub creato.
  2. Compilare l'app Web.
  3. Distribuire l'app Web.

Per distribuire il codice in un'app servizio app, usare l'azione azure/webapps-deploy@v3. L'azione richiede il nome dell'app Web in app-name e, a seconda dello stack di linguaggio, il percorso di un *.zip, *.war, *.jar o cartella da distribuire in package. Per un elenco completo dei possibili input per l'azione azure/webapps-deploy@v3 , vedere la definizione di action.yml .

Negli esempi seguenti viene mostrata la parte del flusso di lavoro che compila l'app Web, in lingue supportate diverse.

L'input publish-profile deve fare riferimento al AZURE_WEBAPP_PUBLISH_PROFILE segreto GitHub creato in precedenza.

name: .NET Core CI

on: [push]

env:
  AZURE_WEBAPP_NAME: my-app-name    # set this to your application's name
  AZURE_WEBAPP_PACKAGE_PATH: '.'      # set this to the path to your web app project, defaults to the repository root
  DOTNET_VERSION: '6.0.x'           # set this to the dot net version to use

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      # Checkout the repo
      - uses: actions/checkout@main
      
      # Setup .NET Core SDK
      - name: Setup .NET Core
        uses: actions/setup-dotnet@v3
        with:
          dotnet-version: ${{ env.DOTNET_VERSION }} 
      
      # Run dotnet build and publish
      - name: dotnet build and publish
        run: |
          dotnet restore
          dotnet build --configuration Release
          dotnet publish -c Release --property:PublishDir='${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp' 
          
      # Deploy to Azure Web apps
      - name: 'Run Azure webapp deploy action using publish profile credentials'
        uses: azure/webapps-deploy@v3
        with: 
          app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
          publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE  }} # Define secret variable in repository settings as per action documentation
          package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'

Passaggi successivi

Vedere i riferimenti in Azure GitHub Actions e nei flussi di lavoro: