Impostazione per disabilitare la creazione di repository TFVC

Con questo aggiornamento si sta introducendo una nuova impostazione per disabilitare la creazione di repository TFVC. Questa modifica è incentrata sui nuovi progetti, garantendo al tempo stesso che i repository TFVC esistenti rimangano invariati.

Inoltre, siamo lieti di annunciare che in Azure Pipelines è disponibile un nuovo endpoint API REST per la richiesta di token OIDC. Ciò consente agli sviluppatori di attività di generare idTokens per l'autenticazione entra ID, migliorando la sicurezza e la facilità d'uso.

Infine, in Azure Boards, i percorsi di area e iterazione possono ora essere eliminati solo se non sono più associati ad alcun elemento di lavoro. Questo miglioramento impedisce interruzioni e garantisce ai team di mantenere l'accesso alle bacheche e ai backlog.

Per informazioni dettagliate, vedere le note sulla versione.

GitHub Advanced Security per Azure DevOps

Azure Boards:

Azure Repos

Azure Pipelines

Azure Test Plans:

GitHub Advanced Security per Azure DevOps

Documentazione dell'API panoramica della sicurezza ora disponibile

La documentazione per l'API che alimenta la scheda Dei rischi per la sicurezza avanzata è ora disponibile. Usare l'endpoint /{organization}/_apis/reporting/summary/alerts per visualizzare un riepilogo della criticità degli avvisi in tutti i repository abilitati per la sicurezza avanzata. Verificare che ADO PAT disponga dell'autorizzazione vso.advsec , che concede la possibilità di leggere avvisi, istanze dei risultati e istanze dei risultati dell'analisi.

Azure Boards

Modifica per l'eliminazione di percorsi di area e iterazione

L'eliminazione di un'area o un percorso di iterazione può comportare interruzioni. Può spostare gli elementi di lavoro in un nuovo percorso e può causare la perdita dell'accesso alle bacheche e ai backlog. Nonostante gli avvisi e le richieste, i percorsi vengono talvolta eliminati senza comprendere appieno le conseguenze. Per risolvere questo problema, è stato modificato il comportamento: i percorsi di area e iterazione possono ora essere eliminati solo se non vengono più usati da elementi di lavoro.

Screenshot dell'area di eliminazione.

Azure Repos

Nuova impostazione per disabilitare la creazione di repository TFVC

Negli ultimi anni non sono state aggiunte nuove funzionalità a controllo della versione di Team Foundation (TFVC) perché Git è diventato il sistema di controllo della versione preferito in Azure Repos. Tutti i recenti miglioramenti apportati alla sicurezza, alle prestazioni e all'accessibilità sono stati apportati esclusivamente ai repository Git, causando un continuo calo dell'utilizzo di TFVC. Anche se alcuni si basano ancora su TFVC e non si prevede di rimuovere questo set di funzionalità, si prevede di eliminare gradualmente tfvc per i nuovi progetti e organizzazioni, nonché per i progetti che attualmente non usano TFVC.

Nell'ambito di questa transizione, stiamo introducendo una nuova impostazione su "Disabilita la creazione di repository TFVC", che influirà solo sulla creazione di nuovi repository TFVC e non influisce su quelli esistenti.

Gif per demo Disabilitare la creazione di repository TFVC.

Azure Pipelines

Accedere alle bus di servizio di Azure da pipeline usando l'autenticazione con l'ID di Microsoft Entra

È ora possibile usare l'autenticazione microsoft Entra ID per accedere alle bus di servizio di Azure da Azure Pipelines. In questo modo è possibile sfruttare la federazione delle identità del carico di lavoro per rimuovere la gestione dei segreti e il controllo degli accessi in base al ruolo di Azure per un controllo di accesso granulare.

Alle identità che accedono bus di servizio di Azure deve essere concesso uno dei ruoli predefiniti di Azure per bus di servizio di Azure nel bus di servizio a cui si accede.

attività PublishToAzureServiceBus@2

Le nuove attività di PublishToAzureServiceBus@2 possono essere configurate usando una connessione al servizio di Azure. Creare una connessione al servizio di Azure e popolare le serviceBusQueueName proprietà e serviceBusNamespace della nuova attività:

- task: PublishToAzureServiceBus@2
  inputs:
    azureSubscription: my-azure-service-connection
    serviceBusQueueName: my-service-bus-queue
    serviceBusNamespace: my-service-bus-namespace
    useDataContractSerializer: false
    messageBody: |
      {
        "foo": "bar"
      }
Attività del server

Le attività del server personalizzato (senza agente) che usano ServiceBus l'esecuzione possono specificare una connessione al servizio di Azure come EndpointId e omettere ConnectionString. Vedere Creazione di attività server.

Le pipeline e le attività popolano le variabili per personalizzare l'autenticazione federativa dell'identità del carico di lavoro

