Bagikan melalui


Dukungan untuk ekspresi templat dalam definisi sumber daya repositori dan kontainer

Dengan pembaruan ini, kami menyertakan dukungan untuk ekspresi templat dalam definisi sumber daya repositori dan kontainer. Sekarang Anda dapat menggunakan ekspresi templat saat menentukan ref properti repository sumber daya dalam alur YAML untuk memilih cabang sumber daya repositori. Selain itu, kami telah menambahkan dukungan untuk ekspresi templat saat menentukan endpointproperti container , , volumesports, dan options sumber daya dalam alur YAML.

Lihat catatan rilis untuk detailnya.

Azure Boards

Azure Pipelines

Azure Boards

Sebelumnya, mengubah tautan item kerja memerlukan setidaknya tiga langkah untuk diselesaikan. Misalnya, untuk mengubah tautan induk ke tautan terkait, Anda perlu menyalin id item kerja, menghapus tautan induk, menambahkan tautan jenis baru yang sudah ada terkait, dan akhirnya menempelkan id yang disalin dan menyimpan. Ini adalah proses yang rumit.

Kami memecahkan masalah dengan memungkinkan Anda mengedit dan mengubah jenis tautan secara langsung. Anda dapat dengan cepat mengubah jenis tautan hanya dalam satu langkah.

Gif untuk demo edit jenis tautan item kerja.

Catatan

Fitur ini hanya akan tersedia dengan pratinjau New Boards Hubs.

Membuat titik akhir REST kueri sementara

Kami telah melihat beberapa instans penulis ekstensi yang mencoba menjalankan kueri yang tidak disimpan dengan meneruskan pernyataan Work Item Query Language (WIQL) melalui querystring. Ini berfungsi dengan baik kecuali Anda memiliki pernyataan WIQL besar yang mencapai batas browser pada panjang querystring. Untuk mengatasinya, kami telah membuat titik akhir REST baru untuk memungkinkan penulis alat menghasilkan kueri sementara. Menggunakan id dari respons untuk meneruskan melalui querystring menghilangkan masalah ini.

Pelajari selengkapnya di halaman dokumentasi REST API kueri sementara.

API penghapusan batch (pratinjau privat)

Saat ini, satu-satunya cara untuk menghapus item kerja dari keranjang sampah adalah dengan menggunakan REST API ini untuk menghapus satu per satu. Ini bisa menjadi proses yang lambat dan tunduk pada pembatasan laju ketika mencoba melakukan pembersihan massal apa pun. Sebagai respons, kami telah menambahkan titik akhir REST API baru untuk menghapus dan/atau menghancurkan item kerja dalam batch.

Jika Anda tertarik untuk berpartisipasi dalam pratinjau privat titik akhir baru ini, silakan kirim email kepada kami secara langsung.

@CurrentIteration makro dalam Paket Pengiriman

Dengan pembaruan ini, kami telah menambahkan dukungan untuk @CurrentIteration makro untuk gaya dalam Paket Pengiriman. Makro ini akan memungkinkan Anda mendapatkan iterasi saat ini dari konteks tim dari setiap baris dalam paket Anda.

Gif untuk mendemosikan makro CurrentIteration dalam Paket Pengiriman.

Azure Pipelines

Ekspresi Templat dalam Definisi Sumber Daya Repositori

Kami telah menambahkan dukungan untuk ekspresi templat saat menentukan ref properti repository sumber daya dalam alur YAML. Ini adalah fitur yang sangat diminta oleh Komunitas Pengembang kami.

Ada kasus penggunaan saat Anda ingin alur Anda memeriksa cabang yang berbeda dari sumber daya repositori yang sama.

Misalnya, Anda memiliki alur yang membangun repositorinya sendiri, dan untuk ini, perlu memeriksa pustaka dari repositori sumber daya. Selain itu, katakanlah Anda ingin alur Anda memeriksa cabang pustaka yang sama seperti yang digunakan sendiri. Misalnya, jika alur Anda berjalan di main cabang, alur harus memeriksa main cabang repositori pustaka. Jika alur berjalan di dev cabang, alur harus memeriksa dev cabang pustaka.

Hingga hari ini, Anda harus secara eksplisit menentukan cabang untuk dicek keluar, dan mengubah kode alur setiap kali cabang berubah.

