Klasik sürüm ve yapıt değişkenleri

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Klasik sürüm ve yapıt değişkenleri, işlem hattınız genelinde veri alışverişi ve taşımanın kullanışlı bir yoludur. Her değişken bir dize olarak depolanır ve değeri, işlem hattınızın çalıştırmaları arasında değişebilir.

Değişkenler, yalnızca şablon ayrıştırma zamanında kullanılabilen Çalışma Zamanı parametrelerinden farklıdır.

Uygulamanızı DevOps CI/CD işlemlerinizdeki her aşamaya dağıtmak için görevleri oluştururken değişkenler şunları yapma konusunda size yardımcı olur:

  • Bir kez daha genel bir dağıtım işlem hattı tanımlayın ve her aşama için kolayca özelleştirin. Örneğin, bir değişken web dağıtımının bağlantı dizesi temsil etmek için kullanılabilir ve bu değişkenin değeri bir aşamadan diğerine değiştirilebilir. Bunlar özel değişkenlerdir.

  • Dağıtım işlem hattının çalıştırıldığı belirli sürümün, aşamanın, yapıtların veya aracının bağlamı hakkındaki bilgileri kullanın. Örneğin, betiğinizi indirmek için derlemenin konumuna veya geçici dosyalar oluşturmak için aracıdaki çalışma dizinine erişmesi gerekebilir. Bunlar varsayılan değişkenlerdir.

Not

YAML işlem hatları için daha fazla ayrıntı için kullanıcı tanımlı değişkenlere ve önceden tanımlanmış değişkenlere bakın.

Varsayılan değişkenler

Yürütme bağlamı hakkındaki bilgiler, varsayılan değişkenler aracılığıyla çalışan görevlerin kullanımına sunulur. Görevleriniz ve betikleriniz, çalıştırdıkları sistem, sürüm, aşama veya aracı hakkında bilgi bulmak için bu değişkenleri kullanabilir. System.Debug dışında, bu değişkenler salt okunur olur ve değerleri sistem tarafından otomatik olarak ayarlanır. En önemli değişkenlerden bazıları aşağıdaki tablolarda açıklanmıştır. Listenin tamamını görüntülemek için bkz . Tüm değişkenlerin geçerli değerlerini görüntüleme.

İpucu

Bir yayın için tüm değişkenlerin geçerli değerlerini görüntüleyebilir ve bir sürümü hata ayıklama modunda çalıştırmak için varsayılan değişkeni kullanabilirsiniz.

Sistem

Değişken adı Açıklama
System.TeamFoundationServerUri Azure Pipelines'da hizmet bağlantısının URL'si. Azure Pipelines REST API'lerini çağırmak için betiklerinizden veya görevlerinizden bunu kullanın.

Örnek: https://fabrikam.vsrm.visualstudio.com/
System.TeamFoundationCollectionUri Team Foundation koleksiyonunun veya Azure Pipelines'ın URL'si. Derleme ve Sürüm denetimi gibi diğer hizmetlerde REST API'lerini çağırmak için betiklerinizden veya görevlerinizden bunu kullanın.

Örnek: https://dev.azure.com/fabrikam/
System.CollectionId Bu derlemenin veya yayının ait olduğu koleksiyonun kimliği.

Örnek: 6c6f3423-1c84-4625-995a-f7f143a1e43d
System.DefinitionId Geçerli sürümün ait olduğu yayın işlem hattının kimliği.

Örnek: 1
System.TeamProject Bu derlemenin veya yayının ait olduğu projenin adı.

Örnek: Fabrikam
System.TeamProjectId Bu derlemenin veya sürümün ait olduğu projenin kimliği.

Örnek: 79f5c12e-3337-4151-be41-a268d2c73344
System.ArtifactsDirectory Yayın dağıtımı sırasında yapıtların indirildiği dizin. Aracıya yapıtların indirilmesi gerekiyorsa dizin her dağıtımdan önce temizlenir. Agent.ReleaseDirectory ve System.DefaultWorkingDirectory ile aynı.

