Obecná dostupnost pravidel automatizace týmu a vylepšené ověřování AB#
S radostí oznamujeme, že vylepšené ověřování AB# aplikací Azure Boards v GitHubu a pravidlech pro týmovou automatizaci jsou obecně dostupné. Vylepšili jsme ověřování AB#, abyste byli upozorněni, když odkaz na pracovní položku není platný. V pravidlech služby Team Automation teď můžete nakonfigurovat každou úroveň backlogu, která automatizuje otevírání a zavírání a překlad pracovních položek na základě stavů podřízené položky.
V této aktualizaci také zavádíme podporu vlastních dotazů CodeQL ve skenování kódu. To vám umožní vytvořit vlastní dotazy přizpůsobené k identifikaci problémů specifických pro váš základ kódu.
Podrobnosti najdete v poznámkách k verzi.
Pokročilé zabezpečení GitHubu pro Azure DevOps
Azure Boards
- Integrace GitHubu – Obecně je k dispozici vylepšené ověřování AB#.
- Pravidla týmové automatizace jsou obecně dostupná
Azure Pipelines
- Aktualizace zastaralých úkolů před 31. lednem
- Agenti hostovaní Microsoftem používají PowerShell 7.4.
- Platnost nových tajných kódů připojení ke službě Azure vyprší za tři měsíce
Pokročilé zabezpečení GitHubu pro Azure DevOps
Vlastní dotazy CodeQL se teď podporují v GitHub Advanced Security pro Azure DevOps.
S radostí oznamujeme zavedení podpory vlastních dotazů CodeQL ve skenování kódu. Díky tomu můžete vytvářet vlastní dotazy přizpůsobené k identifikaci problémů specifických pro váš základ kódu. Teď můžete vytvářet a publikovat balíčky obsahující vlastní dotazy, spouštět tyto dotazy v kanálech a přizpůsobovat detekci ohrožení zabezpečení, která jsou relevantní pro vaši organizaci.
Další informace o využití vlastních dotazů pro kontrolu kódu v GitHub Advanced Security pro Azure DevOps najdete v tématu Code scan alerts for GitHub Advanced Security for Azure DevOps.
Vážíme si vašeho vstupu. Pokud máte nějaké dotazy nebo zpětnou vazbu, doporučujeme, abyste se zapojili do komunity vývojářů.
Azure Boards
Integrace GitHubu – Obecně je k dispozici vylepšené ověřování AB#.
Před několika sprinty jsme oznámili verzi Preview pro vylepšené ověřování AB# aplikací Azure Boards na GitHubu. Vylepšili jsme aplikaci, abychom uživatelům lépe upozornili na platnost odkazů na pracovní položky a pomohli jim odhalit a opravit případné problémy před sloučením žádosti o přijetí změn.
Po několika týdnech testování a zpětné vazby je teď tato funkce dostupná všem uživatelům s integrací GitHubu a Azure Boards.
Toto je první z několika funkcí, které vylepšujeme aktuální integraci. Nezapomeňte se podívat na další funkce integrace Azure Boards a GitHubu, které jsme naplánovali ve veřejném plánu.
Důležité
Od 6. 8. 2024 přestane aplikace Azure Boards na GitHubu ověřovat odkazy AB#. Syntaxi můžete dál použít AB#
k propojení pracovních položek v žádostech o přijetí změn, potvrzeních a problémech GitHubu, protože před touto změnou můžete.
Pravidla týmové automatizace jsou obecně dostupná
S radostí oznamujeme vydání této funkce všem zákazníkům služby Azure DevOps Service.
Poznámka:
Tato funkce se bude zavádět během následujících dvou až tří týdnů. Tato možnost nemusí být pro vaši organizaci k dispozici do začátku února 2024.
Teď můžete nakonfigurovat každou úroveň backlogu pro automatizaci otevírání a zavírání (nebo překladu) pracovních položek na základě stavu podřízených položek. Snažíme se vyřešit dva hlavní scénáře.
- Když je aktivována jedna podřízená položka, aktivujte nadřazenou položku.
- Po zavření všech podřízených položek zavřete nadřazenou položku (nebo ji přeložte).
Pokud chcete tato nastavení povolit, klikněte na konfiguraci na úrovni backlogu pro váš tým. Pak přejděte na kartu Pravidla automatizace > a zobrazte dvě různá pravidla, která můžete použít u backlogu. Jednotlivé úrovně backlogu (požadavky, funkce, náměty) se dají nakonfigurovat jinak v závislosti na tom, jak váš tým chce pracovat.
Pokud je například jakákoli podřízená úloha nastavena na aktivní, nastaví nadřazený uživatelský scénář jako aktivní. Po dokončení všech úkolů nastavte uživatelský scénář na Uzavřeno.
Další informace o této funkci najdete v dokumentaci a tomto blogovém příspěvku.
Tato funkce byla stanovena prioritu na základě tohoto lístku návrhu komunity vývojářů.
Azure Pipelines
Aktualizace zastaralých úkolů před 31. lednem
31. ledna 2024 vyřazujeme vyřazené úkoly. Abychom vám pomohli identifikovat kanály, které tyto úlohy používají, zahrnuli jsme upozornění s navrženou alternativou. Doporučujeme aktualizovat kanály tak, aby používaly novější verzi úlohy nebo alternativu před 31. lednem 2024.
Podívejte se na dřívější oznámení týkající se zastaralých úloh:
- Oznámení o vyřazení zastaralých úkolů
- Oznámení pro úlohy kanálu obnovení NuGet v1 a instalačního programu NuGet v0
Agenti hostovaní Microsoftem používají PowerShell 7.4.
Všichni agenti hostovaní Microsoftem začnou od 28. ledna používat PowerShell 7.2 LTS k PowerShellu 7.4 LTS. Podívejte se na novinky v PowerShellu 7.4 a obecné dostupnosti PowerShellu 7.4.
Poznamenejte si zásadní změny a odpovídajícím způsobem aktualizujte skripty:
- Zásadní změny mezi PowerShellem 7.3 a 7.4 LTS
- Zásadní změny mezi PowerShellem 7.2 LTS a 7.3
- Aktualizace chování analýzy argumentu řízeného pomocí
$PSNativeCommandArgumentPassing
. Následující ukázkový skript vynucuje stejné chování v systémech Linux, macOS a Windows explicitním nastavením$PSNativeCommandArgumentPassing
.
Platnost nových tajných kódů připojení ke službě Azure vyprší za tři měsíce
Připojení služeb Azure, kde Azure DevOps vytvoří tajný klíč, bude mít místo dvou let platnost tajného klíče tři měsíce.
Pokud chcete eliminovat potřebu obměňovat tajné kódy, převeďte připojení služby tak, aby místo toho používalo federaci identit úloh. Pomocí následujícího ukázkového skriptu můžete rychle převést několik připojení služeb Azure na federaci identit úloh:
#!/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)'"
}
Další kroky
Poznámka:
Tyto funkce se budou zavádět během následujících dvou až tří týdnů.
Přejděte na Azure DevOps a podívejte se na ně.
Jak poskytnout zpětnou vazbu
Rádi bychom slyšeli, co si o těchto funkcích myslíte. Pomocí nabídky nápovědy můžete nahlásit problém nebo poskytnout návrh.
Můžete také získat rady a své otázky zodpovězené komunitou ve službě Stack Overflow.
Díky,
Dan Hellem