Sekarang, Anda dapat menggunakan ekspresi templat untuk memilih cabang sumber daya repositori. Lihat contoh kode YAML berikut yang akan digunakan untuk cabang non-utama alur Anda:

resources:
  repositories:
    - repository: library
      type: git
      name: FabrikamLibrary
      ref: ${{ variables['Build.SourceBranch'] }}

steps:
- checkout: library
- script: echo ./build.sh
- script: echo ./test.sh

Saat menjalankan alur, Anda dapat menentukan cabang yang akan dicek keluar untuk library repositori.

Tentukan versi templat yang akan diperluas pada waktu antrean build

Templat mewakili cara yang bagus untuk mengurangi duplikasi kode dan meningkatkan keamanan alur Anda.

Salah satu kasus penggunaan populer adalah menampung templat di repositori mereka sendiri. Ini mengurangi kopling antara templat dan alur yang memperluasnya dan membuatnya lebih mudah untuk mengembangkan templat dan alur secara independen.

Pertimbangkan contoh berikut, di mana templat digunakan untuk memantau eksekusi daftar langkah. Kode templat terletak di repositori Templates .

# template.yml in repository Templates
parameters:
- name: steps
  type: stepList
  default: []

jobs:
- job:
  steps:
  - script: ./startMonitoring.sh
  - ${{ parameters.steps }}
  - script: ./stopMonitoring.sh

Katakanlah Anda memiliki alur YAML yang memperluas templat ini, yang terletak di repositori FabrikamFiber. Hingga hari ini, tidak mungkin untuk menentukan ref properti templates sumber daya repositori secara dinamis saat menggunakan repositori sebagai sumber templat. Ini berarti Anda harus mengubah kode alur jika Anda ingin alur Anda menjadi: memperluas templat dari cabang yang berbeda memperluas templat dari nama cabang yang sama dengan alur Anda, terlepas dari cabang mana Anda menjalankan alur Anda

Dengan pengenalan ekspresi templat dalam definisi sumber daya repositori, Anda dapat menulis alur Anda sebagai berikut:

resources:
  repositories:
    - repository: templates
      type: git
      name: Templates
      ref: ${{ variables['Build.SourceBranch'] }}

extends:
  template: template.yml@templates
  parameters:
    steps:
      - script: echo ./build.sh
      - script: echo ./test.sh

Dengan demikian, alur Anda akan memperluas templat di cabang yang sama dengan cabang tempat alur berjalan, sehingga Anda dapat memastikan cabang alur dan templat Anda selalu cocok. Artinya, jika Anda menjalankan alur Anda di cabang dev, itu akan memperluas templat yang ditentukan oleh template.yml file di dev cabang templates repositori.

Atau Anda dapat memilih, pada waktu antrean build, cabang repositori templat mana yang akan digunakan, dengan menulis kode YAML berikut.

parameters:
  - name: branch
    default: main

resources:
  repositories:
    - repository: templates
      type: git
      name: Templates
      ref: ${{ parameters.branch }}

extends:
  template: template.yml@templates
  parameters:
    steps:
      - script: echo ./build.sh
      - script: echo ./test.sh

Sekarang, Anda dapat memiliki alur Anda di cabang main memperluas templat dari cabang dev dalam satu eksekusi, dan memperluas templat dari cabang main dalam eksekusi lain, tanpa mengubah kode alur Anda.

Saat menentukan ekspresi templat untuk ref properti sumber daya repositori, Anda dapat menggunakan parameters dan variabel yang ditentukan sebelumnya sistem, tetapi Anda tidak dapat menggunakan variabel yang ditentukan UI YAML atau Alur.

Ekspresi Templat dalam Definisi Sumber Daya Kontainer

Kami telah menambahkan dukungan untuk ekspresi templat saat menentukan endpointproperti container , , volumesports, dan options sumber daya dalam alur YAML. Ini adalah fitur yang sangat diminta oleh Komunitas Pengembang kami.

Sekarang, Anda dapat menulis alur YAML seperti berikut ini.

parameters:
  - name: endpointName    
    default: AzDOACR
    type: string

resources:
  containers:
    - container: linux
      endpoint: ${{ parameters.endpointName }}
      image: fabrikamfiber.azurecr.io/ubuntu:latest