Örnek: C:\agent\_work\r1\a
System.DefaultWorkingDirectory Yayın dağıtımı sırasında yapıtların indirildiği dizin. Aracıya yapıtların indirilmesi gerekiyorsa dizin her dağıtımdan önce temizlenir. Agent.ReleaseDirectory ve System.ArtifactsDirectory ile aynı.

Örnek: C:\agent\_work\r1\a
System.WorkFolder Her derleme veya yayın için alt klasörlerin oluşturulduğu bu aracı için çalışma dizini. Agent.RootDirectory ve Agent.WorkFolder ile aynı.

Örnek: C:\agent\_work
System.Debug Bu, kullanıcılar tarafından ayarlanabilen tek sistem değişkenidir. Hata bulma işlemine yardımcı olmak için sürümü hata ayıklama modunda çalıştırmak için bunu true olarak ayarlayın.

Örnek: true

Sürüm

Değişken adı Açıklama
Release.AttemptNumber Bu sürümün bu aşamada dağıtılma sayısı.

Örnek: 1
Release.DefinitionEnvironmentId İlgili yayın işlem hattındaki aşamanın kimliği.

Örnek: 1
Release.DefinitionId Geçerli sürümün ait olduğu yayın işlem hattının kimliği.

Örnek: 1
Release.DefinitionName Geçerli sürümün ait olduğu yayın işlem hattının adı.

Örnek: fabrikam-cd
Release.Deployment.RequestedFor Sürmekte olan dağıtımı tetikleyen (başlatan) kimliğin görünen adı.

Örnek: Mateo Escobedo
Release.Deployment.RequestedForEmail Sürmekte olan dağıtımı tetikleyen (başlatan) kimliğin e-posta adresi.

Örnek: mateo@fabrikam.com
Release.Deployment.RequestedForId Sürmekte olan dağıtımı tetikleyen (başlatan) kimliği.

Örnek: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.DeploymentID Dağıtımın kimliği. İş başına benzersiz.

Örnek: 254
Release.DeployPhaseID Dağıtımın çalıştığı aşamanın kimliği.

Örnek: 127
Release.EnvironmentId Dağıtımın devam etmekte olduğu bir sürümdeki aşama örneğinin kimliği.

Örnek: 276
Release.EnvironmentName Dağıtımın devam ettiği aşamanın adı.

Örnek: Dev
Release.EnvironmentUri Dağıtımın devam ettiği bir sürümdeki aşama örneğinin URI'sini.

Örnek: vstfs://ReleaseManagement/Environment/276
Release.Environments. {stage-name}.status Aşamanın dağıtım durumu.

Örnek: InProgress
Release.PrimaryArtifactSourceAlias Birincil yapıt kaynağının diğer adı

Örnek: fabrikam\_web
Release.Reason Dağıtımın nedeni. Desteklenen değerler şunlardır:
ContinuousIntegration - sürüm, bir derleme tamamlandıktan sonra Sürekli Dağıtım'da başladı.
Manual - sürüm el ile başlatıldı.
None - dağıtım nedeni belirtilmedi.
Schedule - yayın bir zamanlamadan başladı.
Release.ReleaseDescription Yayın sırasında sağlanan metin açıklaması.

Örnek: Critical security patch
Release.ReleaseId Geçerli yayın kaydının tanımlayıcısı.

Örnek: 118
Release.ReleaseName Geçerli sürümün adı.

Örnek: Release-47
Release.ReleaseUri Geçerli sürümün URI'sini.

Örnek: vstfs://ReleaseManagement/Release/118
Release.ReleaseWebURL Bu sürümün URL'si.

Örnek: https://dev.azure.com/fabrikam/f3325c6c/_release?releaseId=392&_a=release-summary
Release.RequestedFor Yayını tetikleyen kimliğin görünen adı.

Örnek: Mateo Escobedo
Release.RequestedForEmail Yayını tetikleyen kimliğin e-posta adresi.

