Partilhar via


Configuração para desativar a criação de repositórios TFVC

Com esta 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 seus 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, nos Painéis do Azure, 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 de versão para obter detalhes.

Segurança Avançada do GitHub para Azure DevOps

Quadros do Azure:

Repositórios do Azure

Azure Pipelines

Planos de Teste do Azure:

Segurança Avançada do GitHub para Azure DevOps

Documentação da API de visão geral de segurança agora disponível

A documentação para a API que alimenta a guia de risco de visão geral de 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 ADO PAT tem a vso.advsec permissão, que concede a capacidade de ler alertas, instâncias de resultados e instâncias de resultados de análise.

Azure Boards

Alteração para excluir caminhos de área e iteração

A exclusão de uma área ou caminho de iteração pode causar interrupções. Ele pode mover itens de trabalho para um novo caminho e pode fazer com que as equipes percam o acesso aos 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.

Capturas de tela da área de exclusão.

Repositórios do Azure

Nova configuração para desativar 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 preferido no Azure Repos. Todas as melhorias recentes em termos de segurança, desempenho e acessibilidade foram feitas exclusivamente para os repositórios Git, o que levou a um declínio contínuo na utilização do TFVC. Embora alguns ainda dependam do TFVC e não tencionemos remover este conjunto de funcionalidades, planeamos eliminar gradualmente o TFVC para novos projetos e organizações, bem como para projetos que atualmente não utilizam 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.

Gif para demonstração Desative a criação de repositórios TFVC.

Azure Pipelines

Acessar o Barramento de Serviço do Azure a partir de Pipelines usando a autenticação de ID do Microsoft Entra

Agora você pode usar a autenticação do Microsoft Entra ID para acessar o Barramento de Serviço do Azure a partir do Azure Pipelines. Isso permite que você aproveite a federação de identidades 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 System.OidcRequestUri variável de pipeline. Os desenvolvedores de tarefas podem aproveitar essa variável para gerar um idToken para autenticação com o Entra ID.

Se você estiver usando tarefas do Marketplace ou tarefas personalizadas para implantar no Azure, lembre-se de que essas tarefas podem ainda não oferecer suporte à federação de identidades de carga de trabalho. Recomendamos que os desenvolvedores de tarefas habilitem a federação de identidades de carga de trabalho para melhorar as medidas de segurança.

Captura de tela da colaboração oidc.

As tarefas que recebem uma connectedService:AzureRM entrada no task.json podem ser atualizadas para dar suporte à federação de identidades de carga de trabalho seguindo estas etapas:

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 do 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

Tarefas de 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 causavam a falha de todo o trabalho e, potencialmente, do pipeline.

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 ocorrer um erro transitório, o Azure Pipelines tentará novamente a solicitação até três vezes (a tentativa inicial mais duas novas tentativas especificadas pelo 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 externas do sistema.

Tarefas que usam uma versão de corredor de nó de fim de vida para executar avisos de emissão

As tarefas de pipeline que dependem de uma versão do Nó não mais mantida começarão a receber avisos:

A versão <version> da tarefa TaskName depende de uma versão do nó (10) que está em fim de vida. 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 Nó: 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 de sua 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 Compor V2. Alguns utilizadores precisarão de mais tempo para atualizar os seus projectos 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 baseia-se na documentação autónoma Install Compose

Utilizar docker-compose v1 no Windows

Adicione a etapa do powershell ao seu 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

Utilizar docker-compose v1 no Linux

Adicione a etapa bash ao seu 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

Planos de Teste do Azure

Extensão de teste e feedback no manifesto V3

Temos o prazer de anunciar uma nova atualização para a extensão Azure DevOps Test and Feedback! Esta atualização faz a transição da nossa implementação do Manifest Versão 2 para a Versão 3, alinhando-se com o 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 suave antes de expandir a implantação com base nos resultados.

Para obter mais detalhes, confira nossa postagem recente no blog sobre essa atualização. Testar a extensão de feedback no manifesto v3

Próximos passos

Nota

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 feedback

Gostaríamos muito de ouvir o que você pensa sobre esses recursos. Use o menu Ajuda para relatar um problema ou fornecer uma sugestão.

Faça uma sugestão

Você também pode obter conselhos e suas perguntas respondidas pela comunidade no Stack Overflow.

Obrigado,

Silviu Andrica