jobs:
- job:
  container: linux
  steps:
  - task: CmdLine@2
    inputs:
      script: 'echo Hello world'

Anda dapat menggunakan parameters. dan variables. dalam ekspresi templat Anda. Untuk variabel, Anda hanya dapat menggunakan yang ditentukan dalam file YAML, tetapi bukan yang ditentukan dalam UI Alur. Jika Anda menentukan ulang variabel, misalnya, menggunakan perintah log agen, itu tidak akan berpengaruh apa pun.

Peristiwa Audit untuk Perubahan Persetujuan

Persetujuan memungkinkan Anda mengontrol kapan tahap harus berjalan. Ini biasanya digunakan untuk mengontrol penyebaran ke lingkungan produksi. Audit memungkinkan Anda memenuhi persyaratan kepatuhan dan memantau keamanan organisasi Azure DevOps Anda.

Ketika pengguna diminta untuk menyetujui alur untuk disebarkan ke tahap tertentu, pengguna tersebut dapat memilih untuk menetapkan ulang persetujuan kepada orang lain.

Peristiwa Audit untuk Perubahan Persetujuan

Hingga saat ini, tindakan tersebut tidak dicatat dalam log Audit. Masalah ini sudah diperbaiki sekarang.

Log Audit akan berisi entri yang mirip dengan yang berikut ini.

[
    {
        "Id": "2517368925862632546;00000264-0000-8888-8000-000000000000;839ad1ba-f72b-4258-bc3f-88be7a4553b5",
        "CorrelationId": "aaaa0000-bb11-2222-33cc-444444dddddd",
        "ActivityId": "a298a06c-965f-4e60-9643-2593f2066e37",
        "ActorCUID": "fe950802-bf07-755b-826d-e8dcc066252c",
        "ActorUserId": "fe950802-bf07-755b-826d-e8dcc066252c",
        "ActorUPN": "silviu@fabrikam.app",
        "AuthenticationMechanism": "AAD_Cookie",
        "Timestamp": "2022-10-10T11:26:53.7367453Z",
        "ScopeType": "Organization",
        "ScopeDisplayName": "Fabrikam (Organization)",
        "ScopeId": "547a7316-cdf4-40d2-af16-3215f97d053e",
        "ProjectId": "4bf16944-3595-421f-9947-79d9eb190284",
        "ProjectName": "FabrikamFiber",
        "IpAddress": "127.0.0.1",
        "UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.37",
        "ActionId": "ApproverReassigned",
        "Data": {
            "ApprovalId": "dae6e7c9-2a10-4cd8-b63a-579a6e7ba78d",
            "OldApproverUserId": "692b6e2a-dd61-4872-866a-85498da390fc",
            "OldApproverDisplayName": "[FabrikamFiber]\\Build Administrators",
            "NewApproverUserId": "fe95080b-bf07-655b-226d-e8dcc066252c",
            "NewApproverDisplayName": "Jack Fabrikam",
            "Comment": "All admins are OOO"
        },
        "Details": "Reassigned approver of Approval dae6e7c9-9a10-4cd8-b63a-579a6e7ba78d in Project \"FabrikamFiber\" from \"[FabrikamFiber]\\Build Administrators\" to \"Jack Fabrikam\" with comment \"All admins are OOO\".",
        "Area": "Checks",
        "Category": "Modify",
        "CategoryDisplayName": "Modify",
        "ActorDisplayName": "Silviu"
    }
]

Selain itu, itu akan muncul di UI Audit.

Entri log di Antarmuka Pengguna Audit

Pustaka tugas mengekspos model hosting Agen

Penulis Tugas yang ingin menentukan apakah agen berjalan di kumpulan yang dihosting Microsoft atau sekarang tidak dapat menggunakan fungsi getAgentMode() Pustaka Tugas untuk menentukan model hosting. Ini bermanfaat dalam skenario di mana tugas ingin memengaruhi perilaku berdasarkan memiliki akses ke jaringan pelanggan atau tidak. Tugas dapat mencoba menjangkau layanan Azure melalui titik akhir privat jika dijalankan dari agen yang dihost sendiri atau agen set skala yang berada di jaringan pelanggan. Lihat referensi tugas.

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.

Buat saran

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

Terima kasih,

Vijay Machiraju