Örnek: mateo@fabrikam.com
Release.RequestedForId Yayını tetikleyen kimliği.

Örnek: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.SkipArtifactsİndir Aracıya yapıtların indirilmesinin atlanıp atlanmayacağını belirten Boole değeri.

Örnek: FALSE
Release.TriggeringArtifact.Alias Yayını tetikleyen yapıtın diğer adı. Yayın el ile zamanlandığında veya tetiklendiğinde bu boş olur.

Örnek: fabrikam\_app

Sürüm aşaması

Değişken adı Açıklama
Release.Environments. {stage name}. Durum Bu sürümün belirtilen aşama içinde dağıtım durumu.

Örnek: NotStarted

Aracı

Değişken adı Açıklama
Agent.Name Aracı havuzuna kayıtlı olarak aracının adı. Bu, bilgisayar adından farklı olabilir.

Örnek: fabrikam-agent
Agent.MachineName Aracının yapılandırıldığı bilgisayarın adı.

Örnek: fabrikam-agent
Agent.Version Aracı yazılımının sürümü.

Örnek: 2.109.1
Agent.JobName Yayın veya Derleme gibi çalışmakta olan işin adı.

Örnek: Release
Agent.HomeDirectory Aracının yüklü olduğu klasör. Bu klasör, aracının kodunu ve kaynaklarını içerir.

Örnek: C:\agent
Agent.ReleaseDirectory Yayın dağıtımı sırasında yapıtların indirildiği dizin. Aracıya yapıtların indirilmesi gerekiyorsa dizin her dağıtımdan önce temizlenir. System.ArtifactsDirectory ve System.DefaultWorkingDirectory ile aynı.

Örnek: C:\agent\_work\r1\a
Agent.RootDirectory Her derleme veya yayın için alt klasörlerin oluşturulduğu bu aracı için çalışma dizini. Agent.WorkFolder ve System.WorkFolder ile aynı.

Örnek: C:\agent\_work
Agent.WorkFolder Her derleme veya yayın için alt klasörlerin oluşturulduğu bu aracı için çalışma dizini. Agent.RootDirectory ve System.WorkFolder ile aynı.

Örnek: C:\agent\_work
Agent.DeploymentGroupId Aracının kayıtlı olduğu dağıtım grubunun kimliği. Bu yalnızca dağıtım grubu işlerinde kullanılabilir.

Örnek: 1

Genel Yapıt

Bir yayında başvuruda bulunan her yapıt için aşağıdaki yapıt değişkenlerini kullanabilirsiniz. Her yapıt türü için tüm değişkenler anlamlı değildir. Aşağıdaki tabloda varsayılan yapıt değişkenleri listelenmiştir ve yapıt türüne bağlı olarak sahip oldukları değerlerin örnekleri verilmiştir. Bir örnek boşsa, değişkenin bu yapıt türü için doldurulmadığını gösterir.

Yer tutucuyu {alias} yapıt diğer adı için belirttiğiniz değerle veya yayın işlem hattı için oluşturulan varsayılan değerle değiştirin.

Değişken adı Açıklama
Release.Artifacts. {alias}. Tanım Kimliği Derleme işlem hattının veya deponun tanımlayıcısı.

Azure Pipelines örneği: 1
GitHub örneği: fabrikam/asp
Release.Artifacts. {alias}. TanımAdı Derleme işlem hattının veya deponun adı.

Azure Pipelines örneği: fabrikam-ci
TFVC örneği: $/fabrikam
Git örneği: fabrikam
GitHub örneği: fabrikam/asp (main)
Release.Artifacts. {alias}. BuildNumber Derleme numarası veya işleme tanımlayıcısı.

Azure Pipelines örneği: 20170112.1
Jenkins/TeamCity örneği: 20170112.1
TFVC örneği: Changeset 3
Git örneği: 38629c964
GitHub örneği: 38629c964
Release.Artifacts. {alias}. BuildId Derleme tanımlayıcısı.

