Bagikan melalui


Menggunakan variabel dalam alur rilis Klasik

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

Menggunakan variabel dalam alur rilis Klasik adalah cara mudah untuk bertukar dan mengangkut data ke seluruh alur Anda. Setiap variabel disimpan sebagai string dan nilainya dapat berubah di antara eksekusi alur.

Tidak seperti parameter Runtime, yang hanya tersedia pada waktu penguraian templat, variabel dalam alur rilis Klasik dapat diakses di seluruh proses penyebaran

Saat menyiapkan tugas untuk menyebarkan aplikasi Anda di setiap tahap alur rilis Klasik, variabel dapat membantu Anda:

  • Menyederhanakan penyesuaian: Tentukan alur penyebaran generik sekali dan mudah menyesuaikannya untuk tahap yang berbeda. Misalnya, gunakan variabel untuk mewakili string koneksi penyebaran web, menyesuaikan nilainya sesuai kebutuhan untuk setiap tahap. Ini dikenal sebagai variabel kustom.

  • Memanfaatkan informasi kontekstual: Detail akses tentang konteks rilis, seperti tahap, artefak, atau agen yang menjalankan penyebaran. Misalnya, skrip Anda mungkin memerlukan lokasi build untuk diunduh, atau direktori kerja agen untuk membuat file sementara. Ini disebut sebagai variabel default.

Catatan

Untuk alur YAML, lihat variabel yang ditentukan pengguna dan variabel yang telah ditentukan sebelumnya untuk detail selengkapnya.

Variabel default

Variabel default memberikan informasi penting tentang konteks eksekusi untuk tugas dan skrip anda yang sedang berjalan. Variabel ini memungkinkan Anda mengakses detail tentang sistem, rilis, tahap, atau agen tempat mereka berjalan.

Dengan pengecualian System.Debug, variabel default bersifat baca-saja, dengan nilainya secara otomatis diatur oleh sistem.

Beberapa variabel paling signifikan dijelaskan dalam tabel berikut. Untuk melihat daftar lengkap, lihat Menampilkan nilai saat ini dari semua variabel.

Variabel sistem

Nama variabel Deskripsi
System.TeamFoundationServerUri URL koneksi layanan di Azure Pipelines. Gunakan ini dari skrip atau tugas Anda untuk memanggil REST API Azure Pipelines.

Contoh: https://fabrikam.vsrm.visualstudio.com/
System.TeamFoundationCollectionUri URL koleksi Team Foundation atau Azure Pipelines. Gunakan ini dari skrip atau tugas Anda untuk memanggil REST API di layanan lain seperti kontrol Build dan Versi.

Contoh: https://dev.azure.com/fabrikam/
System.CollectionId ID koleksi tempat build atau rilis ini berada.

Contoh: 6c6f3423-1c84-4625-995a-f7f143a1e43d
System.DefinitionId ID alur rilis tempat rilis saat ini berada.

Contoh: 1
System.TeamProject Nama proyek tempat build atau rilis ini berada.

Contoh: Fabrikam
System.TeamProjectId ID proyek tempat build atau rilis ini berada.

Contoh: 79f5c12e-3337-4151-be41-a268d2c73344
System.ArtifactsDirectory Direktori tempat artefak diunduh selama penyebaran rilis. Direktori dibersihkan sebelum setiap penyebaran jika memerlukan artefak untuk diunduh ke agen. Sama seperti Agent.ReleaseDirectory dan System.DefaultWorkingDirectory.

Contoh: C:\agent\_work\r1\a
System.DefaultWorkingDirectory Direktori tempat artefak diunduh selama penyebaran rilis. Direktori dibersihkan sebelum setiap penyebaran jika memerlukan artefak untuk diunduh ke agen. Sama seperti Agent.ReleaseDirectory dan System.ArtifactsDirectory.

Contoh: C:\agent\_work\r1\a
System.WorkFolder Direktori kerja untuk agen ini, tempat subfolder dibuat untuk setiap build atau rilis. Sama seperti Agent.RootDirectory dan Agent.WorkFolder.

Contoh: C:\agent\_work
System.Debug Ini adalah satu-satunya variabel sistem yang dapat diatur oleh pengguna. Atur ini ke true untuk menjalankan rilis dalam mode debug untuk membantu dalam pencarian kesalahan.

Contoh: true

Variabel rilis

