Ogólna dostępność reguł automatyzacji zespołu i ulepszona weryfikacja ab#
Z przyjemnością ogłaszamy, że ulepszona weryfikacja ab# przez aplikację usługi Azure Boards w usłudze GitHub i regułach usługi Team Automation jest ogólnie dostępna! Ulepszyliśmy walidację ab#, dzięki czemu można otrzymywać powiadomienia, gdy link do elementu roboczego jest nieprawidłowy. W regułach usługi Team Automation można teraz skonfigurować każdy poziom listy prac, aby zautomatyzować otwieranie i zamykanie/rozwiązywanie elementów roboczych na podstawie stanów elementu podrzędnego.
Dzięki tej aktualizacji wprowadzamy również obsługę niestandardowych zapytań CodeQL w skanowaniu kodu! Umożliwi to tworzenie własnych zapytań dostosowanych do identyfikowania problemów specyficznych dla bazy kodu.
Zapoznaj się z informacjami o wersji, aby uzyskać szczegółowe informacje.
Usługa GitHub Advanced Security dla usługi Azure DevOps
Azure Boards
- Integracja z usługą GitHub — ulepszona weryfikacja ab# jest ogólnie dostępna
- Reguły usługi Team Automation są ogólnie dostępne
Azure Pipelines
- Aktualizowanie przestarzałych zadań przed 31 stycznia
- Agenci hostowani przez firmę Microsoft używają programu PowerShell 7.4
- Nowe wpisy tajne połączenia usługi platformy Azure wygasają za trzy miesiące
Usługa GitHub Advanced Security dla usługi Azure DevOps
Niestandardowe zapytania CodeQL są teraz obsługiwane w usłudze GitHub Advanced Security dla usługi Azure DevOps
Z radością ogłaszamy wprowadzenie obsługi niestandardowych zapytań CodeQL w skanowaniu kodu! Dzięki temu można tworzyć własne zapytania dostosowane do identyfikowania problemów specyficznych dla bazy kodu. Teraz możesz tworzyć i publikować pakiety zawierające zapytania niestandardowe, wykonywać te zapytania w potokach i dostosowywać wykrywanie luk w zabezpieczeniach, które są istotne dla organizacji.
Aby uzyskać więcej informacji na temat używania niestandardowych zapytań do skanowania kodu w usłudze GitHub Advanced Security dla usługi Azure DevOps, zobacz Artykuł Code scanning alerts for GitHub Advanced Security for Azure DevOps (Skanowanie kodu dla usługi GitHub Advanced Security dla usługi Azure DevOps).
Cenimy twoje dane wejściowe. Jeśli masz jakiekolwiek pytania lub opinie, zachęcamy do zaangażowania się z naszą społecznością w społeczności deweloperów.
Azure Boards
Integracja z usługą GitHub — ulepszona weryfikacja ab# jest ogólnie dostępna
Kilka przebiegów temu ogłosiliśmy wersję zapoznawcza ulepszonej weryfikacji ab# przez aplikację usługi Azure Boards w usłudze GitHub. Ulepszyliśmy aplikację, aby lepiej powiadamiać użytkowników o ważności linków elementów roboczych, pomagając im wykrywać i rozwiązywać wszelkie problemy przed scaleniem żądania ściągnięcia.
Po kilku tygodniach testowania i przekazywania opinii ta funkcja jest teraz dostępna dla wszystkich użytkowników korzystających z integracji z usługą GitHub i usługą Azure Boards.
Jest to pierwsza z kilku funkcji, które wprowadzamy w celu ulepszenia bieżącej integracji. Pamiętaj, aby zapoznać się z innymi funkcjami integracji usługi Azure Boards i GitHub, które zaplanowaliśmy w planie publicznym.
Ważne
Od 8/6/2024 aplikacja usługi Azure Boards w usłudze GitHub nie będzie już weryfikować linków AB#. Nadal możesz użyć AB#
składni, aby połączyć elementy robocze w żądaniach ściągnięcia, zatwierdzeniach i problemach usługi GitHub, jak można było przed tą zmianą.
Reguły usługi Team Automation są ogólnie dostępne
Z przyjemnością ogłaszamy wydanie tej funkcji wszystkim klientom usługi Azure DevOps Service.
Uwaga
Ta funkcja będzie wdrażana w ciągu najbliższych dwóch do trzech tygodni. Być może nie będzie dostępna dla Twojej organizacji dopiero na początku lutego 2024 r.
Teraz można skonfigurować każdy poziom listy prac, aby zautomatyzować otwieranie i zamykanie (lub rozwiązywanie) elementów roboczych na podstawie stanu elementów podrzędnych. Istnieją dwa główne scenariusze, które próbujemy rozwiązać.
- Po aktywowaniu pojedynczego elementu podrzędnego aktywuj element nadrzędny.
- Gdy wszystkie elementy podrzędne są zamknięte, zamknij element nadrzędny (lub rozwiąż go).
Aby włączyć te ustawienia, kliknij konfigurację na poziomie listy prac dla zespołu. Następnie przejdź do karty Reguły automatyzacji>, aby wyświetlić dwie różne reguły, które można zastosować do listy prac. Każdy poziom listy prac (wymagania, funkcje, epiki) można skonfigurować inaczej w zależności od tego, jak zespół chce pracować.
Na przykład gdy dowolne podrzędne zadanie jest ustawione na Aktywne, ustaw jako aktywny nadrzędny scenariusz użytkownika. Następnie po zakończeniu wszystkich zadań ustaw opcję Historia użytkownika na Zamknięto.
Aby dowiedzieć się więcej na temat tej funkcji, zapoznaj się z dokumentacją i tym wpisem w blogu.
Ta funkcja została o priorytyzowana na podstawie tego biletu sugestii społeczności deweloperów.
Azure Pipelines
Aktualizowanie przestarzałych zadań przed 31 stycznia
Wycofaliśmy przestarzałe zadania 31 stycznia 2024 r. Aby ułatwić zidentyfikowanie potoków korzystających z tych zadań, dołączyliśmy komunikat ostrzegawczy z sugerowaną alternatywą. Zachęcamy do zaktualizowania potoków, aby korzystały z nowszej wersji zadania lub alternatywy przed 31 stycznia 2024 r.
Zobacz wcześniejsze ogłoszenia związane z przestarzałymi zadaniami:
- Ogłoszenie wycofania przestarzałych zadań
- Ogłoszenie dotyczące zadań potoku potoku Narzędzia NuGet Restore v1 i Instalatora NuGet w wersji 0
Agenci hostowani przez firmę Microsoft używają programu PowerShell 7.4
Wszyscy agenci hostowani przez firmę Microsoft zaczną używać programu PowerShell 7.2 LTS do programu PowerShell 7.4 LTS od 28 stycznia. Zobacz Co nowego w programie PowerShell 7.4 i programie PowerShell 7.4 — ogólna dostępność.
Zanotuj zmiany powodujące niezgodność i odpowiednio zaktualizuj skrypty:
- Zmiany powodujące niezgodność między programem PowerShell 7.3 i 7.4 LTS
- Zmiany powodujące niezgodność między programem PowerShell 7.2 LTS i 7.3
- Zaktualizowano zachowanie analizowania argumentów kontrolowane za pomocą metody
$PSNativeCommandArgumentPassing
. Poniższy przykładowy skrypt wymusza to samo zachowanie w systemach Linux, macOS i Windows przez jawne ustawienie$PSNativeCommandArgumentPassing
.
Nowe wpisy tajne połączenia usługi platformy Azure wygasają za trzy miesiące
Połączenia usług platformy Azure, w których usługa Azure DevOps tworzy wpis tajny, będzie mieć tajne wygaśnięcie trzech miesięcy zamiast dwóch lat.
Aby wyeliminować konieczność rotacji wpisów tajnych, przekonwertuj połączenie usługi, aby zamiast tego użyć federacji tożsamości obciążenia. Poniższy przykładowy skrypt umożliwia szybkie konwertowanie wielu połączeń usługi platformy Azure z federacją tożsamości obciążenia:
#!/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)'"
}
Następne kroki
Uwaga
Te funkcje będą wdrażane w ciągu najbliższych dwóch do trzech tygodni.
Przejdź do usługi Azure DevOps i przyjrzyj się.
Jak przekazać opinię
Chcielibyśmy usłyszeć, co myślisz o tych funkcjach. Użyj menu Pomocy, aby zgłosić problem lub podać sugestię.
Możesz również uzyskać porady i odpowiedzi na pytania społeczności w witrynie Stack Overflow.
Dzięki,
Dan Hellem