Azure Pipelines örneği: 130
Jenkins/TeamCity örneği: 130
GitHub örneği: 38629c964d21fe405ef830b7d0220966b82c9e11
Release.Artifacts. {alias}. BuildURI Derlemenin URL'si.

Azure Pipelines örneği: vstfs://build-release/Build/130
GitHub örneği: https://github.com/fabrikam/asp
Release.Artifacts. {alias}. SourceBranch Kaynağın oluşturulduğu dalın tam yolu ve adı.

Azure Pipelines örneği: refs/heads/main
Release.Artifacts. {alias}. SourceBranchName Yalnızca kaynağın oluşturulduğu dalın adı.

Azure Pipelines örneği: main
Release.Artifacts. {alias}. Sourceversion Oluşturulan işleme.

Azure Pipelines örneği: bc0044458ba1d9298cdc649cb5dcf013180706f7
Release.Artifacts. {alias}. Repository.Provider Kaynağın oluşturulduğu depo türü.

Azure Pipelines örneği: Git
Release.Artifacts. {alias}. RequestedForID Derlemeyi tetikleyen hesabın tanımlayıcısı.

Azure Pipelines örneği: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.Artifacts. {alias}. RequestedFor Derlemeyi isteyen hesabın adı.

Azure Pipelines örneği: Mateo Escobedo
Release.Artifacts. {alias}. Türü Derleme gibi yapıt kaynağının türü.

Azure Pipelines örneği: Build
Jenkins örneği: Jenkins
TeamCity örneği: TeamCity
TFVC örneği: TFVC
Git örneği: Git
GitHub örneği: GitHub
Release.Artifacts. {alias}. PullRequest.TargetBranch Çekme isteğinin hedefi olan dalın tam yolu ve adı. Bu değişken yalnızca yayın bir çekme isteği akışı tarafından tetiklendiğinde başlatılır.

Azure Pipelines örneği: refs/heads/main
Release.Artifacts. {alias}. PullRequest.TargetBranchName Yalnızca çekme isteğinin hedefi olan dalın adı. Bu değişken yalnızca yayın bir çekme isteği akışı tarafından tetiklendiğinde başlatılır.

Azure Pipelines örneği: main

Ayrıca bkz. Yapıt kaynağı diğer adı

Birincil Yapıt

Yapıtlardan birini yayın işlem hattında birincil yapıt olarak tanımlarsınız. Azure Pipelines, belirlenen birincil yapıt için aşağıdaki değişkenleri doldurur.

Değişken adı Aynı
Build.DefinitionId Release.Artifacts. {Birincil yapıt diğer adı}. Tanım Kimliği
Build.DefinitionName Release.Artifacts. {Birincil yapıt diğer adı}. TanımAdı
Build.BuildNumber Release.Artifacts. {Birincil yapıt diğer adı}. BuildNumber
Build.BuildId Release.Artifacts. {Birincil yapıt diğer adı}. BuildId
Build.BuildURI Release.Artifacts. {Birincil yapıt diğer adı}. BuildURI
Build.SourceBranch Release.Artifacts. {Birincil yapıt diğer adı}. SourceBranch
Build.SourceBranchName Release.Artifacts. {Birincil yapıt diğer adı}. SourceBranchName
Build.SourceVersion Release.Artifacts. {Birincil yapıt diğer adı}. Sourceversion
Build.Repository.Provider Release.Artifacts. {Birincil yapıt diğer adı}. Repository.Provider
Build.RequestedForID Release.Artifacts. {Birincil yapıt diğer adı}. RequestedForID
Build.RequestedFor Release.Artifacts. {Birincil yapıt diğer adı}. RequestedFor
Build.Type Release.Artifacts. {Birincil yapıt diğer adı}. Türü
Build.PullRequest.TargetBranch Release.Artifacts. {Birincil yapıt diğer adı}. PullRequest.TargetBranch
Build.PullRequest.TargetBranchName Release.Artifacts. {Birincil yapıt diğer adı}. PullRequest.TargetBranchName