L'endpoint DELL'API REST per la richiesta di token OIDC è ora disponibile nella variabile della System.OidcRequestUri pipeline. Gli sviluppatori di attività possono sfruttare questa variabile per generare un idToken per l'autenticazione con Entra ID.

Se si usano attività del Marketplace o attività personalizzate per la distribuzione in Azure, tenere presente che queste attività potrebbero non supportare ancora la federazione delle identità del carico di lavoro. È consigliabile consentire agli sviluppatori di attività di abilitare la federazione delle identità del carico di lavoro per migliorare le misure di sicurezza.

Screenshot della collaborazione oidc.

Le attività che accettano un connectedService:AzureRM input in task.json possono essere aggiornate per supportare la federazione delle identità del carico di lavoro seguendo questa procedura:

  • Usare l'API REST Oidctoken per richiedere un idToken (freccia 1 nel diagramma precedente).
  • Scambiare idToken per un token di accesso usando il flusso di credenziali federate dell'API OAuth, specificando idToken come client_assertion (frecce 2 e 4 nel diagramma precedente);
    oppure:
  • Per le attività che fungono da wrapper per uno strumento che esegue l'autenticazione stessa, usare il metodo di autenticazione degli strumenti per specificare il token federato.

Le attività del nodo possono usare il pacchetto npm azure-pipelines-tasks-artifacts-common per ottenere idToken. Per informazioni dettagliate sull'implementazione, vedere l'esempio di codice.

Richiesta di un idToken aggiornato

La System.OidcRequestUri variabile di pipeline e la variabile di ambiente esposta nelle attività e AZURESUBSCRIPTION_SERVICE_CONNECTION_ID AzurePowerShell@5 consentono agli autori della AzureCLI@2 pipeline di eseguire l'autenticazione dal proprio script:

PowerShell Az
- task: AzurePowerShell@5
  inputs:
    azureSubscription: 'my-azure-subscription'
    scriptType: inlineScript
    inline: |        
      # Request fresh idToken
      Invoke-RestMethod -Headers @{
                        Authorization  = "Bearer $(System.AccessToken)"
                        'Content-Type' = 'application/json'
                      } `
                      -Uri "${env:SYSTEM_OIDCREQUESTURI}?api-version=7.1&serviceConnectionId=${env:AZURESUBSCRIPTION_SERVICE_CONNECTION_ID}" `
                      -Method Post `
                      | Select-Object -ExpandProperty oidcToken
                      | Set-Variable idToken

    # Fetch current context
    $azContext = Get-AzContext

    # Start new Az session
    Connect-AzAccount -ApplicationId $azContext.Account.Id `
                      -TenantId $azContext.Tenant.Id `
                      -SubscriptionId $azContext.Subscription.Id `
                      -FederatedToken $idToken
Interfaccia della riga di comando di Azure
- task: AzureCLI@2
  inputs:
    addSpnToEnvironment: true
    azureSubscription: 'my-azure-subscription'
    scriptType: bash
    scriptLocation: inlineScript
    inlineScript: |
      # Request fresh idToken
      OIDC_REQUEST_URL="${SYSTEM_OIDCREQUESTURI}?api-version=7.1&serviceConnectionId=${AZURESUBSCRIPTION_SERVICE_CONNECTION_ID}"
      ARM_OIDC_TOKEN=$(curl -s -H "Content-Length: 0" -H "Content-Type: application/json" -H "Authorization: Bearer $(System.AccessToken)" -X POST $OIDC_REQUEST_URL | jq -r '.oidcToken')

      # Save subscription context
      ARM_SUBSCRIPTION_ID=$(az account show --query id -o tsv)

      # New az-cli session
      az login --service-principal -u $servicePrincipalId --tenant $tenantId --allow-no-subscriptions --federated-token $ARM_OIDC_TOKEN
      az account set --subscription $ARM_SUBSCRIPTION_ID

Tentativi per le attività del server

Le attività del server che chiamano sistemi esterni, ad esempio AzureFunction o InvokeRESTAPI, possono occasionalmente non riuscire a causa di errori temporanei, ad esempio l'esaurimento delle risorse di calcolo. In precedenza, tali errori causavano l'errore dell'intero processo e potenzialmente della pipeline.

Per migliorare la resilienza contro gli errori temporanei, è stato introdotto il supporto per la retryCountOnTaskFailure proprietà nelle attività del server. Si supponga di avere il codice YAML seguente nella pipeline:

- stage: deploy
  jobs:
  - job:
    pool: server
    steps:
    - task: AzureFunction@1
      retryCountOnTaskFailure: 2
      inputs:
        function: 'https://api.fabrikamfiber.com'
        key: $(functionKey)
        method: 'POST'
        waitForCompletion: 'false'

Se https://api.fabrikamfiber.com si verifica un errore temporaneo, Azure Pipelines tenterà di ripetere la richiesta fino a tre volte (il tentativo iniziale più due tentativi specificati da retryCountOnTaskFailure). Ogni tentativo include un periodo di attesa crescente. Il numero massimo di tentativi consentiti è 10.

