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
- Accedere alle bus di servizio di Azure da pipeline usando l'autenticazione con l'ID di Microsoft Entra
- Le pipeline e le attività popolano le variabili per personalizzare l'autenticazione federativa dell'identità del carico di lavoro
- Tentativi per le attività del server
- Attività che usano una versione dello strumento di esecuzione del nodo end-of-life per l'esecuzione di avvisi
- DockerCompose0 usa Docker Compose v2 in modalità di compatibilità v1
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.
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.
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.
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.
È anche possibile ottenere consigli e risposte alle domande della community su Stack Overflow.
Grazie,
Silviu Andrica