Mengonfigurasi nomor eksekusi atau build

Layanan Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019

Anda dapat menyesuaikan bagaimana eksekusi alur Anda diberi nomor. Nilai default untuk nomor eksekusi adalah $(Date:yyyyMMdd).$(Rev:r).

Di Azure DevOps $(Rev:r) adalah format variabel khusus yang hanya berfungsi di bidang nomor build. Ketika build selesai, jika tidak ada yang lain dalam nomor build yang telah berubah, Rev nilai bilangan bulat meningkat satu per satu.

$(Rev:r) mengatur ulang saat Anda mengubah bagian dari nomor build. Misalnya, jika Anda telah mengonfigurasi format nomor build sebagai $(Build.DefinitionName)_$(Date:yyyyMMdd).$(Rev:r), maka nomor build akan direset saat tanggal berubah keesokan harinya. Jika nomor build Anda adalah MyBuild_20230621.1, nomor build berikutnya hari itu adalah MyBuild_20230621.2. Keesokan harinya, nomor build adalah MyBuild_20230622.1.

Jika format nomor build Anda adalah 1.0.$(Rev:r), maka nomor build diatur ulang menjadi 1.0.1 saat Anda mengubah bagian dari angka. Misalnya, jika nomor build terakhir Anda adalah 1.0.3, dan Anda mengubah nomor build menjadi 1.1.$(Rev:r) untuk menunjukkan perubahan versi, nomor build berikutnya adalah 1.1.1.

Di YAML, properti ini dipanggil name dan harus berada di tingkat akar alur.

Catatan

Item yang ditentukan pada tingkat akar file YAML adalah properti alur .

Jika tidak ditentukan, eksekusi Anda diberi bilangan bulat unik sebagai namanya. Anda dapat memberi eksekusi nama yang jauh lebih berguna yang bermakna bagi tim Anda. Anda dapat menggunakan kombinasi token, variabel, dan karakter garis bawah. Properti name tidak berfungsi dalam file templat.

name: $(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd).$(Rev:r)

steps:
  - script: echo '$(Build.BuildNumber)' # outputs customized build number like project_def_master_20200828.1

Build YAML belum tersedia di TFS.

Contoh

Pada saat itu, eksekusi dimulai:

  • Nama proyek: Fabrikam

  • Nama alur: CIBuild

  • Cabang: utama

  • ID Build/ID Eksekusi: 752

  • Tanggal: 5 Mei 2019.

  • Waktu: 21:07:03.

  • Satu eksekusi selesai sebelumnya hari ini.

Jika Anda menentukan format nomor build ini:

$(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd).$(Rev:.r)

Kemudian eksekusi kedua pada hari ini akan diberi nama: Fabrikam_CIBuild_main_20190505.2

Token

Tabel berikut ini memperlihatkan bagaimana setiap token diselesaikan berdasarkan contoh sebelumnya. Anda hanya dapat menggunakan token ini untuk menentukan nomor eksekusi; mereka tidak bekerja di tempat lain di alur Anda.

Token Contoh nilai penggantian
$(Build.DefinitionName) CIBuild

Catatan: Nama alur tidak boleh berisi karakter yang tidak valid atau spasi kosong.
$(Build.BuildId) 752

$(Build.BuildId) adalah ID internal yang tidak dapat diubah yang juga disebut sebagai RUN ID. Ini unik di seluruh organisasi.
$(DayOfMonth) 5
$(DayOfYear) 217
$(Hours) 21
$(Minutes) 7
$(Month) 8
$(Rev:r) 2 (Eksekusi ketiga adalah 3, dan sebagainya.)

Gunakan $(Rev:r) untuk memastikan bahwa setiap build yang selesai memiliki nama yang unik. Saat build dimulai, jika tidak ada yang lain dalam nomor build yang telah berubah, nilai bilangan bulat Rev bertambah satu.

Jika Anda ingin menampilkan awalan nol dalam angka tersebut, Anda dapat menambahkan lebih banyak karakter 'r '. Misalnya, tentukan $(Rev:rr) jika Anda ingin nomor Rev dimulai dengan 01, 02, dan sebagainya. Jika Anda menggunakan Rev berpasangan nol sebagai bagian dari skema penomoran versi, perhatikan bahwa beberapa tugas alur atau alat populer, seperti paket NuGet, hapus nol di depan, yang menyebabkan ketidakcocokan nomor versi dalam artefak yang diproduksi.
$(Date:yyyyMMdd) 20090824

Anda dapat menentukan format tanggal lain seperti $(Date:MMddyy)
$(Seconds) 3
$(SourceBranchName) utama
$(TeamProject) Fabrikam
$(Year:yy) 09
$(Year:yyyy) 2009

Variabel

Anda juga dapat menggunakan variabel yang ditentukan pengguna dan telah ditentukan sebelumnya yang memiliki cakupan "Semua" di nomor Anda. Misalnya, jika Anda telah menentukan My.Variable, Anda dapat menentukan format angka berikut:

$(Build.DefinitionName)_$(Build.DefinitionVersion)_$(Build.RequestedFor)_$(Build.BuildId)_$(My.Variable)

Empat variabel pertama telah ditentukan sebelumnya. My.Variable ditentukan oleh Anda pada tab variabel.

Expressions

Jika Anda menggunakan ekspresi untuk mengatur nomor build, Anda tidak dapat menggunakan beberapa token karena nilainya tidak diatur pada ekspresi waktu dievaluasi. Token ini termasuk $(Build.BuildId), $(Build.BuildURL), dan $(Build.BuildNumber).

FAQ

Seberapa besar nomor eksekusi dan karakter apa yang dapat saya gunakan?

Eksekusi mungkin hingga 255 karakter. Karakter yang tidak diizinkan meliputi ", , /, :, ><, ', |, , ?, @, dan *. Anda tidak dapat mengakhiri dengan ..

Di zona waktu apa nilai waktu nomor build dinyatakan?

Zona waktu adalah UTC.

Zona waktu sama dengan zona waktu sistem operasi komputer tempat Anda menjalankan server tingkat aplikasi.

Bagaimana Anda dapat mereferensikan variabel nomor eksekusi dalam skrip?

Variabel nomor eksekusi dapat dipanggil dengan $(Build.BuildNumber). Anda dapat menentukan variabel baru yang menyertakan nomor eksekusi atau memanggil nomor eksekusi secara langsung. Dalam contoh ini, $(MyRunNumber) adalah variabel baru yang menyertakan nomor eksekusi.

# Set MyRunNumber
variables: 
  MyRunNumber: '1.0.0-CI+$(Build.BuildNumber)'


steps:
- script: echo $(MyRunNumber) # display MyRunNumber
- script: echo $(Build.BuildNumber) #display Run Number

Bagaimana cara mengatur nomor build secara dinamis dengan kondisi?

Anda dapat menggunakan variabel sebagai bagian dari nomor eksekusi Anda. Dalam contoh ini, variabel why berubah tergantung pada Build.Reason dan digunakan sebagai bagian dari nomor eksekusi.

variables:
  - name: why
    ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
      value: pr
    ${{ elseif eq(variables['Build.Reason'], 'Manual' ) }}:
      value: manual
    ${{ elseif eq(variables['Build.Reason'], 'IndividualCI' ) }}:
      value: indivci
    ${{ else }}:
      value: other

name: $(TeamProject)_$(SourceBranchName)_$(why)_$(Date:yyyyMMdd).$(Rev:.r)

pool:
  vmImage: 'ubuntu-latest'

steps:
- script: echo '$(Build.BuildNumber)' ## output run number