Algemene beschikbaarheid van teamautomatiseringsregels en verbeterde AB#-validatie

We zijn verheugd om aan te kondigen dat verbeterde AB#-validatie door de Azure Boards-app in GitHub en teamautomatiseringsregels algemeen beschikbaar zijn. We hebben ab#-validatie verbeterd, zodat u een melding krijgt wanneer een koppeling naar een werkitem ongeldig is. In Regels voor teamautomatisering kunt u nu elk achterstandsniveau configureren om het openen en sluiten/omzetten van werkitems te automatiseren op basis van de status(s) van het onderliggende item.

Met deze update introduceren we ook ondersteuning voor aangepaste CodeQL-query's in codescans. Hiermee kunt u uw eigen query's maken die zijn afgestemd op het identificeren van problemen die specifiek zijn voor uw codebasis.

Bekijk de releaseopmerkingen voor meer informatie.

GitHub Advanced Security voor Azure DevOps

Azure Boards

Azure-pipelines

GitHub Advanced Security voor Azure DevOps

Aangepaste CodeQL-query's worden nu ondersteund in GitHub Advanced Security for Azure DevOps

We zijn blij om de introductie van ondersteuning voor aangepaste CodeQL-query's in codescans aan te kondigen. Hiermee kunt u uw eigen query's maken die zijn afgestemd op het identificeren van problemen die specifiek zijn voor uw codebasis. U kunt nu pakketten met aangepaste query's maken en publiceren, deze query's uitvoeren in uw pijplijnen en de detectie van beveiligingsproblemen aanpassen die relevant zijn voor uw organisatie.

Zie codescanwaarschuwingen voor GitHub Advanced Security voor Azure DevOps voor meer informatie over het gebruik van aangepaste query's voor codescans in GitHub Advanced Security voor Azure DevOps.

We waarderen uw invoer. Als u vragen of feedback hebt, raden we u aan om contact op te nemen met onze community bij Developer Community.

Azure Boards

GitHub-integratie: verbeterde AB#-validatie is algemeen beschikbaar

Enkele sprints geleden hebben we de preview aangekondigd voor verbeterde AB#-validatie door de Azure Boards-app in GitHub. We hebben de app verbeterd om gebruikers beter op de hoogte te stellen van de geldigheid van werkitemkoppelingen, zodat ze eventuele problemen kunnen opsporen en oplossen voordat een pull-aanvraag wordt samengevoegd.

Na enkele weken testen en feedback is deze functie nu beschikbaar voor alle gebruikers met behulp van de integratie van GitHub + Azure Boards.

Screenshots of improved validation.

Dit is de eerste van verschillende functies die we maken om de huidige integratie te verbeteren. Bekijk de andere Azure Boards + GitHub-integratiefuncties die we hebben gepland op de openbare roadmap.

Team Automation-regels zijn algemeen beschikbaar

We kondigen graag de release van deze functie aan voor alle klanten van Azure DevOps Service.

Notitie

Deze functie wordt de komende twee tot drie weken uitgerold. Het is mogelijk pas begin februari 2024 beschikbaar voor uw organisatie.

U kunt nu elk achterstandsniveau configureren om het openen en sluiten van werkitems te automatiseren op basis van de status van de onderliggende items. Er zijn twee hoofdscenario's die we proberen op te lossen.

  • Wanneer één onderliggend item is geactiveerd, activeert u het bovenliggende item.
  • Wanneer alle onderliggende items zijn gesloten, sluit u het bovenliggende item (of lost u dit op).

Als u deze instellingen wilt inschakelen, klikt u op de configuratie op achterstandsniveau voor uw team. Ga vervolgens naar het tabblad Automation-regels > om de twee verschillende regels te zien die u op uw achterstand kunt toepassen. Elk achterstandsniveau (vereisten, functies, epics) kan anders worden geconfigureerd, afhankelijk van hoe uw team wil werken.

Screenshots of team settings.

Als een onderliggende taak bijvoorbeeld is ingesteld op Actief, moet u het bovenliggende gebruikersverhaal actief maken. Wanneer alle taken zijn voltooid, stelt u vervolgens het gebruikersverhaal in op Gesloten.

Gif to demo closing user story.

Lees de documentatie en dit blogbericht voor meer informatie over deze functie.

Deze functie heeft prioriteit gekregen op basis van dit ticket voor ontwikkelaarscommunitysuggesties.

Azure-pipelines

Afgeschafte taken vóór 31 januari bijwerken

Op 31 januari 2024 worden afgeschafte taken buiten gebruik gesteld. Om u te helpen de pijplijnen te identificeren die deze taken gebruiken, hebben we een waarschuwingsbericht opgenomen met een voorgesteld alternatief. We raden u aan uw pijplijnen bij te werken voor het gebruik van een nieuwere taakversie of een alternatief vóór 31 januari 2024.

Screenshot of task-specific deprecation warnings.

Bekijk eerdere aankondigingen met betrekking tot afgeschafte taken:

Door Microsoft gehoste agents gebruiken PowerShell 7.4

Alle door Microsoft gehoste agents gaan vanaf 28 januari powerShell 7.2 LTS gebruiken voor PowerShell 7.4 LTS. Bekijk wat er nieuw is in PowerShell 7.4 en Algemene beschikbaarheid van PowerShell 7.4.

Noteer belangrijke wijzigingen en werk uw scripts dienovereenkomstig bij:

Nieuwe azure-serviceverbindingsgeheimen verlopen over drie maanden

Azure Service-Verbinding maken ionen waarbij Azure DevOps het geheim maakt, heeft een verlooptijd van drie maanden in plaats van twee jaar.

Als u wilt voorkomen dat geheimen moeten worden gedraaid, converteert u uw serviceverbinding om in plaats daarvan workloadidentiteitsfederatie te gebruiken. U kunt het onderstaande voorbeeldscript gebruiken om snel meerdere Azure-serviceverbindingen te converteren naar workloadidentiteitsfederatie:

#!/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)'"
}

Volgende stappen

Notitie

Deze functies worden de komende twee tot drie weken uitgerold.

Ga naar Azure DevOps en kijk eens.

Feedback geven

We horen graag wat u van deze functies vindt. Gebruik het Help-menu om een probleem te melden of een suggestie op te geven.

Make a suggestion

U kunt ook advies krijgen en uw vragen beantwoorden door de community op Stack Overflow.

Met vriendelijke groet,

Dan Hellem