Nama variabel Deskripsi
Release.AttemptNumber Frekuensi rilis ini disebarkan dalam tahap ini.

Contoh: 1
Release.DefinitionEnvironmentId ID tahap dalam alur rilis yang sesuai.

Contoh: 1
Release.DefinitionId ID alur rilis tempat rilis saat ini berada.

Contoh: 1
Release.DefinitionName Nama alur rilis tempat rilis saat ini berada.

Contoh: fabrikam-cd
Release.Deployment.RequestedFor Nama tampilan identitas yang memicu (memulai) penyebaran yang saat ini sedang berlangsung.

Contoh: Mateo Escobedo
Release.Deployment.RequestedForEmail Alamat email identitas yang memicu (memulai) penyebaran yang saat ini sedang berlangsung.

Contoh: mateo@fabrikam.com
Release.Deployment.RequestedForId ID identitas yang memicu (memulai) penyebaran yang saat ini sedang berlangsung.

Contoh: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.DeploymentID ID penyebaran. Unik per pekerjaan.

Contoh: 254
Release.DeployPhaseID ID fase tempat penyebaran berjalan.

Contoh: 127
Release.EnvironmentId ID instans tahap dalam rilis tempat penyebaran saat ini sedang berlangsung.

Contoh: 276
Release.EnvironmentName Nama tahap tempat penyebaran saat ini sedang berlangsung.

Contoh: Dev
Release.EnvironmentUri URI instans tahap dalam rilis tempat penyebaran saat ini sedang berlangsung.

Contoh: vstfs://ReleaseManagement/Environment/276
Release.Environments. {stage-name}.status Status penyebaran tahapan.

Contoh: InProgress
Release.PrimaryArtifactSourceAlias Alias sumber artefak utama.

Contoh: fabrikam\_web
Release.Reason Alasan penyebaran. Nilai yang didukung adalah:
ContinuousIntegration - rilis dimulai dalam Penyebaran Berkelanjutan setelah build selesai.
Manual - rilis dimulai secara manual.
None - alasan penyebaran belum ditentukan.
Schedule - rilis dimulai dari jadwal.
Release.ReleaseDescription Deskripsi teks yang disediakan pada saat rilis.

Contoh: Critical security patch
Release.ReleaseId Pengidentifikasi rekaman rilis saat ini.

Contoh: 118
Release.ReleaseName Nama rilis saat ini.

Contoh: Release-47
Release.ReleaseUri URI rilis saat ini.

Contoh: vstfs://ReleaseManagement/Release/118
Release.ReleaseWebURL URL untuk rilis ini.

Contoh: https://dev.azure.com/fabrikam/f3325c6c/_release?releaseId=392&_a=release-summary
Release.RequestedFor Nama tampilan identitas yang memicu rilis.

Contoh: Mateo Escobedo
Release.RequestedForEmail Alamat email identitas yang memicu rilis.

Contoh: mateo@fabrikam.com
Release.RequestedForId ID identitas yang memicu rilis.

Contoh: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.SkipArtifactsDownload Nilai Boolean yang menentukan apakah akan melewati pengunduhan artefak ke agen atau tidak.

Contoh: FALSE
Release.TriggeringArtifact.Alias Alias artefak yang memicu rilis. Ini kosong ketika rilis dijadwalkan atau dipicu secara manual.

Contoh: fabrikam\_app

Variabel tahap rilis

Nama variabel Deskripsi
Release.Environments. {nama tahap}. Keadaan Status penyebaran rilis ini dalam tahap tertentu.

Contoh: NotStarted

Variabel agen

Nama variabel Deskripsi
Agent.Name Nama agen seperti yang terdaftar di kumpulan agen. Ini kemungkinan berbeda dari nama komputer.

Contoh: fabrikam-agent
Agent.MachineName Nama komputer tempat agen dikonfigurasi.

Contoh: fabrikam-agent
Agent.Version Versi perangkat lunak agen.

Contoh: 2.109.1
Agent.JobName Nama pekerjaan yang berjalan, seperti Rilis atau Build.

Contoh: Release
Agent.HomeDirectory Folder tempat agen diinstal. Folder ini berisi kode dan sumber daya untuk agen.

Contoh: C:\agent
Agent.ReleaseDirectory Direktori tempat artefak diunduh selama penyebaran rilis. Direktori dibersihkan sebelum setiap penyebaran jika memerlukan artefak untuk diunduh ke agen. Sama seperti System.ArtifactsDirectory dan System.DefaultWorkingDirectory.

