Ketersediaan umum aturan otomatisasi Tim dan validasi AB# yang ditingkatkan

Kami sangat senang mengumumkan bahwa validasi AB# yang ditingkatkan oleh Aplikasi Azure Boards di GitHub dan aturan Team Automation umumnya tersedia! Kami meningkatkan validasi AB# sehingga Anda bisa mendapatkan pemberitahuan ketika tautan ke item kerja tidak valid. Di Aturan Otomatisasi Tim, Anda sekarang dapat mengonfigurasi setiap tingkat backlog untuk mengotomatiskan pembukaan dan penutupan/penyelesaian item kerja berdasarkan status item anak.

Dengan pembaruan ini, kami juga memperkenalkan dukungan untuk kueri CodeQL kustom dalam Pemindaian kode! Ini akan memungkinkan Anda membuat kueri Anda sendiri yang disesuaikan untuk mengidentifikasi masalah khusus untuk basis kode Anda.

Lihat catatan rilis untuk detailnya.

GitHub Advanced Security untuk Azure DevOps

Azure Boards

Azure Pipelines

GitHub Advanced Security untuk Azure DevOps

Kueri CodeQL kustom sekarang didukung di GitHub Advanced Security untuk Azure DevOps

Kami sangat senang mengumumkan pengenalan dukungan untuk kueri CodeQL kustom dalam Pemindaian kode! Ini memungkinkan Anda membuat kueri Anda sendiri yang disesuaikan untuk mengidentifikasi masalah khusus untuk basis kode Anda. Sekarang, Anda dapat membuat dan menerbitkan paket yang berisi kueri kustom, menjalankan kueri ini di alur Anda, dan menyesuaikan deteksi kerentanan yang berkaitan dengan organisasi Anda.

Untuk informasi selengkapnya tentang menggunakan kueri kustom untuk pemindaian kode di GitHub Advanced Security untuk Azure DevOps, lihat Pemberitahuan pemindaian kode untuk GitHub Advanced Security untuk Azure DevOps.

Kami menghargai input Anda. Jika Anda memiliki pertanyaan atau umpan balik, kami mendorong Anda untuk terlibat dengan komunitas kami di Komunitas Pengembang.

Azure Boards

Integrasi GitHub - Validasi AB# yang ditingkatkan umumnya tersedia

Beberapa sprint yang lalu kami mengumumkan pratinjau untuk peningkatan validasi AB# oleh Aplikasi Azure Boards di GitHub. Kami telah meningkatkan aplikasi untuk memberi tahu pengguna dengan lebih baik tentang validitas tautan item kerja, membantu mereka menemukan dan memperbaiki masalah apa pun sebelum menggabungkan Permintaan Pull.

Setelah beberapa minggu pengujian dan umpan balik, fitur ini sekarang tersedia untuk semua pengguna menggunakan integrasi GitHub + Azure Boards.

Screenshots of improved validation.

Ini adalah fitur pertama dari beberapa fitur yang kami buat untuk meningkatkan integrasi saat ini. Pastikan untuk memeriksa fitur integrasi Azure Boards + GitHub lainnya yang telah kami rencanakan pada peta jalan publik.

Aturan Automasi Tim umumnya tersedia

Kami dengan senang hati mengumumkan rilis fitur ini kepada semua pelanggan Azure DevOps Service.

Catatan

Fitur ini akan diluncurkan selama dua hingga tiga minggu ke depan. Ini mungkin tidak tersedia untuk organisasi Anda hingga awal Februari 2024.

Anda sekarang dapat mengonfigurasi setiap tingkat backlog untuk mengotomatiskan pembukaan dan penutupan (atau penyelesaian) item kerja berdasarkan status item anak. Ada dua skenario utama yang kami coba pecahkan.

  • Saat satu item anak diaktifkan, aktifkan induk.
  • Ketika semua item anak ditutup, tutup induk (atau atasi).

Untuk mengaktifkan pengaturan ini, klik konfigurasi tingkat backlog untuk tim Anda. Kemudian buka tab Aturan Otomatisasi > untuk melihat dua aturan berbeda yang dapat Anda terapkan ke backlog Anda. Setiap tingkat backlog (persyaratan, fitur, epik) dapat dikonfigurasi secara berbeda tergantung pada cara kerja tim Anda.

Screenshots of team settings.

Misalnya, ketika tugas turunan diatur ke Aktif, buat Cerita Pengguna induk aktif. Kemudian, ketika semua Tugas selesai, atur Cerita Pengguna ke Ditutup.

Gif to demo closing user story.

Anda dapat mempelajari lebih lanjut tentang fitur ini dengan meninjau dokumentasi dan posting blog ini.

Fitur ini diprioritaskan berdasarkan tiket saran Komunitas Pengembang ini.

Azure Pipelines

Memperbarui tugas yang tidak digunakan lagi sebelum 31 Januari

Kami menghentikan tugas yang tidak digunakan lagi pada 31 Januari 2024. Untuk membantu Anda mengidentifikasi alur yang menggunakan tugas-tugas ini, kami telah menyertakan pesan peringatan dengan alternatif yang disarankan. Kami mendorong Anda untuk memperbarui alur Anda untuk menggunakan versi tugas yang lebih baru atau alternatif sebelum 31 Januari 2024.

Screenshot of task-specific deprecation warnings.

Lihat pengumuman sebelumnya yang terkait dengan tugas yang tidak digunakan lagi:

Agen yang dihosting Microsoft menggunakan PowerShell 7.4

Semua agen yang dihosting Microsoft akan mulai menggunakan PowerShell 7.2 LTS ke PowerShell 7.4 LTS mulai 28 Januari. Lihat Apa yang Baru di Ketersediaan Umum PowerShell 7.4 dan PowerShell 7.4.

Catat perubahan yang melanggar dan perbarui skrip Anda dengan sesuai:

Rahasia koneksi layanan Azure baru kedaluwarsa dalam tiga bulan

Azure Service Koneksi ions tempat Azure DevOps membuat rahasia, akan memiliki kedaluwarsa rahasia tiga bulan alih-alih dua tahun.

Untuk menghilangkan kebutuhan untuk memutar rahasia, konversikan koneksi layanan Anda untuk menggunakan federasi identitas Beban Kerja sebagai gantinya. Anda dapat menggunakan contoh skrip di bawah ini untuk mengonversi beberapa koneksi layanan Azure dengan cepat ke federasi identitas Beban Kerja:

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

Langkah berikutnya

Catatan

Fitur-fitur ini akan diluncurkan selama dua hingga tiga minggu ke depan.

Buka Azure DevOps dan lihat.

Cara memberikan umpan balik

Kami akan senang mendengar apa yang Anda pikirkan tentang fitur-fitur ini. Gunakan menu bantuan untuk melaporkan masalah atau memberikan saran.

Make a suggestion

Anda juga bisa mendapatkan saran dan pertanyaan yang dijawab oleh komunitas di Stack Overflow.

Terima kasih,

Dan Hellem