Share via


Recapito continuo con GitHub Actions

È possibile usare un flusso di lavoro di GitHub Actions per definire un flusso di lavoro per compilare e distribuire automaticamente il codice nell'app per le funzioni in Funzioni di Azure.

Un file YAML (.yml) che definisce la configurazione del /.github/workflows/ flusso di lavoro viene mantenuto nel percorso nel repository. Questa definizione contiene le azioni e i parametri che costituiscono il flusso di lavoro, specifico del linguaggio di sviluppo delle funzioni. Un flusso di lavoro di GitHub Actions per Funzioni esegue le attività seguenti, indipendentemente dalla lingua:

  1. Configurare l'ambiente.
  2. Compilare il progetto di codice.
  3. Distribuire il pacchetto in un'app per le funzioni in Azure.

L'azione Funzioni di Azure gestisce la distribuzione in un'app per le funzioni esistente in Azure.

È possibile creare manualmente un file di configurazione del flusso di lavoro per la distribuzione. È anche possibile generare il file da un set di modelli specifici della lingua in uno dei modi seguenti:

  • Nel portale di Azure
  • Con l'interfaccia della riga di comando di Azure
  • Dal repository GitHub

Se non si vuole creare il file YAML a mano, selezionare un metodo diverso nella parte superiore dell'articolo.

Prerequisiti

  • Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.

  • Un account GitHub. Se non è disponibile, iscriversi per riceverne uno gratuito.

  • Un'app per le funzioni funzionante ospitata in Azure con codice sorgente in un repository GitHub.

  • Interfaccia della riga di comando di Azure, durante lo sviluppo in locale. È anche possibile usare l'interfaccia della riga di comando di Azure in Azure Cloud Shell.

Generare le credenziali per la distribuzione

Poiché GitHub Actions usa il profilo di pubblicazione per accedere all'app per le funzioni durante la distribuzione, è prima necessario ottenere il profilo di pubblicazione e archiviarlo in modo sicuro come segreto GitHub.

Importante

Il profilo di pubblicazione è una credenziale preziosa che consente l'accesso alle risorse di Azure. Assicurarsi di trasportarlo sempre e archiviarlo in modo sicuro. In GitHub il profilo di pubblicazione deve essere archiviato solo nei segreti GitHub.

Scaricare il profilo di pubblicazione

Per scaricare il profilo di pubblicazione dell'app per le funzioni:

  1. Selezionare la pagina Panoramica dell'app per le funzioni e quindi selezionare Recupera profilo di pubblicazione.

    Scarica profilo di pubblicazione

  2. Salvare e copiare il contenuto del file.

Aggiungere il segreto GitHub

  1. In GitHub, andare al proprio repository.

  2. Andare a Impostazioni.

  3. Selezionare Segreti e variabili > Azioni.

  4. Selezionare Nuovo segreto repository.

  5. Aggiungere un nuovo segreto con il nome AZURE_FUNCTIONAPP_PUBLISH_PROFILE e il valore impostato sul contenuto del file del profilo di pubblicazione.

  6. Selezionare Aggiungi segreto.

GitHub può ora eseguire l'autenticazione all'app per le funzioni in Azure.

Creare il flusso di lavoro da un modello

Il modo migliore per creare manualmente una configurazione del flusso di lavoro consiste nell'iniziare dal modello ufficialmente supportato.

  1. Scegliere Windows o Linux per assicurarsi di ottenere il modello per il sistema operativo corretto.

    Le distribuzioni in Windows usano runs-on: windows-latest.

  2. Copiare il modello specifico della lingua dal repository delle azioni Funzioni di Azure usando il collegamento seguente:

  3. Aggiornare il env.AZURE_FUNCTIONAPP_NAME parametro con il nome della risorsa dell'app per le funzioni in Azure. Facoltativamente, potrebbe essere necessario aggiornare il parametro che imposta la versione del linguaggio usata dall'app, ad esempio DOTNET_VERSION per C#.

  4. Aggiungere questo nuovo file YAML nel /.github/workflows/ percorso nel repository.

Creare la configurazione del flusso di lavoro nel portale

Quando si usa il portale per abilitare GitHub Actions, Funzioni crea un file del flusso di lavoro basato sullo stack di applicazioni ed esegue il commit nel repository GitHub nella directory corretta.

Il portale ottiene automaticamente il profilo di pubblicazione e lo aggiunge ai segreti GitHub per il repository.

Durante la creazione dell'app per le funzioni

È possibile iniziare rapidamente a usare GitHub Actions tramite la scheda Distribuzione quando si crea una funzione in portale di Azure. Per aggiungere un flusso di lavoro gitHub Actions quando si crea una nuova app per le funzioni:

  1. Nella portale di Azure selezionare Distribuzione nel flusso Crea app per le funzioni.

    Screenshot dell'opzione Di distribuzione nel menu Funzioni.

  2. Abilitare la distribuzione continua se si vuole che ogni aggiornamento del codice attivi un push di codice per portale di Azure.

  3. Immettere l'organizzazione, il repository e il ramo GitHub.

    Screenshot dei dettagli dell'account utente di GitHub.

  4. Completare la configurazione dell'app per le funzioni. Il repository GitHub include ora un nuovo file del flusso di lavoro in /.github/workflows/.

