Disponibilidade geral das regras de automação da 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 geralmente disponíveis! Melhoramos a validação do AB# para que você possa ser notificado quando um link para um item de trabalho não for válido. Em 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 verificação de código! Isso permitirá que você crie suas próprias consultas personalizadas para identificar problemas específicos para sua base de código.
Confira as notas de versão para obter detalhes.
Segurança Avançada do GitHub para Azure DevOps
Azure Boards
- Integração com o GitHub - A validação AB# aprimorada está disponível em geral
- As regras de Automação de Equipe estão geralmente disponíveis
Azure Pipelines
- Atualizar tarefas preteridas antes de 31 de janeiro
- Os agentes hospedados pela Microsoft usam o PowerShell 7.4
- Novos segredos de conexão de serviço do Azure expiram em três meses
Segurança Avançada do GitHub para Azure DevOps
Consultas CodeQL personalizadas agora suportadas no GitHub Advanced Security for Azure DevOps
Estamos entusiasmados em anunciar a introdução do suporte para consultas CodeQL personalizadas na verificação 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 deteçã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 o seu contributo. 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 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 itens de trabalho, ajudando-os a identificar e corrigir quaisquer problemas antes de mesclar uma solicitação 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.
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 de Placas do Azure no GitHub não validará mais os links AB#. Você ainda pode usar a AB#
sintaxe para vincular itens de trabalho em suas solicitações pull, confirmações e problemas do GitHub, como era possível antes dessa alteração.
As Regras de Automação de Equipe estão geralmente disponíveis
Temos o prazer de anunciar o lançamento desse recurso para todos os clientes do Serviço de DevOps do Azure.
Nota
Este 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 é ativado, ative o pai.
- Quando todos os itens filho estiverem fechados, feche o pai (ou resolva-o).
Para ativar 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 backlog (requisitos, recursos, épicos) pode ser configurado de forma diferente, dependendo de como sua equipe deseja trabalhar.
Por exemplo, quando qualquer Tarefa filho estiver definida como Ativa, ative a História de Usuário pai. Em seguida, quando todas as Tarefas estiverem concluídas, defina a História do Usuário como Fechada.
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.
Veja anúncios anteriores relacionados a tarefas preteridas:
- Anunciando a aposentadoria de tarefas preteridas
- Anúncio para tarefas de pipeline do NuGet Restore v1 e do NuGet Installer v0
Os agentes hospedados pela 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 na disponibilidade geral do PowerShell 7.4 e do PowerShell 7.4.
Tome nota das alterações mais recentes e atualize os seus scripts em conformidade:
- Alterações significativas entre o PowerShell 7.3 e o 7.4 LTS
- Alterações significativas entre o PowerShell 7.2 LTS & 7.3
- Comportamento de análise de argumentos atualizado controlado via
$PSNativeCommandArgumentPassing
. O script de exemplo abaixo impõe o mesmo comportamento no Linux, macOS ou 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, onde 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 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 identidades 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ó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.
Você também pode obter conselhos e suas perguntas respondidas pela comunidade no Stack Overflow.
Obrigado,
Dan Hellem