Disponibilidade geral de regras de automação de equipe e validação AB# aprimorada

Temos o prazer de anunciar que a validação AB# aprimorada pelo aplicativo Azure Boards no GitHub e as regras de Automação de Equipe estão em disponibilidade geral! Melhoramos a validação AB# para que você possa ser notificado quando um link para um item de trabalho não for válido. Nas Regras de Automação de Equipe, agora você pode configurar cada nível de lista de pendências para automatizar a abertura e o fechamento/resolução de itens de trabalho com base nos estados do item filho.

Com essa atualização, também introduzimos suporte para consultas CodeQL personalizadas na Varredura de código! Isso permitirá que você crie suas próprias consultas personalizadas para identificar problemas específicos da sua base de código.

Confira as notas sobre a versão para obter detalhes.

GitHub Advanced Security para Azure DevOps

Azure Boards

Azure Pipelines

GitHub Advanced Security para Azure DevOps

Consultas personalizadas do CodeQL agora com suporte no GitHub Advanced Security para Azure DevOps

Temos o prazer de anunciar a introdução do suporte para consultas CodeQL personalizadas na Varredura de código! Isso permite que você crie suas próprias consultas personalizadas para identificar problemas específicos da sua base de código. Agora, você pode criar e publicar pacotes contendo consultas personalizadas, executar essas consultas em seus pipelines e personalizar a detecção de vulnerabilidades pertinentes à sua organização.

Para obter mais informações sobre como utilizar consultas personalizadas para Verificação de código no GitHub Advanced Security para Azure DevOps, consulte Alertas de Verificação de código para GitHub Advanced Security para Azure DevOps.

Valorizamos sua contribuição. Se você tiver dúvidas ou comentários, recomendamos que você se envolva com nossa comunidade na Comunidade de desenvolvedores.

Azure Boards

Integração com o GitHub – a validação aprimorada do AB# está em disponibilidade geral

Alguns sprints atrás, anunciamos a versão prévia para validação aprimorada de AB# pelo aplicativo Azure Boards no GitHub. Aprimoramos o aplicativo para notificar melhor os usuários sobre a validade dos links de item de trabalho, ajudando-os a identificar e corrigir quaisquer problemas antes de mesclar uma Solicitação de Pull.

Após várias semanas de testes e comentários, esse recurso agora está disponível para todos os usuários que usam a integração GitHub + Azure Boards.

Capturas de tela de validação aprimorada.

Este é o primeiro de vários recursos que estamos fazendo para melhorar a integração atual. Certifique-se de verificar os outros recursos de integração do Azure Boards + GitHub que planejamos no roteiro público.

Importante

A partir de 06/08/2024, o aplicativo Azure Boards no GitHub não validará mais links AB#. Você ainda pode usar a AB# sintaxe para vincular itens de trabalho em suas solicitações de pull, confirmações e problemas do GitHub como fazia antes dessa alteração.

As regras de automação de equipe estão em disponibilidade geral

Temos o prazer de anunciar o lançamento desse recurso para todos os clientes do Azure DevOps Service.

Observação

Esse recurso será lançado nas próximas duas a três semanas. Ele pode não estar disponível para sua organização até o início de fevereiro de 2024.

Agora você pode configurar cada nível de lista de pendências para automatizar a abertura e o fechamento (ou resolução) de itens de trabalho com base no estado dos itens filho. Existem dois cenários principais que estamos tentando resolver.

  • Quando um único item filho é ativado, ative o pai.
  • Quando todos os itens filho estiverem fechados, feche o pai (ou resolva-o).

Para habilitar essas configurações, clique na configuração de nível de lista de pendências para sua equipe. Em seguida, vá para a guia Regras de Automação > para ver as duas regras diferentes que você pode aplicar à sua lista de pendências. Cada nível de lista de pendências (requisitos, recursos, épicos) pode ser configurado de forma diferente, dependendo de como sua equipe deseja trabalhar.

Capturas de tela das configurações da equipe.

Por exemplo, quando qualquer tarefa secundária estiver definida como Ativa, ative a história de usuário pai. Em seguida, quando todas as tarefas forem concluídas, defina a história do usuário como Fechada.

Gif para demonstração encerrando a história do usuário.

Você pode saber mais sobre esse recurso revisando a documentação e esta postagem no blog.

Esse recurso foi priorizado com base neste tíquete de sugestão da Comunidade de Desenvolvedores.

Azure Pipelines

Atualizar tarefas obsoletas antes de 31 de janeiro

Estamos desativando tarefas preteridas em 31 de janeiro de 2024. Para ajudá-lo a identificar os pipelines que estão usando essas tarefas, incluímos uma mensagem de aviso com uma alternativa sugerida. Incentivamos você a atualizar seus pipelines para usar uma versão de tarefa mais recente ou uma alternativa antes de 31 de janeiro de 2024.

Captura de tela de avisos de substituição específicos da tarefa.

Veja os anúncios anteriores relacionados a tarefas preteridas:

Os agentes hospedados da Microsoft usam o PowerShell 7.4

Todos os agentes hospedados da Microsoft começarão a usar o PowerShell 7.2 LTS para o PowerShell 7.4 LTS a partir de 28 de janeiro. Confira Novidades no PowerShell 7.4 e na disponibilidade geral do PowerShell 7.4.