Per un'app per le funzioni esistente

Per aggiungere un flusso di lavoro di GitHub Actions a un'app per le funzioni esistente:

  1. Passare all'app per le funzioni nel portale di Azure e selezionare Centro distribuzione.

  2. Per Origine selezionare GitHub. Se non viene visualizzato il messaggio predefinito Compilazione con GitHub Actions, selezionare Cambia provider scegliere GitHub Actions e selezionare OK.

  3. Se l'accesso a GitHub non è già stato autorizzato, selezionare Autorizza. Specificare le credenziali di GitHub e selezionare Accedi. Per autorizzare un account GitHub diverso, selezionare Cambia account e accedere con un altro account.

  4. Selezionare l'organizzazione, il repository e il ramo di GitHub. Per eseguire la distribuzione con GitHub Actions, è necessario avere accesso in scrittura a questo repository.

  5. In Impostazioni di autenticazione scegliere se fare in modo che GitHub Actions esegua l'autenticazione con un'identitàassegnata dall'utente o usando le credenziali di autenticazione di base. Per l'autenticazione di base, vengono usate le credenziali correnti.

  6. Selezionare Anteprima file per visualizzare il file del flusso di lavoro che viene aggiunto al repository GitHub in github/workflows/.

  7. Selezionare Salva per aggiungere il file del flusso di lavoro al repository.

Aggiungere la configurazione del flusso di lavoro al repository

È possibile usare il az functionapp deployment github-actions add comando per generare un file di configurazione del flusso di lavoro dal modello corretto per l'app per le funzioni. Il nuovo file YAML viene quindi archiviato nel percorso corretto (/.github/workflows/) nel repository GitHub specificato, mentre il file del profilo di pubblicazione per l'app viene aggiunto ai segreti GitHub nello stesso repository.

  1. Eseguire questo az functionapp comando, sostituendo i valori githubUser/githubRepo, MyResourceGroupe MyFunctionapp:

    az functionapp deployment github-actions add --repo "githubUser/githubRepo" -g MyResourceGroup -n MyFunctionapp --login-with-github
    

    Questo comando usa un metodo interattivo per recuperare un token di accesso personale per l'account GitHub.

  2. Nella finestra del terminale dovrebbe essere visualizzato un messaggio simile al seguente:

    Please navigate to https://github.com/login/device and enter the user code XXXX-XXXX to activate and retrieve your GitHub personal access token.
    
  3. Copiare il codice univoco XXXX-XXXX , passare a https://github.com/login/devicee immettere il codice copiato. Dopo aver immesso il codice, verrà visualizzato un messaggio simile al seguente:

    Verified GitHub repo and branch
    Getting workflow template using runtime: java
    Filling workflow template with name: func-app-123, branch: main, version: 8, slot: production, build_path: .
    Adding publish profile to GitHub
    Fetching publish profile with secrets for the app 'func-app-123'
    Creating new workflow file: .github/workflows/master_func-app-123.yml
    
  4. Passare al repository GitHub e selezionare Azioni. Verificare che il flusso di lavoro sia stato eseguito.

Creare il file di configurazione del flusso di lavoro

È possibile creare il file di configurazione del flusso di lavoro di GitHub Actions dai modelli di Funzioni di Azure direttamente dal repository GitHub.

  1. In GitHub, andare al proprio repository.

  2. Selezionare Azioni e Nuovo flusso di lavoro.

  3. Cercare le funzioni.

    Screenshot della ricerca dei modelli di funzioni di GitHub Actions.

  4. Nei flussi di lavoro delle app per le funzioni visualizzate creati da Microsoft Azure individuare quello corrispondente al linguaggio di codice e selezionare Configura.

  5. Nel file YAML appena creato aggiornare il env.AZURE_FUNCTIONAPP_NAME parametro con il nome della risorsa dell'app per le funzioni in Azure. Facoltativamente, potrebbe essere necessario aggiornare il parametro che imposta la versione del linguaggio usata dall'app, ad esempio DOTNET_VERSION per C#.

  6. Verificare che il nuovo file del flusso di lavoro sia in fase di salvataggio /.github/workflows/ e selezionare Commit changes(Esegui il commit delle modifiche).

Aggiornare una configurazione del flusso di lavoro

Se per qualche motivo, è necessario aggiornare o modificare una configurazione del flusso di lavoro esistente, passare semplicemente al /.github/workflows/ percorso nel repository, aprire il file YAML specifico, apportare le modifiche necessarie e quindi eseguire il commit degli aggiornamenti nel repository.

Esempio: file di configurazione del flusso di lavoro

Nell'esempio di modello seguente viene usata la functions-action versione 1 di e un publish profile per l'autenticazione. Il modello dipende dal linguaggio scelto e dal sistema operativo in cui viene distribuita l'app per le funzioni:

Se l'app per le funzioni viene eseguita in Linux, selezionare Linux.

name: Deploy DotNet project to Azure Function App

on:
  [push]