Varsayılan değişkenleri kullanma

Varsayılan değişkenleri iki şekilde kullanabilirsiniz: Yayın işlem hattındaki veya betiklerinizdeki görevlerin parametreleri olarak.

Varsayılan değişkeni doğrudan göreve giriş olarak kullanabilirsiniz. Örneğin, bir göreve diğer adı ASPNET4.CI yapıt kaynağını geçirmek Release.Artifacts.{Artifact alias}.DefinitionName için kullanabilirsiniz$(Release.Artifacts.ASPNET4.CI.DefinitionName).

PowerShell Betiği görevine bağımsız değişkenlerde yapıt değişkenlerini kullanma

Betiğinizde varsayılan bir değişken kullanmak için, önce varsayılan değişken adlarındaki öğesini ile _değiştirmeniz . gerekir. Örneğin, diğer adı PowerShell betiğinde ASPNET4.CI yapıt kaynağının yapıt değişkeninin Release.Artifacts.{Artifact alias}.DefinitionName değerini yazdırmak için kullanabilirsiniz$env:RELEASE_ARTIFACTS_ASPNET4_CI_DEFINITIONNAME.

Satır içi PowerShell betiğinde yapıt değişkenlerini kullanma

Yapıt kaynağı diğer ASPNET4.CIadı olan özgün adının ile ASPNET4_CIdeğiştirildiğini unutmayın.

Tüm değişkenlerin geçerli değerlerini görüntüleme

  1. Yayının özetinin işlem hatları görünümünü açın ve ilgilendiğiniz aşamayı seçin. Adım listesinde İşi başlat'ı seçin.

    Bir sürüm için günlüğü açma

  2. Bu işlem, bu adımın günlüğünü açar. Aracı tarafından bu iş için kullanılan değerleri görmek için aşağı kaydırın.

    Bir sürümdeki değişkenlerin değerlerini görüntüleme

Bir sürümü hata ayıklama modunda çalıştırma

Yayının tamamını veya tek bir yayın aşamasındaki görevleri hata ayıklama modunda çalıştırarak yayın yürütülürken ve günlük dosyalarında ek bilgileri gösterin. Bu, sorunları ve hataları çözmenize yardımcı olabilir.

  • Yayının tamamında hata ayıklama modunu başlatmak için, yayın işlem hattının Değişkenler sekmesine değeriyle true adlı System.Debug bir değişken ekleyin.

  • Tek bir aşama için hata ayıklama modunu başlatmak için, aşamanın kısayol menüsünden Aşamayı yapılandır iletişim kutusunu açın ve Değişkenler sekmesine değeriyle true adlı System.Debug bir değişken ekleyin.

  • Alternatif olarak, değeriyle true adlı System.Debug değişkeni içeren bir değişken grubu oluşturun ve bu değişken grubunu bir yayın işlem hattına bağlayın.

İpucu

Azure RM hizmet bağlantısıyla ilgili bir hata alırsanız bkz . Nasıl yapılır: Azure Resource Manager hizmet bağlantılarında sorun giderme.

Özel değişkenler

Özel değişkenler çeşitli kapsamlarda tanımlanabilir.

  • Değişken grupları kullanarak bir projedeki tüm tanımlarda değerleri paylaşın. Bir projedeki tüm tanımlarda, aşamalarda ve görevlerde aynı değerleri kullanmanız gerektiğinde ve değerleri tek bir yerde değiştirebilmek istediğinizde bir değişken grubu seçin. Kitaplık sekmesinde değişken grupları tanımlar ve yönetirsiniz.

  • Yayın işlem hattı değişkenlerini kullanarak tüm aşamalarda değerleri paylaşın. Yayın işlem hattındaki tüm aşamalarda ve görevlerde aynı değeri kullanmanız gerektiğinde ve değeri tek bir yerde değiştirebilmek istediğinizde bir yayın işlem hattı değişkeni seçin. Bu değişkenleri bir yayın işlem hattındaki Değişkenler sekmesinde tanımlar ve yönetirsiniz. İşlem Hattı Değişkenleri sayfasında Kapsam açılan listesini açın ve "Yayın" öğesini seçin. Varsayılan olarak, bir değişken eklediğinizde, bu değişken Yayın kapsamı olarak ayarlanır.

  • Aşama değişkenlerini kullanarak belirli bir aşamadaki tüm görevler arasında değerleri paylaşın. Aşamadan aşamaya değişen değerler için aşama düzeyi değişkeni kullanın (ve bir aşamadaki tüm görevler için aynıdır). Bu değişkenleri bir yayın işlem hattının Değişkenler sekmesinde tanımlar ve yönetirsiniz. İşlem Hattı Değişkenleri sayfasında Kapsam açılan listesini açın ve gerekli aşamayı seçin. Bir değişken eklediğinizde Kapsam'ı uygun ortama ayarlayın.