retryCountOnTaskFailure non è disponibile per l'attività ManualValidation e altre attività che non comportano chiamate di sistema esterne.

Attività che usano una versione dello strumento di esecuzione del nodo end-of-life per l'esecuzione di avvisi

Le attività della pipeline che si basano su una versione del nodo non più gestite inizieranno a ricevere avvisi:

La versione <version> dell'attività TaskName dipende da una versione node (10) che è di fine vita. Contattare il proprietario dell'estensione per una versione aggiornata dell'attività. I gestori attività devono esaminare le linee guida per l'aggiornamento del nodo: https://aka.ms/node-runner-guidance

Per eliminare questi avvisi, è possibile impostare una variabile di ambiente o pipeline a livello di pipeline (processo) o di attività. Ad esempio:

variables:
  AZP_AGENT_CHECK_IF_TASK_NODE_RUNNER_IS_DEPRECATED: false

DockerCompose@0 usa Docker Compose v2 in modalità di compatibilità v1

Docker Compose v1 raggiungerà la fine del ciclo di vita e verrà rimosso dagli agenti ospitati 24 luglio 2024. L'attività di DockerCompose@0 è stata aggiornata per usare Docker Compose v2 in modalità di compatibilità v1 se Docker Compose v1 non è disponibile nell'agente.

Tuttavia, la modalità di compatibilità non risolve tutti i problemi di compatibilità. Vedere Eseguire la migrazione a Compose V2. Alcuni utenti avranno bisogno di più tempo per aggiornare i progetti Docker Compose per la compatibilità docker Compose v2. In questi casi, seguire queste istruzioni per usare l'attività DockerComposeV0 con docker-compose v1.

NOTA: questa guida si basa sulla documentazione autonoma di Install Compose

Usare docker-compose v1 in Windows

Aggiungere il passaggio di PowerShell alla pipeline per scaricare docker-Compose v1.29.2 e usarlo con l'attività DockerComposeV0 in Windows:

variables:
    dockerComposePath: C:\docker-compose

steps:
- powershell: |
    mkdir -f $(dockerComposePath)
    # GitHub now requires TLS1.2. In PowerShell, run the following
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    Start-BitsTransfer -Source "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-windows-x86_64.exe" -Destination $(dockerComposePath)\docker-compose.exe
  displayName: Download docker-compose
- task: DockerCompose@0
  inputs:
    containerregistrytype: 'Azure Container Registry'
    dockerComposeFile: '**/docker-compose.yml'
    action: 'Run a Docker Compose command'
    dockerComposeCommand: 'run'
    dockerComposePath: $(dockerComposePath)\docker-compose.exe

Usare docker-compose v1 in Linux

Aggiungere il passaggio bash alla pipeline per scaricare Docker-Compose v1.29.2 e usarlo con l'attività DockerComposeV0 in Linux:

variables:
    dockerComposePath: /tmp/docker-compose

steps:
- bash: |
    sudo mkdir $(dockerComposePath)
    sudo curl -SL https://github.com/docker/compose/releases/download/1.29.2/docker-compose-linux-x86_64 -o $(dockerComposePath)/docker-compose
    sudo chmod 755 $(dockerComposePath)/docker-compose
  displayName: Download docker-compose
- task: DockerCompose@0
  inputs:
    containerregistrytype: 'Azure Container Registry'
    dockerComposeFile: $(Build.SourcesDirectory)/DockerComposeV0/docker-compose.yml
    action: 'Run a Docker Compose command'
    dockerComposeCommand: 'run'
    dockerComposePath: $(dockerComposePath)/docker-compose

Azure Test Plans

Estensione Test e Feedback nel manifesto V3

Microsoft è lieta di annunciare un nuovo aggiornamento all'estensione Test and Feedback di Azure DevOps. Questo aggiornamento esegue la transizione dell'implementazione dal manifesto versione 2 alla versione 3, allineandosi alla pianificazione di deprecazione di Google per Il manifesto V2.

Anche se le funzionalità principali dell'estensione rimangono invariate, questo aggiornamento migliora la sicurezza e le prestazioni. L'estensione aggiornata verrà implementata gradualmente nei browser Chrome e Edge nelle prossime settimane. Monitoreremo le prestazioni e il feedback per garantire una transizione uniforme prima di espandere l'implementazione in base ai risultati.

Per altri dettagli, vedere il post di blog recente su questo aggiornamento. Test & Feedback Extension in Manifest V3

Passaggi successivi

Nota

Queste funzionalità verranno implementate nelle prossime due o tre settimane.

Passare ad Azure DevOps e dare un'occhiata.

Come fornire commenti e suggerimenti

Ci piacerebbe sentire ciò che pensi a queste funzionalità. Usare il menu ? per segnalare un problema o fornire un suggerimento.

Inviare un suggerimento

È anche possibile ottenere consigli e risposte alle domande della community su Stack Overflow.

Grazie,

Silviu Andrica