Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come configurare una pipeline in Azure Pipelines per compilare e distribuire un'app Web in Azure e abilitare l'autenticazione predefinita del servizio app di Azure.
Si apprenderà come:
- Configurare le risorse di Azure usando script in Azure Pipelines
- Creare un'applicazione Web e distribuirla nel servizio app usando Azure Pipelines
- Creare una registrazione dell'app Microsoft Entra in Azure Pipelines
- Configurare l'autenticazione predefinita del servizio app in Azure Pipelines.
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Creare un account gratuito.
- Un'organizzazione di Azure DevOps.
Creane uno gratis.
- Per usare gli agenti ospitati da Microsoft, l'organizzazione Azure DevOps deve avere accesso ai processi paralleli ospitati da Microsoft. Controlla i tuoi lavori paralleli e richiedi una sovvenzione gratuita.
- Un tenant di Microsoft Entra.
- Un account GitHub e la configurazione git in locale.
- Requisito minimo di .NET 6.0 SDK.
Creare un'app Web di esempio ASP.NET Core
Creare un'app di esempio ed eseguirne il push nel repository GitHub.
Creare e clonare un repository in GitHub
Creare un nuovo repository in GitHub, specificare un nome come "PipelinesTest". Impostarlo su Privato e aggiungere un file .gitignore con .gitignore template: VisualStudio.
Aprire una finestra del terminale e cambiare la directory di lavoro corrente al percorso in cui desideri avere la directory clonata.
cd c:\temp\
Immettere il comando seguente per clonare il repository:
git clone https://github.com/YOUR-USERNAME/PipelinesTest
cd PipelinesTest
Creare un'app Web ASP.NET Core
Aprire una finestra del terminale nel computer in una directory di lavoro. Creare una nuova app Web ASP.NET Core usando il comando dotnet new webapp e quindi modificare le directory nell'app appena creata.
dotnet new webapp -n PipelinesTest --framework net7.0 cd PipelinesTest dotnet new sln dotnet sln add .Dalla stessa sessione del terminale eseguire l'applicazione in locale usando il comando dotnet run.
dotnet run --urls=https://localhost:5001/Per verificare che l'app Web sia in esecuzione, aprire un Web browser e passare all'app all'indirizzo
https://localhost:5001.
Vedi il modello dell'applicazione web ASP.NET Core visualizzato nella pagina.
Immettere CTRL-C nella riga di comando per interrompere l'esecuzione dell'app Web.
Eseguire il push dell'esempio in GitHub
Eseguire il commit delle modifiche ed eseguire il push in GitHub:
git add .
git commit -m "Initial check-in"
git push origin main
Configurare l'ambiente Azure DevOps
Accedere all'organizzazione di Azure DevOps (https://dev.azure.com/{yourorganization}).
Creare un nuovo progetto:
- Selezionare Nuovo progetto.
- Immettere un nome di progetto, ad esempio "PipelinesTest".
- Selezionare Visibilità privata .
- Fare clic su Crea.
Creare una nuova pipeline
Dopo aver creato il progetto, aggiungere una pipeline:
- Nel riquadro di navigazione sinistro, selezionare Pipelines->Pipelines, e quindi selezionare Crea pipeline.
- Selezionare GitHub YAML.
- Nella scheda Connetti selezionare GITHub YAML. Quando richiesto, immettere le credenziali di GitHub.
- Quando viene visualizzato l'elenco dei repository, selezionare il
PipelinesTestrepository. - È possibile che si venga reindirizzati a GitHub per installare l'app Azure Pipelines. In tal caso, selezionare Approva e installa.
- In Configurare la pipeline selezionare la pipeline di avvio.
- Viene visualizzata una nuova pipeline con una configurazione di base. La configurazione predefinita usa un agente ospitato da Microsoft.
- Quando si è pronti, selezionare Salva ed esegui. Per eseguire il commit delle modifiche in GitHub e avviare la pipeline, scegliere Esegui commit direttamente nel ramo principale e selezionare Salva ed esegui una seconda volta. Se viene richiesto di concedere l'autorizzazione con un messaggio come Questa pipeline richiede l'autorizzazione per accedere a una risorsa prima che l'esecuzione possa continuare, scegliere Visualizza e seguire le istruzioni per consentire l'accesso.
Aggiungi una fase di compilazione e attività di compilazione alla tua pipeline
Ora che si dispone di una pipeline di lavoro, è possibile aggiungere una fase di compilazione e compilare attività per compilare l'app Web.
Aggiornare azure-pipelines.yml e sostituire la configurazione della pipeline di base con quanto segue:
trigger:
- main
stages:
- stage: Build
jobs:
- job: Build
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
Salvare le modifiche ed eseguire la pipeline.
Viene definita una fase Build per compilare l'app Web.
steps Nella sezione vengono visualizzate varie attività per compilare l'app Web e pubblicare elementi nella pipeline.
- NuGetToolInstaller@1 acquisisce NuGet e lo aggiunge al percorso.
- NuGetCommand@2 ripristina i pacchetti NuGet nella soluzione.
- VSBuild@1 compila la soluzione con MSBuild e crea pacchetti i risultati della compilazione dell'app (incluse le relative dipendenze) come file .zip in una cartella.
- PublishBuildArtifacts@1 pubblica il file .zip in Azure Pipelines.
Creare una connessione al servizio
Aggiungere una connessione al servizio in modo che la pipeline possa connettere e distribuire risorse in Azure:
- Selezionare Impostazioni progetto.
- Nel riquadro di spostamento a sinistra selezionare Connessioni al servizio e quindi Crea connessione al servizio.
- Selezionare Azure Resource Manager e quindi Avanti.
- Selezionare Principal del servizio (automatico) e quindi Avanti.
- Selezionare Sottoscrizione per livello di ambito e selezionare la sottoscrizione di Azure. Immettere un nome di connessione al servizio, ad esempio "PipelinesTestServiceConnection" e selezionare Avanti. Il nome della connessione al servizio viene usato nei passaggi seguenti.
Viene creata anche un'applicazione nel tenant di Microsoft Entra che fornisce un'identità per la pipeline. Hai bisogno del nome visualizzato della registrazione dell'applicazione nei passaggi seguenti. Per trovare il nome visualizzato:
- Accedi al centro di amministrazione di Microsoft Entra come almeno uno sviluppatore di applicazioni.
- Passare a Entra ID>Registrazioni app>Tutte le applicazioni.
- Trova il nome visualizzato della registrazione dell'app, che è nel formato
{organization}-{project}-{guid}.
Concedere all'utente l'autorizzazione di connessione al servizio per accedere alla pipeline:
- Nel riquadro di spostamento sinistro selezionare Impostazioni progetto e quindi Connessioni al servizio.
- Selezionare la connessione al servizio PipelinesTestServiceConnection, poi il menù opzioni, e poi Sicurezza dal menu a discesa.
- Nella sezione Autorizzazioni pipeline selezionare Aggiungi pipeline e selezionare la connessione al servizio PipelinesTest dall'elenco.
Aggiungere un gruppo di variabili
La DeployAzureResources fase creata nella sezione successiva usa diversi valori per creare e distribuire risorse in Azure:
- ID tenant di Microsoft Entra (disponibile nell'interfaccia di amministrazione di Microsoft Entra).
- Area o località in cui vengono distribuite le risorse.
- Nome di un gruppo di risorse.
- Nome del piano di servizio dell'App Service.
- il nome dell'app Web.
- Nome della connessione al servizio usata per connettere la pipeline ad Azure. Nella pipeline questo valore viene usato per la sottoscrizione di Azure.
Creare un gruppo di variabili e aggiungere valori da usare come variabili nella pipeline.
Selezionare Libreria nel riquadro di spostamento a sinistra e creare un nuovo gruppo di variabili. Dai il nome "AzureResourcesVariableGroup".
Aggiungere le variabili e i valori seguenti:
| Nome variabile | Valore di esempio |
|---|---|
| UBICAZIONE | Centro centrale |
| TENANTID | {tenant-id} |
| RESOURCEGROUPNAME | pipelinetestgroup |
| SVCPLANNAME | piano di test della pipeline |
| WEBAPPNAMETEST | pipelinetestwebapp |
| Abbonamento Azure | PipelinesTestServiceConnection |
Seleziona Salva.
Concedere alla pipeline le autorizzazioni per accedere al gruppo di variabili. Nella pagina gruppo di variabili selezionare Autorizzazioni pipeline, aggiungere la pipeline e quindi chiudere la finestra.
Aggiornare azure-pipelines.yml e aggiungere il gruppo di variabili alla pipeline.
variables:
- group: AzureResourcesVariableGroup
trigger:
- main
stages:
- stage: Build
jobs:
- job: Build
pool:
vmImage: 'windows-latest'
Salvare le modifiche ed eseguire la pipeline.
Distribuire le risorse di Azure
Aggiungere quindi una fase alla pipeline che distribuisce le risorse di Azure. La pipeline utilizza uno script inline per creare istanze di App Service. In un passaggio successivo, lo script in linea crea una registrazione dell'app Microsoft Entra per l'autenticazione di App Service. Viene usato uno script bash dell'interfaccia della riga di comando di Azure perché Azure Resource Manager (e le attività di Azure Pipelines) non possono creare una registrazione dell'app.
Lo script inline viene eseguito nel contesto della pipeline. Assegna il ruolo Application.Administrator all'app così che lo script possa creare registrazioni delle app.
- Accedi all'Interfaccia di amministrazione di Microsoft Entra.
- Vai a Entra ID>Ruoli e amministratori.
- Selezionare Amministratore applicazione dall'elenco dei ruoli predefiniti e quindi Aggiungi assegnazione.
- Cercare la registrazione dell'app pipeline in base al nome visualizzato.
- Selezionare la registrazione dell'app dall'elenco e selezionare Aggiungi.
Aggiornare azure-pipelines.yml per aggiungere lo script inline, che crea un gruppo di risorse in Azure, crea un piano di servizio app e crea un'istanza del servizio app.
variables:
- group: AzureResourcesVariableGroup
trigger:
- main
stages:
- stage: Build
jobs:
- job: Build
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
- stage: DeployAzureResources
displayName: 'Deploy resources to Azure'
dependsOn: Build
condition: |
succeeded()
jobs:
- job: DeployAzureResources
pool:
vmImage: 'windows-latest'
steps:
- task: AzureCLI@2
inputs:
azureSubscription: $(AZURESUBSCRIPTION)
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
# Create a resource group
az group create --location $LOCATION --name $RESOURCEGROUPNAME
echo "Created resource group $RESOURCEGROUPNAME"
# Create App Service plan
az appservice plan create -g $RESOURCEGROUPNAME -n $SVCPLANNAME --sku FREE
echo "Created App Service plan $SVCPLANNAME"
### Create Test resources
# create and configure an Azure App Service web app
az webapp create -g $RESOURCEGROUPNAME -p $SVCPLANNAME -n $WEBAPPNAMETEST -r "dotnet:7"
name: DeploymentScript
Salvare le modifiche ed eseguire la pipeline. Nel portale di Azure passare a Gruppi di risorse e verificare che vengano creati un nuovo gruppo di risorse e un'istanza del servizio app.
Distribuire l'app Web nel servizio app
Ora che la pipeline crea risorse in Azure, una fase di distribuzione per distribuire l'app Web nel servizio app.
Aggiornare azure-pipelines.yml per aggiungere la fase di distribuzione.
variables:
- group: AzureResourcesVariableGroup
trigger:
- main
stages:
- stage: Build
jobs:
- job: Build
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
- stage: DeployAzureResources
displayName: 'Deploy resources to Azure'
dependsOn: Build
condition: |
succeeded()
jobs:
- job: DeployAzureResources
pool:
vmImage: 'windows-latest'
steps:
- task: AzureCLI@2
inputs:
azureSubscription: $(AZURESUBSCRIPTION)
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
# Create a resource group
az group create --location $LOCATION --name $RESOURCEGROUPNAME
echo "Created resource group $RESOURCEGROUPNAME"
# Create App Service plan
az appservice plan create -g $RESOURCEGROUPNAME -n $SVCPLANNAME --sku FREE
echo "Created App Service plan $SVCPLANNAME"
### Create Test resources
# create and configure an Azure App Service web app
az webapp create -g $RESOURCEGROUPNAME -p $SVCPLANNAME -n $WEBAPPNAMETEST -r "dotnet:7"
name: DeploymentScript
- stage: DeployWebApp
displayName: 'Deploy the web app'
dependsOn: DeployAzureResources
condition: |
succeeded()
jobs:
- job: DeployWebApp
displayName: 'Deploy Web App'
pool:
vmImage: 'windows-latest'
steps:
- task: DownloadBuildArtifacts@0
inputs:
buildType: 'current'
downloadType: 'single'
artifactName: 'drop'
downloadPath: '$(System.DefaultWorkingDirectory)'
- task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: 'AzureRM'
azureSubscription: $(AZURESUBSCRIPTION)
appType: 'webApp'
WebAppName: '$(WEBAPPNAMETEST)'
packageForLinux: '$(System.DefaultWorkingDirectory)/**/*.zip'
Salvare le modifiche ed eseguire la pipeline.
Una DeployWebApp fase viene definita con diverse attività:
- DownloadBuildArtifacts@1 scarica gli artefatti di compilazione pubblicati nella pipeline in una fase precedente.
- AzureRmWebAppDeployment@4 distribuisce l'app Web nel servizio app.
Vedi il sito Web distribuito su App Service. Passare al servizio app e selezionare il dominio predefinito dell'istanza: https://pipelinetestwebapp.azurewebsites.net.
Pipelinetestwebapp è stata distribuita correttamente su App Service.
Configurare l'autenticazione del servizio app
Ora che la pipeline distribuisce l'app Web nel servizio app, è possibile configurare l'autenticazione predefinita del servizio app. Modificare lo script inline da DeployAzureResources a:
- Creare una registrazione dell'applicazione Microsoft Entra come identità per la tua applicazione web. Per creare una registrazione dell'app, il principale del servizio per l'esecuzione della pipeline richiede il ruolo di Amministratore delle applicazioni nella directory.
- Ottenere un segreto dall'app.
- Configurare l'impostazione segreta per la web app del servizio app.
- Configurare l'URI di reindirizzamento, l'URI della home page e le impostazioni dell'emittente per l'app Web del servizio app.
- Configurare altre impostazioni nell'app Web.
variables:
- group: AzureResourcesVariableGroup
trigger:
- main
stages:
- stage: Build
jobs:
- job: Build
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
- stage: DeployAzureResources
displayName: 'Deploy resources to Azure'
dependsOn: Build
condition: |
succeeded()
jobs:
- job: DeployAzureResources
pool:
vmImage: 'windows-latest'
steps:
- task: AzureCLI@2
inputs:
azureSubscription: $(AZURESUBSCRIPTION)
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
# Create a resource group
az group create --location $LOCATION --name $RESOURCEGROUPNAME
echo "Created resource group $RESOURCEGROUPNAME"
# Create App Service plan
az appservice plan create -g $RESOURCEGROUPNAME -n $SVCPLANNAME --sku FREE
echo "Created App Service plan $SVCPLANNAME"
### Create Test resources
# create and configure an Azure App Service web app
az webapp create -g $RESOURCEGROUPNAME -p $SVCPLANNAME -n $WEBAPPNAMETEST -r "dotnet:7"
redirectUriTest="https://$WEBAPPNAMETEST.azurewebsites.net/.auth/login/aad/callback"
homePageUrlTest="https://$WEBAPPNAMETEST.azurewebsites.net"
issuerTest="https://sts.windows.net/$TENANTID"
# Required resource access. Access Microsoft Graph with delegated User.Read permissions.
cat > manifest.json << EOF
[
{
"resourceAppId": "00000003-0000-0000-c000-000000000000",
"resourceAccess": [
{
"id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
"type": "Scope"
}
]
}
]
EOF
# Create app registration for App Service authentication
appIdTest=$(az ad app create --display-name $WEBAPPNAMETEST --sign-in-audience AzureADMyOrg --enable-id-token-issuance true --query appId --output tsv)
echo "Created app registration $appIdTest"
# Set identifier URI, homepage, redirect URI, and resource access
az ad app update --id $appIdTest --identifier-uris api://$appIdTest --web-redirect-uris $redirectUriTest --web-home-page-url $homePageUrlTest --required-resource-accesses @manifest.json
echo "Updated app $appIdTest"
# Get secret from the app for App Service authentication
secretTest=$(az ad app credential reset --id $appIdTest --query password --output tsv)
echo "Added secret to app $appIdTest"
az config set extension.use_dynamic_install=yes_without_prompt
az extension add --name authV2
az webapp config appsettings set --name $WEBAPPNAMETEST --resource-group $RESOURCEGROUPNAME --slot-settings MICROSOFT_PROVIDER_AUTHENTICATION_SECRET=$secretTest
echo "Updated settings for web app $WEBAPPNAMETEST"
az webapp auth microsoft update --name $WEBAPPNAMETEST --resource-group $RESOURCEGROUPNAME --client-id $appIdTest --secret-setting MICROSOFT_PROVIDER_AUTHENTICATION_SECRET --allowed-audiences $redirectUriTest --issuer $issuerTest
echo "Updated authentication settings for $WEBAPPNAMETEST"
name: DeploymentScript
- stage: DeployWebApp
displayName: 'Deploy the web app'
dependsOn: DeployAzureResources
condition: |
succeeded()
jobs:
- job: DeployWebApp
displayName: 'Depoy Web App'
pool:
vmImage: 'windows-latest'
steps:
- task: DownloadBuildArtifacts@0
inputs:
buildType: 'current'
downloadType: 'single'
artifactName: 'drop'
downloadPath: '$(System.DefaultWorkingDirectory)'
- task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: 'AzureRM'
azureSubscription: $(AZURESUBSCRIPTION)
appType: 'webApp'
WebAppName: '$(WEBAPPNAMETEST)'
packageForLinux: '$(System.DefaultWorkingDirectory)/**/*.zip'
Salvare le modifiche ed eseguire la pipeline.
Verificare l'accesso limitato all'app Web
Per verificare che l'accesso all'app sia limitato agli utenti dell'organizzazione, passare al servizio app e selezionare il dominio predefinito dell'istanza: https://pipelinetestwebapp.azurewebsites.net.
Si dovrebbe essere indirizzati a una pagina di accesso protetta per verificare che gli utenti non autenticati non siano autorizzati ad accedere al sito. Accedi come utente della tua organizzazione per ottenere l'accesso al sito.
Si può anche avviare un nuovo browser e provare ad accedere con un account personale per verificare che gli utenti esterni all'organizzazione non siano autorizzati ad accedere.
Pulire le risorse
Pulire le risorse di Azure e l'ambiente Azure DevOps in modo che non vengano addebitati costi per le risorse al termine.
Eliminare il gruppo di risorse
Selezionare Gruppi di risorse dal menu e selezionare il gruppo di risorse che contiene l'app Web distribuita.
Fare clic su Elimina gruppo di risorse per eliminare il gruppo e tutte le risorse al suo interno.
Disabilitare la pipeline o eliminare il progetto Azure DevOps
Hai creato un progetto che punta a un repository GitHub. La pipeline viene attivata per l'esecuzione ogni volta che si esegue il push di una modifica al repository GitHub, consumando minuti di build gratuiti e/o le risorse.
Opzione 1: Disabilitare la pipeline
Scegli questa opzione se vuoi mantenere il progetto e la pipeline di compilazione come riferimento futuro. Se necessario, è possibile riabilitare la pipeline in un secondo momento.
- Nel progetto Azure DevOps selezionare Pipeline e quindi selezionare la pipeline.
- Selezionare il pulsante con i puntini di sospensione all'estrema destra e quindi selezionare Impostazioni.
- Selezionare Disabilitato e quindi Salva. La pipeline non elaborerà più richieste di compilazione.
Opzione 2: Eliminare il progetto
Scegliere questa opzione se non è necessario mantenere il progetto di DevOps per riferimento futuro. In questo modo viene eliminato il progetto Azure DevOps.
- Passare al progetto Azure DevOps.
- Selezionare Impostazioni progetto nell'angolo in basso a sinistra.
- In Panoramica scorrere verso il basso fino alla fine della pagina e quindi selezionare Elimina.
- Digitare il nome del progetto nella casella di testo e quindi selezionare Elimina.
Eliminare le registrazioni dell'app in Microsoft Entra ID
Nell'interfaccia di amministrazione di Microsoft Entra selezionare Entra ID>Registrazioni app> applicazioni.
Selezionare l'applicazione per la pipeline, il nome visualizzato ha il formato {organization}-{project}-{guid}e eliminarlo.
Selezionare l'applicazione per l'app Web , pipelinetestwebapp ed eliminarla.
Passaggi successivi
Altre informazioni su: