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

Azure Pipelines

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.

Screenshots of improved validation.

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.

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 Standard Szenarien, 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.

Screenshots of team settings.

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.

Gif to demo closing user story.

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.

Screenshot of task-specific deprecation warnings.

Siehe frühere Ankündigungen im Zusammenhang mit veralteten Aufgaben:

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:

Neue Azure-Dienstverbindungsgeheimnisse laufen in drei Monaten ab

Azure Service Verbinden ions, 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.

Make a suggestion

Sie können auch Ratschläge und Ihre Fragen von der Community in Stack Overflow beantworten lassen.

Vielen Dank,

Dan Hellem