Allgemeine Verfügbarkeit von Teamautomatisierungsregeln und verbesserte AB#-Validierung
Wir freuen uns, ihnen mitzuteilen, dass eine verbesserte AB#-Validierung durch die Azure Boards-App in GitHub- und Teamautomatisierungsregeln allgemein verfügbar ist! Wir haben die AB#-Überprüfung verbessert, sodass Sie benachrichtigt werden können, wenn ein Link zu einer Arbeitsaufgabe ungültig ist. In Teamautomatisierungsregeln können Sie jetzt jede Backlogebene konfigurieren, um das Öffnen und Auflösen von Arbeitsaufgaben basierend auf den Status(en) des untergeordneten Elements zu automatisieren.
Mit diesem Update wird auch Unterstützung für benutzerdefinierte CodeQL-Abfragen in Codescans eingeführt! Dadurch können Sie Ihre eigenen Abfragen erstellen, die speziell auf Ihre Codebasis zugeschnitten sind.
Weitere Informationen finden Sie in den Versionshinweisen.
GitHub Advanced Security für Azure DevOps
Azure Boards
- GitHub-Integration – Verbesserte AB#-Validierung ist allgemein verfügbar
- Teamautomatisierungsregeln sind allgemein verfügbar
Azure Pipelines
- Veraltete Vorgänge vor dem 31. Januar aktualisieren
- Von Microsoft gehostete Agents verwenden PowerShell 7.4
- Neue Azure-Dienstverbindungsgeheimnisse laufen in drei Monaten ab
GitHub Advanced Security für Azure DevOps
Benutzerdefinierte CodeQL-Abfragen werden jetzt in GitHub Advanced Security für Azure DevOps unterstützt
Wir freuen uns, die Einführung der Unterstützung für benutzerdefinierte CodeQL-Abfragen in Codescans bekannt zu geben! Auf diese Weise können Sie Ihre eigenen Abfragen erstellen, die speziell auf Ihre Codebasis zugeschnitten sind. Jetzt können Sie Pakete erstellen und veröffentlichen, die benutzerdefinierte Abfragen enthalten, diese Abfragen in Ihren Pipelines ausführen und die Erkennung von Sicherheitsrisiken anpassen, die für Ihre Organisation relevant sind.
Weitere Informationen zur Verwendung von benutzerdefinierten Abfragen für die Codeüberprüfung in GitHub Advanced Security für Azure DevOps finden Sie unter Code-Überprüfungswarnungen für GitHub Advanced Security für Azure DevOps.
Wir schätzen Ihre Eingabe. Wenn Sie Fragen oder Feedback haben, empfehlen wir Ihnen, sich bei Entwicklercommunity mit unserer Community zu engagieren.
Azure Boards
GitHub-Integration – Verbesserte AB#-Validierung ist allgemein verfügbar
Vor ein paar Sprints haben wir die Vorschau für eine verbesserte AB#-Validierung durch die Azure Boards-App in GitHub angekündigt. Wir haben die App erweitert, um Die Benutzer besser über die Gültigkeit von Arbeitsaufgabenlinks zu informieren, wodurch sie Probleme erkennen und beheben können, bevor Sie eine Pullanforderung zusammenführen.
Nach mehreren Wochen Test und Feedback ist dieses Feature jetzt für alle Benutzer verfügbar, die die GitHub + Azure Boards-Integration verwenden.
Dies ist die erste von mehreren Features, die wir zur Verbesserung der aktuellen Integration vornehmen. Sehen Sie sich unbedingt die anderen Azure Boards + GitHub-Integrationsfeatures an, die wir in der öffentlichen Roadmap geplant haben.
Wichtig
Ab dem 8.6.2024 überprüft die Azure Boards-App in GitHub keine AB#-Links mehr. Sie können die AB#
Syntax weiterhin verwenden, um Arbeitsaufgaben in Ihren GitHub-Pullanforderungen, Commits und Problemen zu verknüpfen, wie sie vor dieser Änderung möglich sind.
Teamautomatisierungsregeln sind allgemein verfügbar.
Wir freuen uns, die Version dieses Features allen Kunden von Azure DevOps Service mitzuteilen.
Hinweis
Dieses Feature wird in den nächsten zwei bis drei Wochen bereitgestellt. Es ist möglicherweise erst Anfang Februar 2024 für Ihre Organisation verfügbar.
Sie können jetzt jede Backlog-Ebene konfigurieren, um das Öffnen und Schließen (oder Auflösen) von Arbeitsaufgaben basierend auf dem Status der untergeordneten Elemente zu automatisieren. Es gibt zwei Hauptszenarien, die wir lösen möchten.
- Wenn ein einzelnes untergeordnetes Element aktiviert wird, aktivieren Sie das übergeordnete Element.
- Wenn alle untergeordneten Elemente geschlossen sind, schließen Sie das übergeordnete Element (oder lösen Sie es auf).
Um diese Einstellungen zu aktivieren, klicken Sie auf die Konfiguration der Backlogebene für Ihr Team. Wechseln Sie dann zur Registerkarte "Automatisierungsregeln>", um die beiden verschiedenen Regeln anzuzeigen, die Sie auf Ihren Backlog anwenden können. Jede Backlog-Ebene (Anforderungen, Features, Epen) kann je nachdem, wie Ihr Team arbeiten möchte, unterschiedlich konfiguriert werden.
Wenn beispielsweise eine untergeordnete Aufgabe auf "Aktiv" festgelegt ist, wird der übergeordnete Benutzerabschnitt aktiviert. Wenn dann alle Aufgaben abgeschlossen sind, legen Sie den Benutzerabschnitt auf "Geschlossen" fest.
Weitere Informationen zu diesem Feature finden Sie in der Dokumentation und in diesem Blogbeitrag.
Dieses Feature wurde basierend auf diesem Entwicklercommunity Vorschlagsticket priorisiert.
Azure Pipelines
Veraltete Vorgänge vor dem 31. Januar aktualisieren
Am 31. Januar 2024 werden veraltete Vorgänge eingestellt. Um Ihnen bei der Identifizierung der Pipelines zu helfen, die diese Aufgaben verwenden, haben wir eine Warnmeldung mit einer vorgeschlagenen Alternative eingefügt. Wir empfehlen Ihnen, Ihre Pipelines zu aktualisieren, um eine neuere Aufgabenversion oder eine Alternative vor dem 31. Januar 2024 zu verwenden.
Siehe frühere Ankündigungen im Zusammenhang mit veralteten Aufgaben:
- Ankündigung der Einstellung veralteter Aufgaben
- Ankündigung für NuGet Restore v1- und NuGet Installer v0-Pipelineaufgaben
Von Microsoft gehostete Agents verwenden PowerShell 7.4
Alle von Microsoft gehosteten Agents beginnen ab dem 28. Januar mit PowerShell 7.2 LTS mit PowerShell 7.4 LTS. Sehen Sie sich die Neuerungen in PowerShell 7.4 und PowerShell 7.4 general availability an.
Notieren Sie sich wichtige Änderungen, und aktualisieren Sie Ihre Skripts entsprechend:
- Unterbrechen von Änderungen zwischen PowerShell 7.3 und 7.4 LTS
- Unterbrechen von Änderungen zwischen PowerShell 7.2 LTS & 7.3
- Aktualisiertes Argumentanalyseverhalten, das über
$PSNativeCommandArgumentPassing
. Das folgende Beispielskript erzwingt das gleiche Verhalten für Linux, macOS und Windows durch explizite Einstellung$PSNativeCommandArgumentPassing
.
Neue Azure-Dienstverbindungsgeheimnisse laufen in drei Monaten ab
Azure Service Connections, bei denen Azure DevOps den geheimen Schlüssel erstellt, hat einen geheimen Ablauf von drei Monaten statt zwei Jahren.
Um die Notwendigkeit zu vermeiden, geheime Schlüssel zu drehen, konvertieren Sie stattdessen Ihre Dienstverbindung in die Verwendung des Workload-Identitätsverbunds . Sie können das folgende Beispielskript verwenden, um schnell mehrere Azure-Dienstverbindungen in den Workload-Identitätsverbund zu konvertieren:
#!/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)'"
}
Nächste Schritte
Hinweis
Diese Features werden in den nächsten zwei bis drei Wochen eingeführt.
Wechseln Sie zu Azure DevOps, und sehen Sie sich an.
Senden von Feedback
Wir würden uns freuen zu hören, was Sie zu diesen Features halten. Verwenden Sie das Hilfemenü, um ein Problem zu melden oder einen Vorschlag bereitzustellen.
Sie können auch Ratschläge und Ihre Fragen von der Community in Stack Overflow beantworten lassen.
Vielen Dank,
Dan Hellem