Projede, yayın işlem hattında ve aşama kapsamında özel değişkenler kullanmak şunları oluşturmanıza yardımcı olur:

  • Değerlerin yinelenmesinden kaçının, böylece tüm oluşumları tek bir işlem olarak güncelleştirmeyi kolaylaştırın.

  • Hassas değerleri, yayın işlem hatlarının kullanıcıları tarafından görülemeyecek veya değiştirilemeyecek şekilde depolayın. Değişkenin yanındaki (asma kilit) simgesini seçerek Asma kilit bir yapılandırma özelliğini güvenli (gizli) değişken olarak belirleyin.

    Önemli

    Gizli (gizli) değişkenlerin değerleri sunucuda güvenli bir şekilde depolanır ve kaydedildikten sonra kullanıcılar tarafından görüntülenemez. Dağıtım sırasında Azure Pipelines yayın hizmeti, görevler tarafından başvurulduğunda bu değerlerin şifresini çözer ve bunları güvenli bir HTTPS kanalı üzerinden aracıya geçirir.

Not

Özel değişkenler oluşturmak standart değişkenlerin üzerine yazabilir. Örneğin, PowerShell Yolu ortam değişkeni. Bir Windows aracısı üzerinde özel Path değişken oluşturursanız, değişkenin $env:Path üzerine yazılır ve PowerShell çalıştırılamaz.

Özel değişkenler kullanma

Derleme ve yayın görevlerinizde özel değişkenler kullanmak için değişken adını parantez içine alıp önünde bir $ karakter olması yeterlidir. Örneğin, adminUserName adlı bir değişkeniniz varsa, bu değişkenin geçerli değerini görevin parametresine olarak $(adminUserName)ekleyebilirsiniz.

Not

Aynı kapsamdaki bir işlem hattına (örneğin, iş veya aşama) bağlı olan farklı gruplardaki değişkenler çakılır ve sonuç öngörülemez olabilir. Tüm değişken gruplarınızda değişkenler için farklı adlar kullandığınızdan emin olun.

Bir betikte değişkenlerinizi tanımlama ve değiştirme

Bir betikten değişken tanımlamak veya değiştirmek için günlüğe task.setvariable kaydetme komutunu kullanın. Güncelleştirilmiş değişken değerinin kapsamı yürütülen iş olarak belirlenmiştir ve işler veya aşamalar arasında akış yapılmaz. Değişken adları büyük harfe dönüştürülür ve "." ve " " karakterleri "_" ile değiştirilir.

Örneğin Agent.WorkFolder, AGENT_WORKFOLDER olur. Windows'da, buna veya $env:AGENT_WORKFOLDERolarak %AGENT_WORKFOLDER% erişebilirsiniz. Linux ve macOS'ta kullanırsınız $AGENT_WORKFOLDER.

İpucu

Bir betiği şu şekilde çalıştırabilirsiniz:

Batch betiği

sauce ve secret.Sauce değişkenlerini ayarlama

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

Değişkenleri okuma

Bağımsız değişkenler

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

Komut Dosyası

@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)

Değişkenlerin okunmasından konsol çıkışı:

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)