Configurare la distribuzione DevOps per i flussi di lavoro delle app per la logica Standard in App per la logica di Azure a tenant singolo
Si applica a: App per la logica di Azure (standard)
Questo articolo illustra come distribuire un progetto di app per la logica Standard in App per la logica di Azure a tenant singolo da Visual Studio Code all'infrastruttura usando strumenti e processi DevOps. In base al fatto che si preferisca GitHub o Azure DevOps per la distribuzione, scegliere il percorso e gli strumenti più adatti per lo scenario. È possibile usare gli esempi inclusi che contengono progetti di app per la logica di esempio e esempi per la distribuzione di Azure usando GitHub o Azure DevOps. Per altre informazioni su DevOps per tenant singolo, vedere Panoramica della distribuzione di DevOps per i App per la logica di Azure a tenant singolo.
Prerequisiti
Un account Azure con una sottoscrizione attiva. Se non hai una sottoscrizione di Azure, crea un account gratuito.
Un progetto di app per la logica Standard creato con Visual Studio Code e l'estensione App per la logica di Azure (Standard).
Se non è già stato configurato il progetto o l'infrastruttura dell'app per la logica, è possibile usare i progetti di esempio inclusi per distribuire un'app e un'infrastruttura di esempio, in base alle opzioni di origine e distribuzione che si preferisce usare. Per altre informazioni su questi progetti di esempio e sulle risorse incluse per eseguire l'app per la logica di esempio, vedere Distribuire l'infrastruttura.
Se si vuole eseguire la distribuzione in Azure, è necessaria una risorsa dell'app per la logica (Standard) esistente creata in Azure. Per creare rapidamente una risorsa di app per la logica vuota, vedere Creare flussi di lavoro di app per la logica basati su tenant singolo - Portale.
Distribuire le risorse dell'infrastruttura
Se non è già stato configurato un progetto o un'infrastruttura di app per la logica, è possibile usare i progetti di esempio seguenti per distribuire un'app e un'infrastruttura di esempio, in base alle opzioni di origine e distribuzione che si preferisce usare:
Esempio di GitHub per App per la logica di Azure a tenant singolo
Questo esempio include un progetto di app per la logica di esempio per App per la logica di Azure a tenant singolo e esempi per la distribuzione di Azure e GitHub Actions.
Esempio di Azure DevOps per App per la logica di Azure a tenant singolo
Questo esempio include un progetto di app per la logica di esempio per App per la logica di Azure a tenant singolo e esempi per la distribuzione di Azure e Azure Pipelines.
Entrambi gli esempi includono le risorse seguenti usate da un'app per la logica per l'esecuzione.
Nome risorsa | Obbligatorio | Descrizione |
---|---|---|
App per la logica (Standard) | Sì | Questa risorsa di Azure contiene i flussi di lavoro eseguiti in App per la logica di Azure a tenant singolo. |
Funzioni Premium o servizio app piano di hosting | Sì | Questa risorsa di Azure specifica le risorse di hosting da usare per l'esecuzione dell'app per la logica, ad esempio calcolo, elaborazione, archiviazione, rete e così via. Importante: nell'esperienza corrente, la risorsa App per la logica (Standard) richiede il piano di hosting Workflow Standard, basato sul piano di hosting Functions Premium. |
Account di archiviazione di Azure | Sì, sia per i flussi di lavoro con stato che per i flussi di lavoro senza stato | Questa risorsa di Azure archivia i metadati, le chiavi per il controllo di accesso, lo stato, gli input, gli output, la cronologia di esecuzione e altre informazioni sui flussi di lavoro. |
Application Insights | Facoltativo | Questa risorsa di Azure offre funzionalità di monitoraggio per i flussi di lavoro. |
Connessioni API | Facoltativo, se non esiste | Queste risorse di Azure definiscono tutte le connessioni API gestite usate dai flussi di lavoro per eseguire operazioni del connettore gestito, ad esempio Office 365, SharePoint e così via. Importante: nel progetto dell'app per la logica il file connections.json contiene metadati, endpoint e chiavi per qualsiasi connessione API gestita e funzioni di Azure usate dai flussi di lavoro. Per usare connessioni e funzioni diverse in ogni ambiente, assicurarsi di parametrizzare il file connections.json e aggiornare gli endpoint. Per altre informazioni, vedere Risorse di connessione API e criteri di accesso. |
Modello di Azure Resource Manager (modello di ARM) | Facoltativo | Questa risorsa di Azure definisce una distribuzione dell'infrastruttura di base che è possibile riutilizzare o esportare. |
Risorse di connessione API e criteri di accesso
Nei App per la logica di Azure a tenant singolo ogni risorsa di connessione API o gestita nei flussi di lavoro richiede criteri di accesso associati. Questo criterio richiede l'identità dell'app per la logica per fornire le autorizzazioni corrette per l'accesso all'infrastruttura del connettore gestito. I progetti di esempio inclusi includono un modello di Resource Manager che include tutte le risorse dell'infrastruttura necessarie, inclusi questi criteri di accesso.
Il diagramma seguente illustra le dipendenze tra il progetto dell'app per la logica e le risorse dell'infrastruttura:
Distribuire le risorse dell'app per la logica (distribuzione zip)
Dopo aver eseguito il push del progetto dell'app per la logica nel repository di origine, è possibile configurare pipeline di compilazione e rilascio all'interno o all'esterno di Azure che distribuiscono app per la logica nell'infrastruttura.
Compilare il progetto
Per configurare una pipeline di compilazione in base al tipo di progetto dell'app per la logica, completare le azioni corrispondenti nella tabella seguente:
Tipo progetto | Descrizione e passaggi |
---|---|
Basato su Nuget | La struttura del progetto basata su NuGet si basa su .NET Framework. Per compilare questi progetti, assicurarsi di seguire i passaggi di compilazione per .NET Standard. Per altre informazioni, vedere la documentazione relativa alla creazione di un pacchetto NuGet con MSBuild. |
Basato su bundle | Il progetto basato su bundle di estensione non è specifico della lingua e non richiede alcuna procedura di compilazione specifica del linguaggio. È possibile usare qualsiasi metodo per comprimere i file di progetto. Importante: assicurarsi che il file .zip contenga gli artefatti di compilazione effettivi, incluse tutte le cartelle del flusso di lavoro, i file di configurazione, ad esempio host.json, connections.json e qualsiasi altro file correlato. |
Prima del rilascio in Azure
Le connessioni API gestite all'interno del file di connections.json del progetto dell'app per la logica vengono create in modo specifico per l'uso locale in Visual Studio Code. Prima di poter rilasciare gli artefatti del progetto da Visual Studio Code ad Azure, è necessario aggiornare questi artefatti. Per usare le connessioni API gestite in Azure, è necessario aggiornare i metodi di autenticazione in modo che siano nel formato corretto da usare in Azure.
Aggiornare il tipo di autenticazione
Per ogni connessione API gestita che usa l'autenticazione, è necessario aggiornare l'oggetto di autenticazione dal formato locale in Visual Studio Code al formato portale di Azure, come illustrato rispettivamente dal primo e dal secondo esempio di codice:
Formato di Visual Studio Code
{
"managedApiConnections": {
"sql": {
"api": {
"id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/providers/Microsoft.Web/locations/westus/managedApis/sql"
},
"connection": {
"id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/ase/providers/Microsoft.Web/connections/sql-8"
},
"connectionRuntimeUrl": "https://xxxxxxxxxxxxxx.01.common.logic-westus.azure-apihub.net/apim/sql/xxxxxxxxxxxxxxxxxxxxxxxxx/",
"authentication": {
"type": "Raw",
"scheme": "Key",
"parameter": "@appsetting('sql-connectionKey')"
}
}
}
formato portale di Azure
{
"managedApiConnections": {
"sql": {
"api": {
"id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/providers/Microsoft.Web/locations/westus/managedApis/sql"
},
"connection": {
"id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/ase/providers/Microsoft.Web/connections/sql-8"
},
"connectionRuntimeUrl": "https://xxxxxxxxxxxxxx.01.common.logic-westus.azure-apihub.net/apim/sql/xxxxxxxxxxxxxxxxxxxxxxxxx/",
"authentication": {
"type": "ManagedServiceIdentity",
}
}
}
Creare connessioni API in base alle esigenze
Se si distribuisce il flusso di lavoro dell'app per la logica in un'area di Azure o una sottoscrizione diversa dall'ambiente di sviluppo locale, è anche necessario assicurarsi di creare queste connessioni API gestite prima della distribuzione. La distribuzione del modello di Azure Resource Manager è il modo più semplice per creare connessioni API gestite.
L'esempio seguente illustra una definizione di risorsa di connessione API gestita di SQL in un modello di Resource Manager:
{
"type": "Microsoft.Web/connections",
"apiVersion": "2016–06–01",
"location": "[parameters('location')]",
"name": "[parameters('connectionName')]",
"properties": {
"displayName": "sqltestconnector",
"api": {
"id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/providers/Microsoft.Web/locations/{Azure-region-location}/managedApis/sql"
},
"parameterValues": {
"authType": "windows",
"database": "TestDB",
"password": "TestPassword",
"server": "TestServer",
"username": "TestUserName"
}
}
}
Per trovare i valori che è necessario usare nell'oggetto proprietà per completare la definizione della risorsa di connessione, è possibile usare l'API seguente per un connettore specifico:
GET https://management.azure.com/subscriptions/{Azure-subscription-ID}/providers/Microsoft.Web/locations/{Azure-region-location}/managedApis/{connector-name}?api-version=2016-06-01
Nella risposta trovare l'oggetto connectionParameters , che contiene le informazioni necessarie per completare la definizione della risorsa per tale connettore specifico. L'esempio seguente illustra una definizione di risorsa di esempio per una connessione gestita di SQL:
{
"type": "Microsoft.Web/connections",
"apiVersion": "2016–06–01",
"location": "[parameters('location')]",
"name": "[parameters('connectionName')]",
"properties": {
"displayName": "sqltestconnector",
"api": {
"id": "/subscriptions/{Azure-subscription-ID}/providers/Microsoft.Web/locations/{Azure-region-location}/managedApis/sql"
},
"parameterValues": {
"authType": "windows",
"database": "TestDB",
"password": "TestPassword",
"server": "TestServer",
"username": "TestUserName"
}
}
}
In alternativa, è possibile acquisire ed esaminare la traccia di rete per quando si crea una connessione usando la finestra di progettazione del flusso di lavoro in App per la logica di Azure. Trovare la PUT
chiamata inviata all'API gestita del connettore come descritto in precedenza ed esaminare il corpo della richiesta per tutte le informazioni necessarie.
Definizione di risorsa del gateway dati locale
Se la connessione usa una risorsa gateway dati locale, questa definizione di risorsa esiste separatamente dalla definizione della risorsa del connettore. Per visualizzare la definizione di risorsa del gateway dati, vedere Automatizzare la distribuzione per App per la logica di Azure usando i modelli di Azure Resource Manager e Microsoft.Web connectionGateways.
Rilasciare in Azure
Per configurare una pipeline di versione distribuita in Azure, seguire la procedura associata per GitHub, Azure DevOps o l'interfaccia della riga di comando di Azure.
Nota
App per la logica di Azure attualmente non supporta gli slot di distribuzione di Azure.
Per le distribuzioni di GitHub, è possibile distribuire l'app per la logica usando GitHub Actions, ad esempio GitHub Actions in Funzioni di Azure. Per eseguire questa azione è necessario passare le informazioni seguenti:
- Nome dell'app per la logica da usare per la distribuzione
- File ZIP che contiene gli artefatti di compilazione effettivi, incluse tutte le cartelle del flusso di lavoro, i file di configurazione, ad esempio host.json, connections.json e qualsiasi altro file correlato.
- Profilo di pubblicazione, usato per l'autenticazione
- name: 'Run Azure Functions Action'
uses: Azure/functions-action@v1
id: fa
with:
app-name: 'MyLogicAppName'
package: 'MyBuildArtifact.zip'
publish-profile: 'MyLogicAppPublishProfile'
Per altre informazioni, vedere la documentazione Recapito continuo con GitHub Action .
Dopo il rilascio in Azure
Ogni connessione API ha criteri di accesso. Al termine della distribuzione ZIP, è necessario aprire la risorsa dell'app per la logica nella portale di Azure e creare criteri di accesso per ogni connessione API per configurare le autorizzazioni per l'app per la logica distribuita. La distribuzione zip non crea automaticamente le impostazioni dell'app. Quindi, dopo la distribuzione, è necessario creare queste impostazioni dell'app in base al file local.settings.json nel progetto di Visual Studio Code locale.
Passaggi successivi
Vorremmo ascoltare le vostre esperienze con l'App per la logica di Azure a tenant singolo.
- Per i bug o i problemi, creare i problemi in GitHub.
- Per domande, richieste, commenti e altri commenti, usare questo modulo di feedback.