Variabel artefak dan rilis klasik

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

Variabel rilis dan artefak 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 Anda.

Variabel berbeda dari parameter Runtime yang hanya tersedia pada waktu penguraian templat.

Saat Anda menyusun tugas untuk menyebarkan aplikasi Anda ke setiap tahap dalam proses DEVOps CI/CD Anda, variabel akan membantu Anda untuk:

  • Tentukan alur penyebaran yang lebih umum sekali, lalu sesuaikan dengan mudah untuk setiap tahap. Misalnya, variabel dapat digunakan untuk mewakili string koneksi untuk penyebaran web, dan nilai variabel ini dapat diubah dari satu tahap ke tahap lainnya. Ini adalah variabel kustom.

  • Gunakan informasi tentang konteks rilis, tahap, artefak, atau agen tertentu tempat alur penyebaran dijalankan. Misalnya, skrip Anda mungkin memerlukan akses ke lokasi build untuk mengunduhnya, atau ke direktori kerja pada agen untuk membuat file sementara. Ini adalah variabel default.

Catatan

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

Variabel default

Informasi tentang konteks eksekusi tersedia untuk menjalankan tugas melalui variabel default. Tugas dan skrip Anda dapat menggunakan variabel ini untuk menemukan informasi tentang sistem, rilis, tahap, atau agen tempat mereka berjalan. Dengan pengecualian System.Debug, variabel ini bersifat baca-saja dan 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.

Tip

Anda dapat melihat nilai saat ini dari semua variabel untuk rilis , dan menggunakan variabel default untuk menjalankan rilis dalam mode debug.

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

Lepaskan

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

Tahap rilis

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

Contoh: NotStarted

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

Artefak Umum

Untuk setiap artefak yang dirujuk dalam rilis, Anda dapat menggunakan variabel artefak berikut. Tidak semua variabel bermakna untuk setiap jenis artefak. Tabel di bawah ini mencantumkan variabel artefak default dan menyediakan contoh nilai yang dimilikinya tergantung pada jenis artefak. Jika contoh kosong, itu menyiratkan bahwa variabel tidak diisi untuk jenis artefak tersebut.

{alias} Ganti tempat penampung dengan nilai yang Anda tentukan untuk alias 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
Contoh GitHub: fabrikam/asp
Release.Artifacts. {alias}. DefinitionName Nama alur atau repositori build.

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

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

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

Contoh Azure Pipelines: vstfs://build-release/Build/130
Contoh 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.

Contoh Azure Pipelines: Build
Contoh Jenkins: Jenkins
Contoh TeamCity: TeamCity
Contoh TFVC: TFVC
Contoh Git: Git
Contoh 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

Lihat juga Alias sumber artefak

Artefak Utama

Anda menunjuk salah satu artefak sebagai artefak utama dalam alur rilis. Untuk artefak utama yang ditunjuk, Azure Pipelines mengisi variabel berikut.

Nama variabel Sama 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 langsung menggunakan variabel default sebagai input ke tugas. Misalnya, untuk meneruskan Release.Artifacts.{Artifact alias}.DefinitionName sumber artefak yang aliasnya ASPNET4.CI ke tugas, Anda akan menggunakan $(Release.Artifacts.ASPNET4.CI.DefinitionName).

Menggunakan variabel artefak dalam argumen ke tugas Skrip PowerShell

Untuk menggunakan variabel default dalam skrip Anda, Anda harus terlebih dahulu mengganti . dalam nama variabel default dengan _. Misalnya, untuk mencetak nilai variabel Release.Artifacts.{Artifact alias}.DefinitionName artefak untuk sumber artefak yang aliasnya ASPNET4.CI dalam skrip PowerShell, Anda akan menggunakan $env:RELEASE_ARTIFACTS_ASPNET4_CI_DEFINITIONNAME.

Menggunakan variabel artefak dalam skrip PowerShell sebaris

Perhatikan bahwa nama asli alias sumber artefak, ASPNET4.CI, digantikan oleh ASPNET4_CI.

Menampilkan nilai saat ini dari semua variabel

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

    Membuka log untuk rilis

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

    Menampilkan nilai variabel dalam rilis

Menjalankan rilis dalam mode debug