Contoh: C:\agent\_work\r1\a
Agent.RootDirectory Direktori kerja untuk agen ini, tempat subfolder dibuat untuk setiap build atau rilis. Sama seperti Agent.WorkFolder dan System.WorkFolder.

Contoh: C:\agent\_work
Agent.WorkFolder Direktori kerja untuk agen ini, tempat subfolder dibuat untuk setiap build atau rilis. Sama seperti Agent.RootDirectory dan System.WorkFolder.

Contoh: C:\agent\_work
Agent.DeploymentGroupId ID grup penyebaran tempat agen terdaftar. Ini hanya tersedia dalam pekerjaan grup penyebaran.

Contoh: 1

Merilis variabel Artefak

Untuk setiap artefak yang dirujuk dalam rilis, Anda dapat menggunakan variabel artefak berikut. Perhatikan bahwa tidak semua variabel berlaku untuk setiap jenis artefak. Tabel di bawah ini mencantumkan variabel artefak default dan memberikan contoh nilainya berdasarkan jenis artefak. Jika contoh kosong, itu menunjukkan bahwa variabel tidak berlaku untuk jenis artefak tersebut.

{alias} Ganti tempat penampung dengan nilai yang Anda tentukan untuk alias sumber artefak atau dengan nilai default yang dihasilkan untuk alur rilis.

Nama variabel Deskripsi
Release.Artifacts. {alias}. DefinitionId Pengidentifikasi alur atau repositori build. Contoh:

Azure Pipelines: 1
GitHub: fabrikam/asp
Release.Artifacts. {alias}. DefinitionName Nama alur atau repositori build. Contoh:

Azure Pipelines: fabrikam-ci
TFVC: $/fabrikam
Git: fabrikam
GitHub: fabrikam/asp (main)
Release.Artifacts. {alias}. BuildNumber Nomor build atau pengidentifikasi penerapan. Contoh:

Azure Pipelines: 20170112.1
Jenkins: 20170112.1
TFVC: Changeset 3
Git: 38629c964
GitHub: 38629c964
Release.Artifacts. {alias}. BuildId Pengidentifikasi build. Contoh:

Azure Pipelines: 130
Jenkins: 130
GitHub: 38629c964d21fe405ef830b7d0220966b82c9e11
Release.Artifacts. {alias}. BuildURI URL untuk build. Contoh:

Azure Pipelines: vstfs://build-release/Build/130
GitHub: https://github.com/fabrikam/asp
Release.Artifacts. {alias}. SourceBranch Jalur lengkap dan nama cabang tempat sumber dibangun. Contoh:

Azure Pipelines: refs/heads/main
Release.Artifacts. {alias}. SourceBranchName Nama hanya cabang tempat sumber dibangun. Contoh:

Azure Pipelines: main
Release.Artifacts. {alias}. SourceVersion Penerapan yang dibangun. Contoh:

Azure Pipelines: bc0044458ba1d9298cdc649cb5dcf013180706f7
Release.Artifacts. {alias}. Repositori.Provider Jenis repositori tempat sumber dibangun. Contoh:

Azure Pipelines: Git
Release.Artifacts. {alias}. RequestedForID Pengidentifikasi akun yang memicu build. Contoh:

Azure Pipelines: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.Artifacts. {alias}. DimintaUntuk Nama akun yang meminta build. Contoh:

Azure Pipelines: Mateo Escobedo
Release.Artifacts. {alias}. Jenis Jenis sumber artefak, seperti Build.Examples

Azure Pipelines: Build
Jenkins: Jenkins
TFVC: TFVC
Git: Git
GitHub: GitHub
Release.Artifacts. {alias}. PullRequest.TargetBranch Jalur lengkap dan nama cabang yang merupakan target permintaan pull. Variabel ini diinisialisasi hanya jika rilis dipicu oleh alur permintaan pull. Contoh:

Azure Pipelines: refs/heads/main
Release.Artifacts. {alias}. PullRequest.TargetBranchName Nama hanya cabang yang merupakan target permintaan pull. Variabel ini diinisialisasi hanya jika rilis dipicu oleh alur permintaan pull. Contoh:

Azure Pipelines: main

Variabel Artefak Utama

Dalam alur rilis Klasik, jika Anda menggunakan beberapa artefak, Anda dapat menunjuknya sebagai artefak utama. Azure Pipelines kemudian akan mengisi variabel berikut untuk artefak utama yang ditunjuk.