env:
  AZURE_FUNCTIONAPP_NAME: 'your-app-name'   # set this to your function app name on Azure
  AZURE_FUNCTIONAPP_PACKAGE_PATH: '.'       # set this to the path to your function app project, defaults to the repository root
  DOTNET_VERSION: '6.0.x'                   # set this to the dotnet version to use (e.g. '2.1.x', '3.1.x', '5.0.x')

jobs:
  build-and-deploy:
    runs-on: windows-latest
    environment: dev
    steps:
    - name: 'Checkout GitHub Action'
      uses: actions/checkout@v3

    - name: Setup DotNet ${{ env.DOTNET_VERSION }} Environment
      uses: actions/setup-dotnet@v3
      with:
        dotnet-version: ${{ env.DOTNET_VERSION }}

    - name: 'Resolve Project Dependencies Using Dotnet'
      shell: pwsh
      run: |
        pushd './${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}'
        dotnet build --configuration Release --output ./output
        popd

    - name: 'Run Azure Functions Action'
      uses: Azure/functions-action@v1
      id: fa
      with:
        app-name: ${{ env.AZURE_FUNCTIONAPP_NAME }}
        package: '${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}/output'
        publish-profile: ${{ secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE }}

Funzioni di Azure'azione

L'azione Funzioni di Azure (Azure/azure-functions) definisce il modo in cui il codice viene pubblicato in un'app per le funzioni esistente in Azure o in uno slot specifico nell'app.

Parametri

I parametri seguenti vengono usati più comunemente con questa azione:

Parametro Spiegazione
app-name (Obbligatorio) Nome dell'app per le funzioni.
slot-name (Facoltativo) Nome di uno slot di distribuzione specifico in cui si vuole eseguire la distribuzione. Lo slot deve esistere già nell'app per le funzioni. Se non specificato, il codice viene distribuito nello slot attivo.
publish-profile (Facoltativo) Nome del segreto GitHub che contiene il profilo di pubblicazione.

Sono supportati anche i parametri seguenti, ma vengono usati solo in casi specifici:

Parametro Spiegazione
package (Facoltativo) Imposta un percorso secondario nel repository da cui pubblicare. Per impostazione predefinita, questo valore è impostato su ., il che significa che tutti i file e le cartelle nel repository GitHub vengono distribuiti.
respect-pom-xml (Facoltativo) Usato solo per le funzioni Java. Indica se è necessario che l'artefatto di distribuzione dell'app sia derivato dal file pom.xml. Quando si distribuiscono app per le funzioni Java, è necessario impostare questo parametro su true e su package.. Per impostazione predefinita, questo parametro è impostato su false, il che significa che il package parametro deve puntare alla posizione dell'artefatto dell'app, ad esempio ./target/azure-functions/
rispetto-funcignore (Facoltativo) Se GitHub Actions rispetta il file con estensione funcignore per escludere file e cartelle definiti. Impostare questo valore su true quando il repository ha un file con estensione funcignore e si vuole usarlo per escludere percorsi e file, ad esempio configurazioni dell'editor di testo, vscode/o un ambiente virtuale Python (con estensione venv/). L'impostazione predefinita è false.
scm-do-build-during-deployment (Facoltativo) Indica se il sito di distribuzione servizio app (Kudu) esegue operazioni di pre-distribuzione. Il sito di distribuzione per l'app per le funzioni è disponibile in https://<APP_NAME>.scm.azurewebsites.net/. Modificare questa impostazione su true quando è necessario controllare le distribuzioni in Kudu anziché risolvere le dipendenze nel flusso di lavoro di GitHub Actions. Il valore predefinito è false. Per altre informazioni, vedere l'impostazione SCM_DO_BUILD_DURING_DEPLOYMENT .
enable-oryx-build (Facoltativo) Se il sito di distribuzione Kudu risolve le dipendenze del progetto usando Oryx. Impostare su true quando si vuole usare Oryx per risolvere le dipendenze del progetto usando una compilazione remota anziché il flusso di lavoro di GitHub Actions. Quando true, è necessario impostare anche su truescm-do-build-during-deployment . Il valore predefinito è false.

Considerazioni

Quando si usa l'azione di Funzioni di Azure, tenere presenti le considerazioni seguenti:

  • Quando si usa GitHub Actions, il codice viene distribuito nell'app per le funzioni usando la distribuzione ZIP per Funzioni di Azure.

  • Le credenziali richieste da GitHub per la connessione ad Azure per la distribuzione vengono archiviate come segreti nel repository GitHub e accessibili nella distribuzione come secrets.<SECRET_NAME>.

  • Il modo più semplice per l'autenticazione di GitHub Actions con Funzioni di Azure per la distribuzione consiste nell'usare un profilo di pubblicazione. È anche possibile eseguire l'autenticazione usando un'entità servizio. Per altre informazioni, vedere questo repository GitHub Actions.

  • Le azioni per la configurazione dell'ambiente e l'esecuzione di una compilazione vengono generate dai modelli e sono specifiche della lingua.

  • I modelli usano env elementi per definire impostazioni univoce per la compilazione e la distribuzione.

Passaggi successivi