İşlem hattı dekoratörü ifade bağlamı
Azure DevOps Services
İşlem hattı dekoratörleri , çalıştırdıkları işlem hattıyla ilgili bağlama erişebilir. İşlem hattı dekoratörü yazarı olarak, dekoratörün davranışı hakkında kararlar almak için bu bağlamı kullanabilirsiniz. Bağlam içinde sağlanan bilgiler işlem hatları ve yayın için farklıdır. Ayrıca, görev adları genel olarak benzersiz tanımlayıcılara (GUID) çözümlendikten sonra dekoratörler çalışır. Dekoratörünüzün bir göreve başvurmak istemesi, ad veya anahtar sözcük yerine GUID'yi kullanması gerekir.
İpucu
Azure DevOps Uzantı SDK'sını kullanarak uzantı geliştirmeyle ilgili en yeni belgelerimize göz atın.
Not
İşlem hattı dekoratörleri, web uzantıları oluşturulurken kullanılır. Bu örnekler YAML işlem hatlarında çalışacak şekilde tasarlanmamıştır.
Kaynaklar
nesnesinde resources
işlem hattı kaynakları kullanılabilir.
Depolar
Şu anda tek bir anahtar vardır: repositories
.
repositories
, depo kimliğinden depo hakkındaki bilgilere bir haritadır.
Tasarımcı derlemesinde birincil depo diğer adıdır __designer_repo
.
YAML işlem hattında birincil depo olarak adlandırılır self
.
Yayın işlem hattında depolar kullanılamaz.
Yayın yapıt değişkenleri kullanılabilir.
Örneğin, YAML işlem hattındaki self
deponun adını yazdırmak için:
steps:
- script: echo ${{ resources.repositories['self'].name }}
Depolar şu özellikleri içerir:
resources['repositories']['self'] =
{
"alias": "self",
"id": "<repo guid>",
"type": "Git",
"version": "<commit hash>",
"name": "<repo name>",
"project": "<project guid>",
"defaultBranch": "<default ref of repo, like 'refs/heads/main'>",
"ref": "<current pipeline ref, like 'refs/heads/topic'>",
"versionInfo": {
"author": "<author of tip commit>",
"message": "<commit message of tip commit>"
},
"checkoutOptions": {}
}
İş
İş ayrıntıları nesnede job
kullanılabilir.
Veriler şuna benzer:
job =
{
"steps": [
{
"environment": null,
"inputs": {
"script": "echo hi"
},
"type": "Task",
"task": {
"id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
"name": "CmdLine",
"version": "2.146.1"
},
"condition": null,
"continueOnError": false,
"timeoutInMinutes": 0,
"id": "5c09f0b5-9bc3-401f-8cfb-09c716403f48",
"name": "CmdLine",
"displayName": "CmdLine",
"enabled": true
}
]
}
Örneğin, yalnızca önceden mevcut olmayan bir görevi koşullu olarak eklemek için:
- ${{ if not(containsValue(job.steps.*.task.id, 'f3ab91e7-bed6-436a-b651-399a66fe6c2a')) }}:
- script: echo conditionally inserted
Değişkenler
İşlem hattı değişkenleri de kullanılabilir.
Örneğin, işlem hattının adlı myVar
bir değişkeni varsa değeri dekoratör tarafından olarak variables['myVar']
kullanılabilir.
Örneğin, bir dekoratöre geri çevirme vermek için bir değişken arayabiliriz. Dekoratörden çıkmak isteyen işlem hattı yazarları bu değişkeni ayarlayabilir ve dekoratör eklemez. Değişken mevcut değilse dekoratör her zamanki gibi eklenir.
my-decorator.yml
- ${{ if ne(variables['skipInjecting'], 'true') }}:
- script: echo Injected the decorator
Ardından, kuruluştaki bir işlem hattında yazar dekoratörden kendisini eklememesini isteyebilir.
pipeline-with-opt-out.yml
variables:
skipInjecting: true
steps:
- script: echo This is the only step. No decorator is added.
Görev adları ve GUID'ler
Dekoratörler, görevler zaten GUID'lere dönüştürüldükten sonra çalışır. Aşağıdaki YAML'yi göz önünde bulundurun:
steps:
- checkout: self
- bash: echo This is the Bash task
- task: PowerShell@2
inputs:
targetType: inline
script: Write-Host This is the PowerShell task
Bu adımların her biri bir göreve eşler. Her görevin benzersiz bir GUID'i vardır. Görev adları ve anahtar sözcükler, dekoratörler çalışmadan önce görev GUID'leriyle eşler. Dekoratör başka bir görevin varlığını denetlemek istiyorsa, ad veya anahtar sözcük yerine görev GUID'sine göre arama yapmalıdır.
Normal görevler için (anahtar sözcüğüyle task
belirttiğiniz), GUID değerini belirlemek için görevin görevlerine task.json
bakabilirsiniz.
Önceki örnekte ve bash
gibi checkout
özel anahtar sözcükler için aşağıdaki GUID'leri kullanabilirsiniz:
Anahtar sözcük | GUID | Görev Adı |
---|---|---|
checkout |
6D15AF64-176C-496D-B583-FD2AE21D4DF4 |
yok, nota bakın |
bash |
6C731C3C-3C68-459A-A5C9-BDE6E6595B5B |
Bash |
script |
D9BAFED4-0B18-4F58-968D-86655B4D2CE9 |
CmdLine |
powershell |
E213FF0F-5D5C-4791-802D-52EA3E7BE1F1 |
PowerShell |
pwsh |
E213FF0F-5D5C-4791-802D-52EA3E7BE1F1 |
PowerShell |
publish |
ECDC45F6-832D-4AD9-B52B-EE49E94659BE |
PublishPipelineArtifact |
download |
30f35852-3f7e-4c0c-9a88-e127b4f97211 |
DownloadPipelineArtifact |
Görev adları ve anahtar sözcükler çözümlendikten sonra, önceki YAML şöyle olur:
steps:
- task: 6D15AF64-176C-496D-B583-FD2AE21D4DF4@1
inputs:
repository: self
- task: 6C731C3C-3C68-459A-A5C9-BDE6E6595B5B@3
inputs:
targetType: inline
script: echo This is the Bash task
- task: E213FF0F-5D5C-4791-802D-52EA3E7BE1F1@2
inputs:
targetType: inline
script: Write-Host This is the PowerShell task
İpucu
Bu GUID'lerin task.json
her birini ilgili kutu içi görevin içinde bulabilirsiniz.
Tek özel durum, checkout
aracının yerel bir özelliği olan 'dir.
GUID'i Azure Pipelines hizmetinde ve aracıda yerleşik olarak bulunur.