Nama variabel Seperti
Build.DefinitionId Release.Artifacts. {Alias artefak utama}. DefinitionId
Build.DefinitionName Release.Artifacts. {Alias artefak utama}. DefinitionName
Build.BuildNumber Release.Artifacts. {Alias artefak utama}. BuildNumber
Build.BuildId Release.Artifacts. {Alias artefak utama}. BuildId
Build.BuildURI Release.Artifacts. {Alias artefak utama}. BuildURI
Build.SourceBranch Release.Artifacts. {Alias artefak utama}. SourceBranch
Build.SourceBranchName Release.Artifacts. {Alias artefak utama}. SourceBranchName
Build.SourceVersion Release.Artifacts. {Alias artefak utama}. SourceVersion
Build.Repository.Provider Release.Artifacts. {Alias artefak utama}. Repositori.Provider
Build.RequestedForID Release.Artifacts. {Alias artefak utama}. RequestedForID
Build.RequestedFor Release.Artifacts. {Alias artefak utama}. DimintaUntuk
Build.Type Release.Artifacts. {Alias artefak utama}. Jenis
Build.PullRequest.TargetBranch Release.Artifacts. {Alias artefak utama}. PullRequest.TargetBranch
Build.PullRequest.TargetBranchName Release.Artifacts. {Alias artefak utama}. PullRequest.TargetBranchName

Menggunakan variabel default

Anda dapat menggunakan variabel default dengan dua cara: sebagai parameter untuk tugas dalam alur rilis atau dalam skrip Anda.

Anda dapat menggunakan variabel default secara langsung sebagai input ke tugas. Misalnya, untuk meneruskan Release.Artifacts.{Artifact alias}.DefinitionName sebagai argumen ke tugas PowerShell untuk artefak dengan ASPNET4.CI sebagai aliasnya, Anda akan menggunakan $(Release.Artifacts.ASPNET4.CI.DefinitionName).

Cuplikan layar yang menampilkan cara menggunakan variabel default sebagai argumen.

Untuk menggunakan variabel default dalam skrip Anda, Anda harus terlebih dahulu mengganti . dalam nama variabel default dengan _. Misalnya, untuk mencetak nilai Release.Artifacts.{Artifact alias}.DefinitionName artefak dengan ASPNET4.CI sebagai aliasnya dalam skrip PowerShell, gunakan $env:RELEASE_ARTIFACTS_ASPNET4_CI_DEFINITIONNAME. Perhatikan bahwa alias asli, ASPNET4.CI, diganti dengan ASPNET4_CI.

Cuplikan layar yang menampilkan cara menggunakan variabel default dalam skrip PowerShell sebaris.

Variabel kustom

Variabel kustom dapat didefinisikan pada berbagai cakupan.

  • Grup Variabel: Gunakan grup variabel untuk berbagi nilai di semua definisi dalam proyek. Ini berguna ketika Anda ingin menggunakan nilai yang sama di seluruh definisi, tahapan, dan tugas dalam proyek, dan mengelolanya dari satu lokasi. Tentukan dan kelola grup variabel di Pustaka Alur>.

  • Variabel Alur Rilis: Gunakan variabel alur rilis untuk berbagi nilai di semua tahap dalam alur rilis. Ini sangat ideal untuk skenario di mana Anda memerlukan nilai yang konsisten di seluruh tahap dan tugas, dengan kemampuan untuk memperbaruinya dari satu lokasi. Tentukan dan kelola variabel ini di tab Variabel dari alur rilis . Di halaman Variabel Alur, atur daftar drop-down Cakupan ke Rilis saat menambahkan variabel.

  • Variabel Tahap: Gunakan variabel tahap untuk berbagi nilai dalam tahap tertentu dari alur rilis. Ini berguna untuk nilai yang berbeda dari tahap ke tahap tetapi konsisten di semua tugas dalam tahap. Tentukan dan kelola variabel ini di tab Variabel dari alur rilis . Di halaman Variabel Alur, atur daftar drop-down Cakupan ke lingkungan yang sesuai saat menambahkan variabel.

