Condividi tramite


Distribuire un'app Web in una pipeline e configurare l'autenticazione servizio app

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 Azure.

Nello specifico:

  • Configurare le risorse di Azure usando script in Azure Pipelines
  • Creare un'applicazione Web e distribuirla in servizio app usando Azure Pipelines
  • Creare una registrazione dell'app Microsoft Entra in Azure Pipelines
  • Configurare servizio app'autenticazione predefinita in Azure Pipelines.

Prerequisiti

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 con estensione gitignore con .getignore template: VisualStudio.

Aprire una finestra del terminale e modificare la directory di lavoro corrente nel percorso in cui si vuole clonare la directory:

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

  1. 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 .
    
  2. Dalla stessa sessione del terminale eseguire l'applicazione in locale usando il comando dotnet run.

    dotnet run --urls=https://localhost:5001/
    
  3. Per verificare che l'app Web sia in esecuzione, aprire un Web browser e passare all'app all'indirizzo https://localhost:5001.

Nella pagina viene visualizzato il modello ASP.NET'app Web Core.

Screen shot that shows web app running locally.

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:

  1. Selezionare New project (Nuovo progetto).
  2. Immettere un nome di progetto, ad esempio "PipelinesTest".
  3. Selezionare Visibilità privata .
  4. Seleziona Crea.

Crea una nuova pipeline

Dopo aver creato il progetto, aggiungere una pipeline:

  1. Nel riquadro di spostamento sinistro selezionare Pipelines-Pipelines> e quindi selezionare Crea pipeline.
  2. Seleziona GitHub YAML.
  3. Nella scheda Connessione selezionare GitHub YAML. Quando richiesto, immettere le credenziali di GitHub.
  4. Quando viene visualizzato l'elenco dei repository, selezionare il PipelinesTest repository.
  5. È possibile che si venga reindirizzati a GitHub per installare l'app Azure Pipelines. In tal caso, selezionare Approva e installa.
  6. In Configurare la pipeline selezionare la pipeline di avvio.
  7. Viene visualizzata una nuova pipeline con una configurazione di base. La configurazione predefinita usa un agente ospitato da Microsoft.
  8. 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.

Aggiungere una fase di compilazione e compilare attività alla 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:

  1. Selezionare Impostazioni progetto.
  2. Nel riquadro di spostamento a sinistra selezionare Connessioni al servizio e quindi Crea connessione al servizio.
  3. Selezionare Azure Resource Manager e quindi Avanti.
  4. Selezionare Entità servizio (automatico) e quindi Avanti.
  5. Selezionare Sottoscrizione per livello di ambito e selezionare la sottoscrizione di Azure. Immettere un nome di connessione al servizio, ad esempio "PipelinesTestService Connessione ion" 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. È necessario il nome visualizzato della registrazione dell'app nei passaggi successivi. Per trovare il nome visualizzato:

  1. Accedere all'interfaccia di amministrazione di Microsoft Entra come almeno uno sviluppatore di applicazioni.
  2. Passare a Applicazioni di identità>> Registrazioni app> Tutte le applicazioni.
  3. Trovare 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:

  1. Nel riquadro di spostamento sinistro selezionare Impostazioni progetto e quindi Connessioni al servizio.
  2. Selezionare la connessione al servizio PipelinesTestService Connessione ion, quindi i puntini di sospensione e quindi sicurezza dal menu a discesa.
  3. 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 servizio app.
  • 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. Assegnare il nome "AzureResourcesVariableGroup".

Aggiungere le variabili e i valori seguenti:

Nome variabile Valore di esempio
LOCATION centralus
TENANTID {tenant-id}
RESOURCEGROUPNAME pipelinetestgroup
SVCPLANNAME pipelinetestplan
WEBAPPNAMETEST pipelinetestwebapp
AZURESUBSCRIPTION PipelinesTestService Connessione ion

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 usa uno script inline per creare l'istanza di servizio app. In un passaggio successivo, lo script inline crea una registrazione dell'app Microsoft Entra per l'autenticazione servizio app. 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, assegnare application.Amministrazione ruolo istrator per l'app in modo che lo script possa creare registrazioni dell'app:

  1. Accedi all'Interfaccia di amministrazione di Microsoft Entra.
  2. Passare a Ruoli di identità>e ruoli amministratori e amministratori.>
  3. Selezionare Application Amministrazione istrator nell'elenco dei ruoli predefiniti e quindi Aggiungi assegnazione.
  4. Cercare la registrazione dell'app pipeline in base al nome visualizzato.
  5. 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 servizio app e crea un'istanza di 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. Nella portale di Azure passare a Gruppi di risorse e verificare che venga creato un nuovo gruppo di risorse e servizio app istanza.

Distribuire l'app Web in servizio app

Ora che la pipeline sta creando risorse in Azure, una fase di distribuzione per distribuire l'app Web in 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 in servizio app.

Visualizzare il sito Web distribuito in servizio app. Passare al servizio app e selezionare il dominio predefinito dell'istanza: https://pipelinetestwebapp.azurewebsites.net.

Screen shot that shows the default domain URL.

Pipelinetestwebapp è stata distribuita correttamente in servizio app.

Screen shot that shows the web app running in Azure.

Configurare l'autenticazione servizio app

Ora che la pipeline distribuisce l'app Web in servizio app, è possibile configurare l'autenticazione predefinita servizio app. Modificare lo script inline in in DeployAzureResources per:

  1. Creare una registrazione dell'app Microsoft Entra come identità per l'app Web. Per creare una registrazione dell'app, l'entità servizio per l'esecuzione della pipeline richiede il ruolo Application Amministrazione istrator nella directory.
  2. Ottenere un segreto dall'app.
  3. Configurare l'impostazione del segreto per l'app Web servizio app.
  4. Configurare le impostazioni dell'URI di reindirizzamento, dell'URI della home page e dell'autorità emittente per l'app Web servizio app.
  5. 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. Eseguire l'accesso come utente nell'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

È stato 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, richiedendo minuti di compilazione gratuiti o le risorse.

Opzione 1: Disabilitare la pipeline

Scegliere questa opzione se si vogliono mantenere il progetto di DevOps e la pipeline di compilazione per riferimento futuro. È possibile riabilitare la pipeline in un secondo momento se è necessario.

  1. All'interno del progetto Azure DevOps selezionare Pipeline e selezionare la pipeline.
  2. Selezionare il pulsante con i puntini di sospensione all'estrema destra e quindi selezionare Impostazioni.
  3. 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.

  1. Passare al progetto Azure DevOps.
  2. Selezionare Impostazioni progetto nell'angolo in basso a sinistra.
  3. In Panoramica scorrere verso il basso fino alla parte inferiore della pagina e quindi selezionare Elimina.
  4. 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 Applicazioni> di identità>Registrazioni app> Tutte le 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: