Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
İşlem hatlarınızda PowerShell ve Bash betikleri kullandığınızda, gelecekteki görevlerde kullanabileceğiniz değişkenleri ayarlamak genellikle yararlıdır. Yeni ayarlanan değişkenler aynı görevde kullanılamaz.
Komut dosyaları, bir görev tarafından desteklenmeyen bir şey yapmak istediğinizde harikadır. Örneğin, özel REST API'yi çağırmak ve yanıtı ayrıştırmak için bir betik kullanabilirsiniz.
task.setvariable günlüğe kaydetme komutunu, PowerShell ve Bash betiklerinde değişkenleri ayarlamak için kullanırsınız.
Not
Dağıtım işleri, çıkış değişkenleri için farklı bir söz dizimi kullanır. Dağıtım işlerinde çıkış değişkenleri desteği hakkında daha fazla bilgi edinmek için bkz . Dağıtım işleri.
İşlem hattında koşul içeren bir değişken kullanmak için bkz . Koşulları belirtme.
Hakkında task.setvariable
ile task.setvariablebir değişken eklediğinizde, aşağıdaki görevler makro söz dizimini $(myVar)kullanarak değişkenini kullanabilir. Değişken, varsayılan olarak yalnızca aynı işteki görevler için kullanılabilir. parametresini isOutputeklerseniz, değişkeninizi çağırmak için söz dizimi değişir. Daha fazla bilgi için bkz. Aynı işte kullanılmak üzere bir çıkış değişkeni ayarlama .
değişkenini myVar değeriyle fooayarlayın.
- bash: |
echo "##vso[task.setvariable variable=myVar;]foo"
değişkenini myVarokuyun:
- bash: |
echo "You can use macro syntax for variables: $(myVar)"
Değişken özelliklerini ayarlama
komutu, task.setvariable bir değişkeni gizli dizi olarak, çıkış değişkeni olarak ve salt okunur olarak ayarlama özelliklerini içerir. Kullanılabilir özellikler şunlardır:
-
variable= değişken adı (Gerekli) -
isSecret= boolean (İsteğe bağlıdır, varsayılan olarak false) -
isOutput= boolean (İsteğe bağlıdır, varsayılan olarak false) -
isReadOnly= boolean (İsteğe bağlıdır, varsayılan olarak false)
Bir sonraki aşamada değişkenini kullanmak için özelliğini olarak isOutputayarlayıntrue.
isOutput true olarak ayarlanmış bir değişkene başvurmak için görev adını eklersiniz. Örneğin, $(TaskName.myVar).
Bir değişkeni salt okunur olarak ayarladığınızda, aşağı akış görevleri değişkenin üzerine yazamaz.
isreadonly seçeneğini true olarak ayarlayın. Değişkeni salt okunur olarak ayarlamak, bu değişkeni sabit hale getirerek güvenliği artırır.
Bir değişkeni gizli olarak ayarla
issecret true olarak ayarlandığında, değişkenin değeri gizli olarak kaydedilir ve günlüklerde gizlenir.
Not
Azure Pipelines, işlem hattı günlüklerine veri gönderirken gizli dizileri maskelemeye çaba gösterir, bu nedenle çıkışta ve günlüklerde gizli dizi olarak ayarlanmamış ek değişkenleri ve verileri maskelenmiş olarak görebilirsiniz.
gizli dizi değişkenini mySecretValayarlayın.
- bash: |
echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"
Gizli değişkeni mySecretVal alın.
- bash: |
echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"
- bash: |
echo $(mySecretVal)
Bash'te gizli değişken çıkışı.
Çıkış değişkenlerinin düzeyleri
Ayrı söz dizimlerine sahip dört farklı çıkış değişkeni türü vardır:
- Aynı işte ayarlanan,
isOutputparametresi olmadan çıkış değişkenleri. Bu değişkenlere başvurmak için makro söz dizimi kullanırsınız. Örnek:$(myVar). -
Aynı işte
isOutputparametresiyle ayarlanan çıkış değişkenleri. Bu değişkenlere başvurmak için görev adını eklersiniz. Örnek:$(myTask.myVar). -
Gelecekteki bir işte ayarlanan çıkış değişkenleri. Bu değişkenlere başvurmak için,
variablesbölümündeki değişkenedependencysöz dizimi ile başvurursunuz. -
Gelecek aşamalarda ayarlanan çıkış değişkenleri. Bu değişkenlere başvurmak için,
variablesbölümündeki değişkenestageDependenciessöz dizimi ile başvurursunuz.
Not
Gelecekteki aşamalar veya işler yalnızca değişkenin ayarlandığı aşamaya veya işe bağlıysa çıkış değişkenlerine erişebilir. Bir çıkış değişkeninin erişilebilir olmasını sağlamak için, bir sonraki aşamanın veya işin değişkeni oluşturduğunuz aşamaya veya işe bağlı olduğundan emin olun. Birden çok aşama veya işin aynı çıkış değişkenini kullanması gerekiyorsa, bu bağımlılığı oluşturmak için koşulunu dependsOn kullanın.
İşlem hattınız matris işi gibi biryürütme stratejisi kullanıyorsa, çıkış değişkeninin adı değişebilir. Bu gibi durumlarda, adını doğrulamak için önce değişkeninizi test etmeniz gerekir. Ayrıca envbetiğiyle bir işlem hattındaki kullanılabilir tüm değişkenleri yazdırabilirsiniz.
- script: env
displayName: 'Print all variables'
Aynı işte kullanılacak bir çıkış değişkeni ayarlama
Aynı işte bir çıkış değişkeninin isOutput özelliğini kullanmanıza gerek yoktur. Varsayılan olarak, değişkeni aynı iş içindeki aşağı akış adımları için kullanılabilir. Ancak, isOutput özelliğini eklerseniz, değişkenine görev adıyla başvurmanız gerekir.
Buradaki betik, myJobVar belirtmeden aynı iş çıkış değişkenini isOutput ayarlar ve myOutputJobVar içinde isOutput=true ayarlar.
jobs:
- job: A
steps:
- bash: |
echo "##vso[task.setvariable variable=myJobVar]this is the same job"
- bash: |
echo "##vso[task.setvariable variable=myOutputJobVar;isOutput=true]this is the same job too"
name: setOutput
Bu betik ile aynı iş değişkenlerini myJobVar ve myOutputJobVar alır. Çıktı değişkenine referans verirken isOutput=true eklendiğinde söz diziminin değiştiğine dikkat edin.
jobs:
- job: A
steps:
- bash: |
echo "##vso[task.setvariable variable=myJobVar]this is the same job"
- bash: |
echo "##vso[task.setvariable variable=myOutputJobVar;isOutput=true]this is the same job too"
name: setOutput
- bash: |
echo $(myJobVar)
- bash: |
echo $(setOutput.myOutputJobVar)
Gelecek işlerde kullanmak üzere bir çıkış değişkeni ayarlama
İşler arasında çıkış değişkenlerini kullandığınızda, bunlara dependenciesile başvurursunuz. Gelecekteki bir iş veya aşamada bir çıkış değişkenine erişmek için söz dizimi, değişkenin ayarlayıcısı ve tüketicisi arasındaki ilişkiye göre değişir. Bağımlılıklardaki her durum hakkında bilgi edinin.
Çıkış değişkenleri yalnızca sonraki aşağı akış işinde kullanılabilir. Birden çok iş aynı çıkış değişkenini kullanıyorsa koşulunu dependsOn kullanın.
İlk olarak çıkış değişkenini myOutputVarayarlayın.
jobs:
- job: A
steps:
- bash: |
echo "##vso[task.setvariable variable=myOutputVar;isOutput=true]this is from job A"
name: passOutput
Ardından, gelecekteki bir işe myOutputVar erişin ve değişkeni myVarFromJobA olarak çıktısını verin.
dependencies kullanmak için, geçmiş işte çıkış değişkeninin ayarlandığı işin adını kullanarak gelecekteki işte dependsOn özelliğini ayarlamanız gerekir.
jobs:
- job: A
steps:
- bash: |
echo "##vso[task.setvariable variable=myOutputVar;isOutput=true]this is from job A"
name: passOutput
- job: B
dependsOn: A
variables:
myVarFromJobA: $[ dependencies.A.outputs['passOutput.myOutputVar'] ]
steps:
- bash: |
echo $(myVarFromJobA)
Sonraki aşamalarda kullanmak üzere bir çıkış değişkeni ayarlama
Çıkış değişkenleri işlem hatlarındaki aşamalar arasında kullanılabilir. Oluşturulan çıktının kimliği gibi yararlı bilgileri bir aşamadan diğerine geçirmek için çıkış değişkenlerini kullanabilirsiniz.
özelliğiyle isOutput bir değişken ayarladığınızda, bu değişkene görev adı ve stageDependencies söz dizimi ile sonraki aşamalarda başvurabilirsiniz. Bağımlılıklar hakkında daha fazla bilgi edinin.
Çıkış değişkenleri yalnızca sonraki aşağı akış aşamasında kullanılabilir. Birden çok aşama aynı çıkış değişkenini kullanıyorsa koşulunu dependsOn kullanın.
İlk olarak çıkış değişkenini myStageValayarlayın.
steps:
- bash: echo "##vso[task.setvariable variable=myStageVal;isOutput=true]this is a stage output variable"
name: MyOutputVar
Daha sonra, sonraki bir aşamada çıkış değişkenini myStageVal bir aşama, iş veya görev kapsamlı değişkenle (örneğin myStageAVar, ) eşleyin. Eşleme söz diziminin bir çalışma zamanı ifadesi $[] kullandığına ve değişkeni tam olarak nitelemek için hem aşama adını (stageDependencies) hem de iş adını (A) kullanarak çıkış değişkenine giden yolu A1 izlediğine dikkat edin.
stages:
- stage: A
jobs:
- job: A1
steps:
- bash: echo "##vso[task.setvariable variable=myStageVal;isOutput=true]this is a stage output variable"
name: MyOutputVar
- stage: B
dependsOn: A
jobs:
- job: B1
variables:
myStageAVar: $[stageDependencies.A.A1.outputs['MyOutputVar.myStageVal']]
steps:
- bash: echo $(myStageAVar)
Değerinizin yeni satırlar içermesi durumunda, bunlardan kaçabilirsiniz ve aracı bunu otomatik olarak kaldırabilir:
steps:
- bash: |
escape_data() {
local data=$1
data="${data//'%'/'%AZP25'}"
data="${data//$'\n'/'%0A'}"
data="${data//$'\r'/'%0D'}"
echo "$data"
}
echo "##vso[task.setvariable variable=myStageVal;isOutput=true]$(escape_data $'foo\nbar')"
name: MyOutputVar
SSS
Çıkış değişkenim işlenmiyor. Sorun nedir?
Çıkış değişkeninizin görünmeyebilir olmasının birkaç nedeni vardır.
- ile
isOutputayarlanan çıkış değişkenleri aynı işte kullanılamaz ve bunun yerine yalnızca aşağı akış işlerinde kullanılabilir. - Kullandığınız değişken söz dizimine bağlı olarak, bir çıkış değişkeninin değerini ayarlayan bir değişken çalışma zamanında kullanılamayabilir. Örneğin, makro söz dizimi (
$(var)) içeren değişkenler, görev çalışmadan önce işlenir. Buna karşılık, şablon söz dizimine sahip değişkenler çalışma zamanında ($[variables.var]) işlenir. Çıkış değişkenlerini ayarlarken genellikle çalışma zamanı söz dizimlerini kullanmak istersiniz. Değişken söz dizimi hakkında daha fazla bilgi için bkz . Değişkenleri tanımlama. - İfadenizin içinde fazladan boşluklar olabilir. Değişkeniniz işlenmiyorsa, çevresinde
isOutput=truefazladan boşluk olup olmadığını denetleyin.
Bağımlılıklar için bir değişken ekleyerek ve ardından bu değişkeni yazdırarak işlem hattı işinin veya aşamanın çıktı sorunlarını giderebilirsiniz dependencies . Örneğin, bu işlem hattı işinde A çıkış değişkenini MyTaskayarlar. İkinci iş (B) işe Abağlıdır. Yeni bir değişken, deps iş bağımlılıklarının JSON gösterimini tutar. İş B'deki ikinci adım, iş bağımlılıklarını görebilmeniz için deps yazdırmak için PowerShell'i kullanır.
trigger:
- '*'
pool:
vmImage: 'ubuntu-latest'
jobs:
- job: A
steps:
- script: |
echo "##vso[task.setvariable variable=MyTask;isOutput=true]theoutputval"
name: ProduceVar
- job: B
dependsOn: A
variables:
varFromA: $[ dependencies.A.outputs['ProduceVar.MyTask'] ]
deps: $[convertToJson(dependencies)] # create a variable with the job dependencies
steps:
- script: echo $(varFromA) #
- powershell: Write-Host "$(deps)"