Menggunakan variabel kustom di tingkat proyek, alur rilis, dan tahap membantu Anda:

  • Hindari nilai duplikat, sehingga lebih mudah untuk memperbarui semua kemunculan dengan satu perubahan.

  • Amankan nilai sensitif dengan mencegahnya dilihat atau dimodifikasi oleh pengguna. Untuk menandai variabel sebagai aman (rahasia), pilih ikon di gembok samping variabel.

    Penting

    Nilai variabel tersembunyi (rahasia) disimpan dengan aman di server dan tidak dapat dilihat oleh pengguna setelah disimpan. Selama penyebaran, Azure Pipelines mendekripsi nilai-nilai ini saat dirujuk oleh tugas dan meneruskannya ke agen melalui saluran HTTPS yang aman.

Catatan

Membuat variabel kustom dapat menimpa variabel standar. Misalnya, jika Anda menentukan variabel Jalur kustom pada agen Windows, variabel tersebut akan menimpa variabel $env:Path, yang dapat mencegah PowerShell berjalan dengan benar.

Menggunakan variabel kustom

Untuk menggunakan variabel kustom dalam tugas Anda, sertakan nama variabel dalam tanda kurung dan mendahuluinya dengan $ karakter. Misalnya, jika Anda memiliki variabel bernama adminUserName, Anda dapat menyisipkan nilainya saat ini ke dalam tugas sebagai $(adminUserName).

Catatan

Variabel dari grup yang berbeda yang ditautkan ke alur pada cakupan yang sama (misalnya, pekerjaan atau tahapan) dapat bertentangan, yang mengarah ke hasil yang tidak dapat diprediksi. Untuk menghindari hal ini, pastikan bahwa variabel di semua grup variabel Anda memiliki nama yang unik.

Menentukan dan memodifikasi variabel Anda dalam skrip

Untuk menentukan atau mengubah variabel dari skrip, gunakan perintah pengelogan task.setvariable . Nilai variabel yang diperbarui dilingkup ke pekerjaan yang dijalankan dan tidak bertahan di seluruh pekerjaan atau tahapan. Perhatikan bahwa nama variabel diubah menjadi huruf besar, dengan "." dan " " diganti dengan "_".

Misalnya, Agent.WorkFolder menjadi AGENT_WORKFOLDER.

  • Di Windows, akses variabel ini sebagai %AGENT_WORKFOLDER% atau $env:AGENT_WORKFOLDER.
  • Di Linux dan macOS, gunakan $AGENT_WORKFOLDER.

Tip

Anda dapat menjalankan skrip pada:

Skrip batch

sauce Mengatur variabel dan secret.Sauce

@echo ##vso[task.setvariable variable=sauce]crushed tomatoes
@echo ##vso[task.setvariable variable=secret.Sauce;issecret=true]crushed tomatoes with garlic

Membaca variabel

Argumen

"$(sauce)" "$(secret.Sauce)"

Skrip

@echo off
set sauceArgument=%~1
set secretSauceArgument=%~2
@echo No problem reading %sauceArgument% or %SAUCE%
@echo But I cannot read %SECRET_SAUCE%
@echo But I can read %secretSauceArgument% (but the log is redacted so I do not spoil the secret)

Output konsol dari membaca variabel:

No problem reading crushed tomatoes or crushed tomatoes
But I cannot read 
But I can read ******** (but the log is redacted so I do not spoil the secret)

Menampilkan nilai saat ini dari semua variabel

  1. Pilih Rilis>Alur, lalu pilih alur rilis Anda.

  2. Buka tampilan ringkasan untuk rilis Anda, dan pilih tahap yang Anda minati. Dalam daftar langkah-langkah, pilih Inisialisasi pekerjaan.

    Cuplikan layar yang menampilkan langkah inisialisasi pekerjaan.

  3. Ini membuka log untuk langkah ini. Gulir ke bawah untuk melihat nilai yang digunakan oleh agen untuk pekerjaan ini.

    Cuplikan layar yang menampilkan variabel yang digunakan oleh agen.

Menjalankan rilis dalam mode debug

Menjalankan rilis dalam mode debug dapat membantu Anda mendiagnosis dan mengatasi masalah atau kegagalan dengan menampilkan informasi tambahan selama eksekusi rilis. Anda dapat mengaktifkan mode debug untuk seluruh rilis atau hanya untuk tugas dalam tahap rilis tertentu.

Tip

Jika Anda mengalami kesalahan yang terkait dengan koneksi layanan Azure ARM, lihat Cara: Memecahkan masalah koneksi layanan Azure Resource Manager untuk detail selengkapnya.