Configuração para desabilitar a criação de repositórios TFVC
Com essa atualização, estamos introduzindo uma nova configuração para desabilitar a criação de repositórios TFVC. Essa alteração se concentra em novos projetos, garantindo que os repositórios TFVC existentes permaneçam inalterados.
Além disso, temos o prazer de anunciar que, no Azure Pipelines, um novo ponto de extremidade da API REST está disponível para solicitar tokens OIDC! Isso permite que os desenvolvedores de tarefas gerem idTokens para autenticação do Entra ID, aumentando a segurança e a facilidade de uso.
Por fim, em Azure Boards, os caminhos de área e iteração agora só podem ser excluídos se não estiverem mais associados a nenhum item de trabalho. Essa melhoria evita interrupções e garante que as equipes mantenham o acesso aos seus quadros e listas de pendências.
Confira as notas sobre a versão para obter detalhes.
GitHub Advanced Security para Azure DevOps
Azure Boards:
Azure Repos
Azure Pipelines
- Acessar o Barramento de Serviço do Azure de Pipelines usando a autenticação de ID do Microsoft Entra
- Pipelines e tarefas preenchem variáveis para personalizar a autenticação de federação de identidade de carga de trabalho
- Repetições para tarefas do servidor
- As tarefas que usam uma versão do executor do nó de fim de vida útil para executar emitem avisos
- O DockerCompose0 usa o Docker Compose v2 no modo de compatibilidade v1
Azure Test Plans:
GitHub Advanced Security para Azure DevOps
Visão geral da segurança: documentação da API agora disponível
A documentação da API que alimenta a guia de risco de visão geral da Segurança Avançada já está disponível. Use o ponto de extremidade /{organization}/_apis/reporting/summary/alerts
para exibir um resumo da criticidade do alerta em todos os repositórios habilitados para Segurança Avançada. Verifique se o PAT do ADO tem a vso.advsec
permissão, que concede a capacidade de ler alertas, instâncias de resultado e instâncias de resultado de análise.
Azure Boards
Alteração para exclusão de caminhos de área e iteração
A exclusão de uma área ou caminho de iteração pode ser perturbadora. Ele pode mover itens de trabalho para um novo caminho e fazer com que as equipes percam o acesso a seus quadros e listas de pendências. Apesar dos avisos e prompts, os caminhos às vezes são excluídos sem entender completamente as consequências. Para resolver isso, alteramos o comportamento: os caminhos de área e iteração agora só podem ser excluídos se não forem mais usados por nenhum item de trabalho.
Azure Repos
Nova configuração para desabilitar a criação de repositórios TFVC
Nos últimos anos, nenhum novo recurso foi adicionado ao Controle de Versão do Team Foundation (TFVC) porque o Git se tornou o sistema de controle de versão preferencial no Azure Repos. Todas as melhorias recentes em segurança, desempenho e acessibilidade foram feitas exclusivamente em repositórios do Git, levando a um declínio contínuo no uso do TFVC. Embora alguns ainda dependam do TFVC e não pretendamos remover esse conjunto de recursos, planejamos eliminar gradualmente o TFVC para novos projetos e organizações, bem como para projetos que atualmente não usam o TFVC.
Como parte dessa transição, estamos introduzindo uma nova configuração para "Desabilitar a criação de repositórios TFVC", que afetará apenas a criação de novos repositórios TFVC e não afetará os existentes.
Azure Pipelines
Acessar o Barramento de Serviço do Azure de Pipelines usando a autenticação de ID do Microsoft Entra
Agora você pode usar a autenticação de ID do Microsoft Entra para acessar o Barramento de Serviço do Azure do Azure Pipelines. Isso permite que você aproveite a federação de identidade de carga de trabalho para remover o gerenciamento de segredos e o RBAC do Azure para controle de acesso refinado.
As identidades que acessam o Barramento de Serviço do Azure precisam receber uma das funções internas do Azure para o Barramento de Serviço do Azure no Barramento de Serviço acessado.
PublishToAzureServiceBus@2 tarefa
As novas tarefas PublishToAzureServiceBus@2 podem ser configuradas usando uma conexão de serviço do Azure. Crie uma conexão de serviço do Azure e preencha as serviceBusQueueName
propriedades e serviceBusNamespace
da nova tarefa:
- task: PublishToAzureServiceBus@2
inputs:
azureSubscription: my-azure-service-connection
serviceBusQueueName: my-service-bus-queue
serviceBusNamespace: my-service-bus-namespace
useDataContractSerializer: false
messageBody: |
{
"foo": "bar"
}
Tarefas do servidor
As tarefas de servidor personalizado (sem agente) que usam ServiceBus
a execução podem especificar uma Conexão de Serviço do Azure como EndpointId
e omitir.ConnectionString
Consulte Criação de tarefas do servidor.
Pipelines e tarefas preenchem variáveis para personalizar a autenticação de federação de identidade de carga de trabalho
O ponto de extremidade da API REST para solicitar tokens OIDC agora está disponível na variável de System.OidcRequestUri
pipeline. Os desenvolvedores de tarefas podem aproveitar essa variável para gerar um idToken para autenticação com o ID do Entra.
Se você estiver usando tarefas do Marketplace ou tarefas personalizadas para implantar no Azure, lembre-se de que essas tarefas podem não dar suporte à federação de identidade de carga de trabalho ainda. Recomendamos que os desenvolvedores de tarefas habilitem a federação de identidades de carga de trabalho para melhorar as medidas de segurança.
As tarefas que recebem uma connectedService:AzureRM
entrada no task.json podem ser atualizadas para dar suporte à federação de identidade de carga de trabalho seguindo estas etapas:
- Utilize a API REST do Oidctoken para solicitar um idToken (seta 1 no diagrama acima).
- Troque o idToken por um token de acesso usando o fluxo de credencial federado da API OAuth, especificando o idToken como
client_assertion
(setas 2 e 4 no diagrama acima);
ou: - Para tarefas que atuam como um wrapper em torno de uma ferramenta que executa a própria autenticação, use o método de autenticação das ferramentas para especificar o token federado.
As tarefas de nó podem usar o pacote azure-pipelines-tasks-artifacts-common npm para obter o idToken. Consulte o exemplo de código para obter detalhes de implementação.
Solicitando um novo idToken
A System.OidcRequestUri
variável de pipeline e AZURESUBSCRIPTION_SERVICE_CONNECTION_ID
a variável de ambiente expostas nas tarefas e AzurePowerShell@5
permitem que os AzureCLI@2
autores de pipeline se autentiquem a partir de seu próprio 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
CLI do 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
Repetições para tarefas do servidor
As tarefas do servidor que chamam sistemas externos, como AzureFunction
ou InvokeRESTAPI
, podem ocasionalmente falhar devido a erros transitórios, como esgotamento de recursos de computação. Anteriormente, essas falhas faziam com que todo o trabalho e, potencialmente, o pipeline falhassem.
Para melhorar a resiliência contra erros transitórios, introduzimos suporte para a propriedade em tarefas do retryCountOnTaskFailure
servidor. Suponha que você tenha o seguinte código YAML em seu 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
houver um erro transitório, o Azure Pipelines repetirá a solicitação até três vezes (a tentativa inicial mais duas novas tentativas especificadas por retryCountOnTaskFailure
). Cada nova tentativa inclui um período de espera crescente. O número máximo de tentativas permitidas é 10.
O retryCountOnTaskFailure
não está disponível para a ManualValidation
tarefa e outras tarefas que não envolvem chamadas de sistema externo.
As tarefas que usam uma versão do executor do nó de fim de vida útil para executar emitem avisos
As tarefas de pipeline que dependem de uma versão do Node não mais mantida começarão a receber avisos:
A versão
<version>
da tarefaTaskName
depende de uma versão do nó (10) que está no fim da vida útil. Entre em contato com o proprietário da extensão para obter uma versão atualizada da tarefa. Os mantenedores de tarefas devem revisar as diretrizes de atualização do Node: https://aka.ms/node-runner-guidance
Para suprimir esses avisos, você pode definir uma variável de ambiente ou pipeline no nível do pipeline (trabalho) ou da tarefa. Por exemplo:
variables:
AZP_AGENT_CHECK_IF_TASK_NODE_RUNNER_IS_DEPRECATED: false
DockerCompose@0 usa o Docker Compose v2 no modo de compatibilidade v1
O Docker Compose v1 chegará ao fim da vida útil e será removido dos Hosted Agents em 24 de julho de 2024. Atualizamos a tarefa DockerCompose@0 para usar o Docker Compose v2 no modo de compatibilidade v1 se o Docker Compose v1 não estiver disponível no agente.
No entanto, o modo de compatibilidade não resolve todos os problemas de compatibilidade. Consulte Migrar para o Compose V2. Alguns usuários precisarão de mais tempo para atualizar seus projetos do Docker Compose para compatibilidade com o Docker Compose v2. Nesses casos, siga estas instruções para usar a tarefa DockerComposeV0 com docker-compose v1.
NOTA: Este guia é baseado na documentação independente do Install Compose
Usar docker-compose v1 no Windows
Adicione a etapa do PowerShell ao pipeline para baixar o docker-Compose v1.29.2 e usá-lo com a tarefa DockerComposeV0 no 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
Usar docker-compose v1 no Linux
Adicione a etapa bash ao pipeline para baixar o Docker-Compose v1.29.2 e usá-lo com a tarefa DockerComposeV0 no 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
Extensão de teste e comentários no Manifesto V3
Temos o prazer de anunciar uma nova atualização para a extensão de teste e comentários do Azure DevOps! Essa atualização faz a transição de nossa implementação do Manifest versão 2 para a versão 3, alinhando-se ao cronograma de descontinuação do Google para o Manifest V2.
Embora os principais recursos da extensão permaneçam inalterados, esta atualização melhora a segurança e o desempenho. A extensão atualizada será lançada gradualmente nos navegadores Chrome e Edge nas próximas semanas. Monitoraremos o desempenho e o feedback para garantir uma transição tranquila antes de expandir a distribuição com base nos resultados.
Para obter mais detalhes, confira nossa postagem recente no blog sobre essa atualização. Extensão de teste e feedback no Manifest V3
Próximas etapas
Observação
Esses recursos serão lançados nas próximas duas a três semanas.
Vá até o Azure DevOps e dê uma olhada.
Como fornecer comentários
Adoraríamos ouvir o que você pensa sobre esses recursos. Use o menu de ajuda para relatar um problema ou fornecer uma sugestão.
Você também pode obter conselhos e suas perguntas respondidas pela comunidade no Stack Overflow.
Obrigada,
Silviu Andrica