Share via


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 pelas regras de Automação de Equipe está disponível para o público em 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 no(s) estado(s) do item filho.

Com esta 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 de 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 CodeQL personalizadas agora com suporte no GitHub Advanced Security for Azure DevOps

Estamos entusiasmados em 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 de 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 for Azure DevOps, consulte Alertas de verificação de código para o GitHub Advanced Security for Azure DevOps.

Valorizamos a sua contribuição. Se você tiver alguma dúvida ou feedback, recomendamos que você se envolva com nossa comunidade na Comunidade de desenvolvedores.

Azure Boards

Integração com o GitHub - A validação AB# aprimorada está disponível para o público em geral

Alguns sprints atrás, anunciamos a visualização para validação AB# aprimorada 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 recebimento.

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.

Screenshots of improved validation.

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.

As Regras de Automação de Equipe estão disponíveis para o público em geral

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

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 a resolução) de itens de trabalho com base no estado dos itens filho. Há dois cenários principais que estamos tentando resolver.

  • Quando um único item filho for 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.

Screenshots of team settings.

Por exemplo, quando qualquer Tarefa filho 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 to demo closing user story.

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 preteridas antes de 31 de janeiro

Estamos aposentando 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. Recomendamos que você atualize seus pipelines para usar uma versão de tarefa mais recente ou uma alternativa antes de 31 de janeiro de 2024.

Screenshot of task-specific deprecation warnings.

Veja anúncios anteriores relacionados a tarefas preteridas:

Os agentes hospedados da Microsoft usam o PowerShell 7.4

Todos os agentes hospedados pela Microsoft começarão a usar o PowerShell 7.2 LTS para o PowerShell 7.4 LTS a partir de 28 de janeiro. Consulte O que há de novo no PowerShell 7.4 e na disponibilidade geral do PowerShell 7.4.

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

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

As Conexões de Serviço do Azure, nas quais 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 girar segredos, converta sua conexão de serviço para usar a federação de identidades de 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.

Make a suggestion

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

Obrigada,

Dan Hellem