Tampilkan informasi tambahan saat rilis dijalankan dan dalam file log dengan menjalankan seluruh rilis, atau hanya tugas dalam tahap rilis individual, dalam mode debug. Ini dapat membantu Anda mengatasi masalah dan kegagalan.

Tip

Jika Anda mendapatkan kesalahan yang terkait dengan koneksi layanan Azure RM, lihat Cara: Memecahkan masalah koneksi layanan Azure Resource Manager.

Variabel kustom

Variabel kustom dapat didefinisikan pada berbagai cakupan.

  • Bagikan nilai di semua definisi dalam proyek dengan menggunakan grup variabel. Pilih grup variabel saat Anda perlu menggunakan nilai yang sama di semua definisi, tahapan, dan tugas dalam proyek, dan Anda ingin dapat mengubah nilai dalam satu tempat. Anda menentukan dan mengelola grup variabel di tab Pustaka .

  • Bagikan nilai di semua tahap dengan menggunakan variabel alur rilis. Pilih variabel alur rilis saat Anda perlu menggunakan nilai yang sama di semua tahap dan tugas dalam alur rilis, dan Anda ingin dapat mengubah nilai dalam satu tempat. Anda menentukan dan mengelola variabel ini di tab Variabel dalam alur rilis . Di halaman Variabel Alur, buka daftar drop-down Cakupan dan pilih "Rilis". Secara default, saat Anda menambahkan variabel, variabel diatur ke Cakupan Rilis.

  • Bagikan nilai di semua tugas dalam satu tahap tertentu dengan menggunakan variabel tahap. Gunakan variabel tingkat tahap untuk nilai yang bervariasi dari tahap ke tahap (dan sama untuk semua tugas dalam tahap). Anda menentukan dan mengelola variabel ini di tab Variabel dari alur rilis . Di halaman Variabel Alur, buka daftar drop-down Cakupan dan pilih tahap yang diperlukan. Saat Anda menambahkan variabel, atur Cakupan ke lingkungan yang sesuai.

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

  • Hindari duplikasi nilai, sehingga lebih mudah untuk memperbarui semua kemunculan sebagai satu operasi.

  • Simpan nilai sensitif dengan cara yang tidak dapat dilihat atau diubah oleh pengguna alur rilis. Tentukan properti konfigurasi untuk menjadi variabel aman (rahasia) dengan memilih Gembok ikon (gembok) di samping variabel.

    Penting

    Nilai variabel tersembunyi (rahasia) disimpan dengan aman di server dan tidak dapat dilihat oleh pengguna setelah disimpan. Selama penyebaran, layanan rilis 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, variabel lingkungan Jalur PowerShell. Jika Anda membuat variabel kustom Path pada agen Windows, variabel tersebut akan menimpa $env:Path variabel dan PowerShell tidak akan dapat dijalankan.

Menggunakan variabel kustom

Untuk menggunakan variabel kustom dalam tugas build dan rilis Anda, cukup sertakan nama variabel dalam tanda kurung dan awali dengan $ karakter. Misalnya, jika Anda memiliki variabel bernama adminUserName, Anda dapat menyisipkan nilai variabel tersebut saat ini ke dalam parameter tugas sebagai $(adminUserName).

Catatan

Variabel dalam grup berbeda yang ditautkan ke alur dalam cakupan yang sama (misalnya, pekerjaan atau tahap) akan bertabrakan dan hasilnya mungkin tidak dapat diprediksi. Pastikan Anda menggunakan nama yang berbeda untuk variabel di semua grup variabel Anda.

Menentukan dan memodifikasi variabel Anda dalam skrip

Untuk menentukan atau mengubah variabel dari skrip, gunakan perintah pengelogan task.setvariable . Perhatikan bahwa nilai variabel yang diperbarui dilingkup ke pekerjaan yang dijalankan, dan tidak mengalir di seluruh pekerjaan atau tahap. Nama variabel diubah menjadi huruf besar, dan karakter "." dan " " digantikan oleh "_".

Misalnya, Agent.WorkFolder menjadi AGENT_WORKFOLDER. Di Windows, Anda mengakses ini sebagai %AGENT_WORKFOLDER% atau $env:AGENT_WORKFOLDER. Di Linux dan macOS, Anda menggunakan $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)