Takım otomasyonu kurallarının genel kullanılabilirliği ve geliştirilmiş AB# doğrulaması

GitHub'da Azure Boards Uygulaması tarafından geliştirilmiş AB# doğrulamasının ve Team Automation kurallarının genel kullanıma sunulduğunu duyurmaktan heyecan duyuyoruz! İş öğesinin bağlantısı geçerli olmadığında bildirim alabilmeniz için AB# doğrulamasını geliştirdik. Team Automation Kuralları'nda artık iş öğelerinin açılmasını ve kapatılmasını/çözülmesini alt öğenin durumlarına göre otomatikleştirmek için her kapsam düzeyini yapılandırabilirsiniz.

Bu güncelleştirmeyle, Kod taramada özel CodeQL sorguları için de destek sunacağız! Bu, kod tabanınıza özgü sorunları belirlemek için uyarlanmış kendi sorgularınızı oluşturmanıza olanak sağlar.

Ayrıntılar için sürüm notlarına göz atın.

Azure DevOps için GitHub Gelişmiş Güvenliği

Azure Boards

Azure Pipelines

Azure DevOps için GitHub Gelişmiş Güvenliği

Özel CodeQL sorguları artık Azure DevOps için GitHub Advanced Security'de destekleniyor

Kod taramada özel CodeQL sorguları için destek sunulduğunu duyurmaktan heyecan duyuyoruz! Bu, kod tabanınıza özgü sorunları belirlemek için uyarlanmış kendi sorgularınızı oluşturmanıza olanak tanır. Artık özel sorgular içeren paketler oluşturup yayımlayabilir, bu sorguları işlem hatlarınızda yürütebilir ve kuruluşunuzla ilgili güvenlik açıklarının algılanması özelleştirebilirsiniz.

Azure DevOps için GitHub Gelişmiş Güvenlik'te kod tarama için özel sorgular kullanma hakkında daha fazla bilgi için bkz . Azure DevOps için GitHub Gelişmiş Güvenlik için kod tarama uyarıları.

Girişinize değer veririz. Sorularınız veya geri bildirimleriniz varsa Geliştirici Topluluğu topluluğumuzla etkileşime geçmenizi öneririz.

Azure Boards

GitHub Tümleştirmesi - Geliştirilmiş AB# doğrulaması genel kullanıma sunuldu

Birkaç sprint önce GitHub'daki Azure Boards Uygulaması tarafından geliştirilmiş AB# doğrulaması önizlemesini duyurmuştuk. Uygulamayı, kullanıcılara iş öğesi bağlantılarının geçerliliğini daha iyi bildirecek şekilde iyileştirdik ve çekme isteğini birleştirmeden önce sorunları tespit etmelerine ve düzeltmelerine yardımcı olduk.

Birkaç haftalık test ve geri bildirimden sonra bu özellik artık GitHub + Azure Boards tümleştirmesini kullanan tüm kullanıcılar tarafından kullanılabilir.

Geliştirilmiş doğrulama ekran görüntüleri.

Bu, geçerli tümleştirmeyi geliştirmek için sunduğumuz çeşitli özelliklerden ilkidir. Genel yol haritasında planladığımız diğer Azure Boards + GitHub tümleştirme özelliklerini gözden geçirmeyi unutmayın.

Önemli

6/8/2024 itibarıyla GitHub'daki Azure Boards Uygulaması artık AB# bağlantılarını doğrulamayacaktır. Bu değişiklik öncesinde yapabileceğiniz gibi GitHub çekme isteklerinizdeki, işlemelerinizdeki ve sorunlarınızdaki iş öğelerini bağlamak için söz dizimini kullanmaya AB# devam edebilirsiniz.

Team Automation Kuralları genel kullanıma sunuldu

Bu özelliğin yayınlanmasını Azure DevOps Hizmeti'nin tüm müşterilerine duyurmaktan mutluluk duyuyoruz.

Not

Bu özellik önümüzdeki iki-üç hafta içinde kullanıma sunulacaktır. Şubat 2024'e kadar kuruluşunuz tarafından kullanılamayabilir.