Anote as alterações significativas e atualize seus scripts de acordo:

  • Alterações significativas entre o PowerShell 7.3 e 7.4 LTS
  • Alterações significativas entre o PowerShell 7.2 LTS e 7.3
  • Atualização do comportamento de análise de argumentos controlado por meio de $PSNativeCommandArgumentPassing. O script de exemplo abaixo impõe o mesmo comportamento no Linux, macOS e Windows, definindo $PSNativeCommandArgumentPassing explicitamente.

Novos segredos de conexão de serviço do Azure expiram em três meses

As Conexões de Serviço do Azure em que o Azure DevOps cria o segredo terão uma expiração secreta de três meses em vez de dois anos.

Para eliminar a necessidade de alternar segredos, converta sua conexão de serviço para usar a federação de identidades da carga de trabalho. Você pode usar o script de exemplo abaixo para converter rapidamente várias conexões de serviço do Azure em federação de identidade de carga de trabalho:

#!/usr/bin/env pwsh
<# 
.SYNOPSIS 
    Convert multiple Azure Resource Manager service connection(s) to use Workload identity federation

.LINK
    https://aka.ms/azdo-rm-workload-identity-conversion

.EXAMPLE
    ./convert_azurerm_service_connection_to_oidc_simple.ps1 -Project <project> -OrganizationUrl https://dev.azure.com/<organization>
#> 
#Requires -Version 7.3

param ( 
    [parameter(Mandatory=$true,HelpMessage="Name of the Azure DevOps Project")]
    [string]
    [ValidateNotNullOrEmpty()]
    $Project,

    [parameter(Mandatory=$true,HelpMessage="Url of the Azure DevOps Organization")]
    [uri]
    [ValidateNotNullOrEmpty()]
    $OrganizationUrl
) 
$apiVersion = "7.1"
$PSNativeCommandArgumentPassing = "Standard" 

#-----------------------------------------------------------
# Log in to Azure
$azdoResource = "499b84ac-1321-427f-aa17-267ca6975798"
az login --allow-no-subscriptions --scope ${azdoResource}/.default
$OrganizationUrl = $OrganizationUrl.ToString().Trim('/')

#-----------------------------------------------------------
# Retrieve the service connection
$getApiUrl = "${OrganizationUrl}/${Project}/_apis/serviceendpoint/endpoints?authSchemes=ServicePrincipal&type=azurerm&includeFailed=false&includeDetails=true&api-version=${apiVersion}"
az rest --resource $azdoResource -u "${getApiUrl} " -m GET --query "sort_by(value[?authorization.scheme=='ServicePrincipal' && data.creationMode=='Automatic' && !(isShared && serviceEndpointProjectReferences[0].projectReference.name!='${Project}')],&name)" -o json `
        | Tee-Object -Variable rawResponse | ConvertFrom-Json | Tee-Object -Variable serviceEndpoints | Format-List | Out-String | Write-Debug
if (!$serviceEndpoints -or ($serviceEndpoints.count-eq 0)) {
    Write-Warning "No convertible service connections found"
    exit 1
}

foreach ($serviceEndpoint in $serviceEndpoints) {
    # Prompt user to confirm conversion
    $choices = @(
        [System.Management.Automation.Host.ChoiceDescription]::new("&Convert", "Converting service connection '$($serviceEndpoint.name)'...")
        [System.Management.Automation.Host.ChoiceDescription]::new("&Skip", "Skipping service connection '$($serviceEndpoint.name)'...")
        [System.Management.Automation.Host.ChoiceDescription]::new("&Exit", "Exit script")
    )
    $prompt = $serviceEndpoint.isShared ? "Convert shared service connection '$($serviceEndpoint.name)'?" : "Convert service connection '$($serviceEndpoint.name)'?"
    $decision = $Host.UI.PromptForChoice([string]::Empty, $prompt, $choices, $serviceEndpoint.isShared ? 1 : 0)

    if ($decision -eq 0) {

        Write-Host "$($choices[$decision].HelpMessage)"
    } elseif ($decision -eq 1) {
        Write-Host "$($PSStyle.Formatting.Warning)$($choices[$decision].HelpMessage)$($PSStyle.Reset)"
        continue 
    } elseif ($decision -ge 2) {
        Write-Host "$($PSStyle.Formatting.Warning)$($choices[$decision].HelpMessage)$($PSStyle.Reset)"
        exit 
    }

    # Prepare request body
    $serviceEndpoint.authorization.scheme = "WorkloadIdentityFederation"
    $serviceEndpoint.data.PSObject.Properties.Remove('revertSchemeDeadline')
    $serviceEndpoint | ConvertTo-Json -Depth 4 | Write-Debug
    $serviceEndpoint | ConvertTo-Json -Depth 4 -Compress | Set-Variable serviceEndpointRequest
    $putApiUrl = "${OrganizationUrl}/${Project}/_apis/serviceendpoint/endpoints/$($serviceEndpoint.id)?operation=ConvertAuthenticationScheme&api-version=${apiVersion}"
    # Convert service connection
    az rest -u "${putApiUrl} " -m PUT -b $serviceEndpointRequest --headers content-type=application/json --resource $azdoResource -o json `
            | ConvertFrom-Json | Set-Variable updatedServiceEndpoint
    
    $updatedServiceEndpoint | ConvertTo-Json -Depth 4 | Write-Debug
    if (!$updatedServiceEndpoint) {
        Write-Debug "Empty response"
        Write-Error "Failed to convert service connection '$($serviceEndpoint.name)'"
        exit 1
    }
    Write-Host "Successfully converted service connection '$($serviceEndpoint.name)'"
}

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.

Fazer uma sugestão

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

Obrigada,

Dan Hellem