Artık her kapsam düzeyini, alt öğelerin durumuna göre iş öğelerinin açılmasını ve kapatılmasını (veya çözülmesini) otomatikleştirmek için yapılandırabilirsiniz. Çözmeye çalıştığınız iki ana senaryo vardır.

  • Tek bir alt öğe etkinleştirildiğinde üst öğeyi etkinleştirin.
  • Tüm alt öğeler kapatıldığında üst öğeyi kapatın (veya çözümleyin).

Bu ayarları etkinleştirmek için ekibinizin kapsam düzeyi yapılandırmasına tıklayın. Ardından, kapsamınıza uygulayabileceğiniz iki farklı kuralı görmek için Otomasyon > Kuralları sekmesine gidin. Her kapsam düzeyi (gereksinimler, özellikler, epic'ler) ekibinizin nasıl çalışmak istediğine bağlı olarak farklı şekilde yapılandırılabilir.

Ekip ayarlarının ekran görüntüleri.

Örneğin, herhangi bir alt Görev Etkin olarak ayarlandığında, üst Kullanıcı Hikayesi'ni etkin hale getirin. Ardından, tüm Görevler tamamlandığında Kullanıcı Hikayesi'ni Kapalı olarak ayarlayın.

Gif'in tanıtım amaçlı kapanış kullanıcı hikayesi.

Belgeleri ve bu blog gönderisini gözden geçirerek bu özellik hakkında daha fazla bilgi edinebilirsiniz.

Bu özellik, bu Geliştirici Topluluğu öneri biletine göre önceliklendirildi.

Azure Pipelines

31 Ocak'a kadar kullanım dışı bırakılan görevleri güncelleştirme

Kullanım dışı bırakılan görevleri 31 Ocak 2024'te kullanımdan kaldırıyoruz. Bu görevleri kullanan işlem hatlarını belirlemenize yardımcı olmak için önerilen alternatifi içeren bir uyarı iletisi ekledik. İşlem hatlarınızı 31 Ocak 2024'e kadar daha yeni bir görev sürümü veya alternatif kullanacak şekilde güncelleştirmenizi öneririz.

Göreve özgü kullanımdan kaldırma uyarılarının ekran görüntüsü.

Kullanım dışı bırakılan görevlerle ilgili önceki duyurulara bakın:

Microsoft tarafından barındırılan aracılar PowerShell 7.4 kullanıyor

Microsoft tarafından barındırılan tüm aracılar 28 Ocak'tan itibaren PowerShell 7.2 LTS'den PowerShell 7.4 LTS'ye kullanmaya başlayacaktır. Bkz . PowerShell 7.4 ve PowerShell 7.4'teki Yenilikler Genel Kullanılabilirlik.

Hataya neden olan değişiklikleri not alın ve betiklerinizi uygun şekilde güncelleştirin:

Yeni Azure hizmeti bağlantı gizli dizilerinin süresi üç ay içinde doluyor

Azure DevOps'un gizli diziyi oluşturduğu Azure Hizmet Bağlantıları, iki yıl yerine üç aylık bir gizli dizi süresine sahip olur.

Gizli dizileri döndürme gereksinimini ortadan kaldırmak için hizmet bağlantınızı iş yükü kimlik federasyonu kullanacak şekilde dönüştürün. Birden çok Azure hizmeti bağlantısını İş yükü kimlik federasyonuna hızla dönüştürmek için aşağıdaki örnek betiği kullanabilirsiniz:

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

Sonraki adımlar

Not

Bu özellikler önümüzdeki iki-üç hafta içinde kullanıma sunulacaktır.

Azure DevOps'a gidin ve bir göz atın.

Geri bildirim sağlama

Bu özellikler hakkında düşüncelerinizi duymak isteriz. Bir sorunu bildirmek veya öneri sağlamak için yardım menüsünü kullanın.

Öneride bulunma

Stack Overflow'da topluluk tarafından öneriler ve sorularınıza yanıt alabilirsiniz.

Teşekkürler,

Dan Hellem