İşlem hattınızda işleri belirtme
Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 | TFS 2017
Not
Microsoft Team Foundation Server (TFS) 2018 ve önceki sürümlerde, derleme ve yayın işlem hatlarıtanımlarolarak adlandırılır, çalışmalaraderlemelerdenir, hizmet bağlantılarınahizmet uç noktalarıdenir, aşamalarortamlarolarak adlandırılır ve işleraşamalarolarak adlandırılır.
İşlem hattınızı işler halinde düzenleyebilirsiniz. Her işlem hattının en az bir işi vardır. İş, birim olarak sırayla çalışan bir dizi adımdan oluşur. Diğer bir deyişle, iş, çalıştırılmak üzere zamanlanabilecek en küçük iş birimidir.
Derleme veya yayın işlem hattınızı işler olarak düzenleyebilirsiniz. Her işlem hattının en az bir işi vardır. İş, birim olarak sırayla çalışan bir dizi adımdan oluşur. Diğer bir deyişle, iş, çalıştırılmak üzere zamanlanabilecek en küçük iş birimidir.
Not
Yapı işlemlerinde işleri kullanmak için TFS 2018,2 ' ü yüklemelisiniz. TFS 2018 RTM 'de, yayın dağıtım işlemlerinde işleri kullanabilirsiniz.
Yayın işlem hattınızı işler halinde düzenleyebilirsiniz. Her sürüm ardışık düzeninde en az bir iş vardır. Bu TFS sürümündeki bir derleme ardışık düzeninde iş desteklenmez.
Not
TFS 2017 ' deki bir yayın işlem hattındaki işleri kullanmak için güncelleştirme 2 ' ye yüklenmelidir. derleme işlem hatlarında bulunan işler Azure Pipelines, TFS 2018,2 ve daha yeni sürümlerde kullanılabilir.
Tek bir iş tanımlayın
En basit durumda, bir işlem hattının tek bir işi vardır. Bu durumda, job bir jobkullanmadığınız müddetçe anahtar sözcüğünü açıkça kullanmanız gerekmez. YAML dosyanızdaki adımları doğrudan belirtebilirsiniz.
Bu YAML dosyasında, Microsoft tarafından barındırılan bir aracı ve çıkışları üzerinde çalışan bir iş vardır .
pool:
vmImage: 'ubuntu-latest'
steps:
- bash: echo "Hello world"
Bu iş üzerinde ek özellikler belirtmek isteyebilirsiniz. Bu durumda, job anahtar sözcüğünü kullanabilirsiniz.
jobs:
- job: myJob
timeoutInMinutes: 10
pool:
vmImage: 'ubuntu-latest'
steps:
- bash: echo "Hello world"
İşlem hattınızda birden çok iş olabilir. Bu durumda, jobs anahtar sözcüğünü kullanın.
jobs:
- job: A
steps:
- bash: echo "A"
- job: B
steps:
- bash: echo "B"
İşlem hattınızda birden çok iş olan birden çok aşama olabilir. Bu durumda, stages anahtar sözcüğünü kullanın.
stages:
- stage: A
jobs:
- job: A1
- job: A2
- stage: B
jobs:
- job: B1
- job: B2
Bir işi belirtmek için tam sözdizimi şöyledir:
- job: string # name of the job, A-Z, a-z, 0-9, and underscore
displayName: string # friendly name to display in the UI
dependsOn: string | [ string ]
condition: string
strategy:
parallel: # parallel strategy
matrix: # matrix strategy
maxParallel: number # maximum number simultaneous matrix legs to run
# note: `parallel` and `matrix` are mutually exclusive
# you may specify one or the other; including both is an error
# `maxParallel` is only valid with `matrix`
continueOnError: boolean # 'true' if future jobs should run even if this job fails; defaults to 'false'
pool: pool # agent pool
workspace:
clean: outputs | resources | all # what to clean up before the job runs
container: containerReference # container to run this job inside
timeoutInMinutes: number # how long to run the job before automatically cancelling
cancelTimeoutInMinutes: number # how much time to give 'run always even if cancelled tasks' before killing them
variables: { string: string } | [ variable | variableReference ]
steps: [ script | bash | pwsh | powershell | checkout | task | templateReference ]
services: { string: string | container } # container resources to run as a service container
Bir işi belirtmek için tam sözdizimi şöyledir:
- job: string # name of the job, A-Z, a-z, 0-9, and underscore
displayName: string # friendly name to display in the UI
dependsOn: string | [ string ]
condition: string
strategy:
parallel: # parallel strategy
matrix: # matrix strategy
maxParallel: number # maximum number simultaneous matrix legs to run
# note: `parallel` and `matrix` are mutually exclusive
# you may specify one or the other; including both is an error
# `maxParallel` is only valid with `matrix`
continueOnError: boolean # 'true' if future jobs should run even if this job fails; defaults to 'false'
pool: pool # agent pool
workspace:
clean: outputs | resources | all # what to clean up before the job runs
container: containerReference # container to run this job inside
timeoutInMinutes: number # how long to run the job before automatically cancelling
cancelTimeoutInMinutes: number # how much time to give 'run always even if cancelled tasks' before killing them
variables: { string: string } | [ variable | variableReference ]
steps: [ script | bash | pwsh | powershell | checkout | task | templateReference ]
services: { string: string | container } # container resources to run as a service container
uses: # Any resources (repos or pools) required by this job that are not already referenced
repositories: [ string ] # Repository references to Azure Git repositories
pools: [ string ] # Pool names, typically when using a matrix strategy for the job
İşinizin birincil amacı uygulamanızı dağıtmaktır (uygulamanızı derleme veya test etme aksine), dağıtım işiadlı özel bir iş türü kullanabilirsiniz.
Dağıtım işinin sözdizimi şöyledir:
- deployment: string # instead of job keyword, use deployment keyword
pool:
name: string
demands: string | [ string ]
environment: string
strategy:
runOnce:
deploy:
steps:
- script: echo Hi!
Dağıtım görevlerine yönelik adımları bir içinde ekleyebilseniz de job , bunun yerine bir jobkullanmanızı öneririz. Dağıtım işinin birkaç avantajı vardır. Örneğin, dağıttığınız öğenin geçmişini görebilmekte olduğu gibi avantajları içeren bir ortama dağıtım yapabilirsiniz.
YAML, TFS 'nin bu sürümünde desteklenmiyor.
İş türleri
İşlerin nerede çalıştırıldığına bağlı olarak farklı türlerde işler olabilir.
- Aracı havuzu işleri bir aracı havuzundaki aracıda çalışır.
- Sunucu işleri Azure DevOps Server çalışır.
- Kapsayıcı işleri , aracı havuzundaki bir aracıda bir kapsayıcıda çalışır. Kapsayıcıları seçme hakkında daha fazla bilgi için bkz. kapsayıcı Işleri tanımlama.
- Aracı havuzu işleri , aracı havuzundaki bir aracıda çalışır. Bu işler derleme ve yayın işlem hatlarında kullanılabilir.
- Sunucu ışlerı TFS üzerinde çalışır. Bu işler derleme ve yayın işlem hatlarında kullanılabilir.
- Dağıtım grubu işleri , bir dağıtım grubundaki makinelerde çalışır. Bu işler yalnızca yayın işlem hatları 'nda kullanılabilir.
- Aracı havuzu işleri , aracı havuzundaki bir aracıda çalışır. Bu işler yalnızca yayın işlem hatlarına sahiptir.
Aracı havuzu işleri
Bunlar, en yaygın iş türüdür ve bir aracı havuzundaki bir aracıda çalışır.
- Microsoft tarafından barındırılan aracılar kullanılırken bir işlem hattındaki her iş yeni bir aracı alır.
- Bir aracının işinizi çalıştırmak için sahip olması gereken özellikleri belirtmek için şirket içinde barındırılan aracılarla talepler kullanın. Aracı havuzunuzdaki birden çok aracının işlem hattının taleplerine uygun olup olmadığına bağlı olarak, ardışık işler için aynı aracıyı alabilirsiniz. Havuzunuzdaki işlem hattının taleplerine uyan yalnızca bir aracı varsa, işlem hattı bu aracı kullanılabilir olana kadar bekler.
Not
Talepler ve yetenekler, işlerin iş gereksinimlerini karşılayan bir aracıda eşleştirileceği için, şirket içinde barındırılan aracılarla birlikte kullanılmak üzere tasarlanmıştır. Microsoft tarafından barındırılan aracıları kullanırken, aracının iş gereksinimleriyle eşleşen bir görüntüsünü seçersiniz. bu nedenle, Microsoft tarafından barındırılan bir aracıya özellik eklemek mümkün olsa da, Microsoft tarafından barındırılan aracılarla Özellik kullanmanıza gerek kalmaz.
pool:
name: myPrivateAgents # your job runs on an agent in this pool
demands: agent.os -equals Windows_NT # the agent must have this capability to run the job
steps:
- script: echo hello world
Veya birden çok talep:
pool:
name: myPrivateAgents
demands:
- agent.os -equals Darwin
- anotherCapability -equals somethingElse
steps:
- script: echo hello world
YAML henüz TFS 'de desteklenmiyor.
Aracı Özelliklerihakkında daha fazla bilgi edinin.
Sunucu işleri
sunucu işindeki görevler, tarafından düzenlenir ve sunucuda (Azure Pipelines veya TFS) yürütülür. Sunucu işi bir aracı veya herhangi bir hedef bilgisayar gerektirmez. Mevcut olan bir sunucu işinde yalnızca birkaç görev desteklenir.
Aracısız işlerin desteklenen görevleri
Şu anda, aracısız işler için yalnızca aşağıdaki görevler hazır olarak de desteklenene kadar devam ediyor:
- Gecikme görevi
- Azure İşlevi görevini çağırma
- Görev REST API çağırma
- El ile Doğrulama görevi
- Azure'da yayımlama Service Bus görevi
- Sorgu Azure İzleyici Uyarıları görevi
- İş Öğelerini Sorgulama görevi
Görevler genişletilebilir olduğundan, uzantıları kullanarak daha fazla aracısız görev genişletilebilir. Aracısız işler için varsayılan zaman aşımı 60 dakikadır.
Sunucu işini belirtmek için tam söz dizimi şu şekildedir:
jobs:
- job: string
timeoutInMinutes: number
cancelTimeoutInMinutes: number
strategy:
maxParallel: number
matrix: { string: { string: string } }
pool: server
Basitleştirilmiş söz dizimlerini de kullanabilirsiniz:
jobs:
- job: string
pool: server
YAML henüz TFS'de desteklenmiyor.
Bağımlılıklar
Tek bir aşamada birden çok iş tanımladığınız zaman, aralarında bağımlılıklar belirtsiniz. Pipelines en az bir iş içermesi gerekir.
Not
Her aracı aynı anda yalnızca bir iş çalıştırabilirsiniz. Birden çok işi paralel olarak çalıştırmak için birden çok aracı yapılandırmanız gerekir. Ayrıca yeterli paralel işlere de ihtiyacınız vardır.
Birden çok işi ve bunların bağımlılıklarını tanımlama söz dizimi şu şekildedir:
jobs:
- job: string
dependsOn: string
condition: string
Sırayla derleme yapılan örnek işler:
jobs:
- job: Debug
steps:
- script: echo hello from the Debug build
- job: Release
dependsOn: Debug
steps:
- script: echo hello from the Release build
Paralel olarak derleme yapılan örnek işler (bağımlılık yok):
jobs:
- job: Windows
pool:
vmImage: 'windows-latest'
steps:
- script: echo hello from Windows
- job: macOS
pool:
vmImage: 'macOS-latest'
steps:
- script: echo hello from macOS
- job: Linux
pool:
vmImage: 'ubuntu-latest'
steps:
- script: echo hello from Linux
Fan-out örneği:
jobs:
- job: InitialJob
steps:
- script: echo hello from initial job
- job: SubsequentA
dependsOn: InitialJob
steps:
- script: echo hello from subsequent A
- job: SubsequentB
dependsOn: InitialJob
steps:
- script: echo hello from subsequent B
Vantilatör örneği:
jobs:
- job: InitialA
steps:
- script: echo hello from initial A
- job: InitialB
steps:
- script: echo hello from initial B
- job: Subsequent
dependsOn:
- InitialA
- InitialB
steps:
- script: echo hello from subsequent
YAML derlemeleri henüz TFS'de kullanılamıyor.
Koşullar
Her işin altında çalıştırıla koşulları belirterek. Varsayılan olarak, bir iş başka bir işe bağlı değilse veya bağımlı olduğu tüm işler tamamlandı ve başarılı olursa çalışır. Önceki bir iş başarısız olsa bile veya özel bir koşul belirterek bir işi çalıştırmaya zorlayarak bu davranışı özelleştirebilirsiniz.
Önceki işi çalıştırma durumuna göre bir işi çalıştırma örneği:
jobs:
- job: A
steps:
- script: exit 1
- job: B
dependsOn: A
condition: failed()
steps:
- script: echo this will run when A fails
- job: C
dependsOn:
- A
- B
condition: succeeded('B')
steps:
- script: echo this will run when B runs and succeeds
Özel koşul kullanma örneği:
jobs:
- job: A
steps:
- script: echo hello
- job: B
dependsOn: A
condition: and(succeeded(), eq(variables['build.sourceBranch'], 'refs/heads/master'))
steps:
- script: echo this only runs for master
Bir işin, önceki bir işte ayarlanmış bir çıkış değişkeninin değerine göre çalıştırılanı belirtesiniz. Bu durumda, yalnızca doğrudan bağımlı işlerde ayarlanmış değişkenleri kullanabilirsiniz:
jobs:
- job: A
steps:
- script: "echo ##vso[task.setvariable variable=skipsubsequent;isOutput=true]false"
name: printvar
- job: B
condition: and(succeeded(), ne(dependencies.A.outputs['printvar.skipsubsequent'], 'true'))
dependsOn: A
steps:
- script: echo hello from B
YAML derlemeleri henüz TFS'de kullanılamıyor.
Zaman aşımları
İş yanıt vermemeye başladı veya çok uzun süre beklerken kaynakları almaktan kaçınmak için, işlerinizi çalıştırmaya izin verilen süreye yönelik bir sınır ayarlamak iyi bir fikirdir. İş çalıştırma sınırını dakikalar içinde belirtmek için iş zaman aşımı ayarını kullanın. Değerin sıfır olarak ayarlanıyor olması işin şu şekilde çalışması anlamına gelir:
- Kendi içinde barındırılan aracılarda sonsuza kadar
- Genel proje ve genel depo ile Microsoft tarafından barındırılan aracılarda 360 dakika (6 saat) boyunca
- Özel proje veya özel depoya sahip Microsoft tarafından barındırılan aracılarda 60 dakika (ek kapasite ödenmediği sürece)
Zaman aşımı süresi, işin çalışmaya başladığı zaman başlar. bu, işin kuyruğa ekli olduğu veya aracı beklediği zamanı içermez.
, timeoutInMinutes iş yürütme süresi için bir sınır ayarlamaya olanak sağlar. Belirtilmedikse varsayılan değer 60 dakikadır. 0Belirtildiğinde, maksimum sınır kullanılır (yukarıda açıklanmıştır).
, önceki bir görev başarısız olursa dağıtım görevi çalışıyor olarak ayarlanmışsa, iş iptal süresi için cancelTimeoutInMinutes bir sınır ayarlamaya olanak sağlar. Belirtilmedikse varsayılan değer 5 dakikadır. Değerin 1 ile 35790 dakika arasında olması gerekir.
jobs:
- job: Test
timeoutInMinutes: 10 # how long to run the job before automatically cancelling
cancelTimeoutInMinutes: 2 # how much time to give 'run always even if cancelled tasks' before stopping them
YAML henüz TFS'de desteklenmiyor.
Microsoft tarafından barındırılan aracıları hedef alan işler, ne kadar süreyle çalıştırıldıkları hakkında ek kısıtlamalara sahip olur.
Ayrıca her görev için zaman aşımını ayrı ayrı da ayarlayabilirsiniz. Görev denetimi seçeneklerine bakın.
Çoklu iş yapılandırması
Tek bir iş yazmanız, birden çok aracı üzerinde birden çok işi paralel olarak çalıştırarak. Bazı örnekler:
Çoklu yapılandırma derlemeleri: Birden çok yapılandırmayı paralel olarak oluşturabilirsiniz. Örneğin hem hem de platformlarında hem Visual C++ yapılandırmaları için
debugbirreleaseuygulamax86x64oluşturabilirsiniz. Daha fazla bilgi edinmek için bkz. Visual Studio Derleme - birden çok platform için birden çok yapılandırma.Çoklu yapılandırma dağıtımları: Örneğin, farklı coğrafi bölgelere paralel olarak birden çok dağıtım çalıştırabilirsiniz.
Çoklu yapılandırma testi: Birden çok yapılandırmayı paralel olarak test çalıştırabiliyorsanız.
Çoklu yapılandırma değişkeni boş olsa bile, çoklu yapılandırma her zaman en az bir iş üretir.
Strateji, matrix bir işin farklı değişken kümeleriyle birden çok kez gönderilene olanak sağlar. etiketi maxParallel paralellik miktarını kısıtlar. Konum ve Tarayıcı değerleri belirtilen şekilde ayarlanmış şekilde aşağıdaki iş üç kez gönderiliyor. Ancak, aynı anda yalnızca iki iş çalıştıracak.
jobs:
- job: Test
strategy:
maxParallel: 2
matrix:
US_IE:
Location: US
Browser: IE
US_Chrome:
Location: US
Browser: Chrome
Europe_Chrome:
Location: Europe
Browser: Chrome
Not
Matris yapılandırma adları (yukarıdaki gibi) yalnızca temel Latin alfabesi US_IE harflerini (A-Z, a-z), sayıları ve alt çizgilerini ( ) _ içermeli.
Bir harfle başlamaları gerekir.
Ayrıca 100 veya daha az karakter uzunluğunda olmalıdır.
Matris oluşturmak için çıkış değişkenlerini kullanmak da mümkündür. Matrisi betik kullanarak oluşturmanız gerekirse bu kullanışlı olabilir.
matrix , dizeli bir JSON nesnesi içeren bir çalışma zamanı ifadesini kabul eder.
Bu JSON nesnesi genişletilirken matris söz diziminin eşleşmesi gerekir.
Aşağıdaki örnekte JSON dizesini sabit kodla kodla çalıştık ancak bu dize bir betik dili veya komut satırı programı tarafından oluşturulabilir.
jobs:
- job: generator
steps:
- bash: echo "##vso[task.setVariable variable=legs;isOutput=true]{'a':{'myvar':'A'}, 'b':{'myvar':'B'}}"
name: mtrx
# This expands to the matrix
# a:
# myvar: A
# b:
# myvar: B
- job: runner
dependsOn: generator
strategy:
matrix: $[ dependencies.generator.outputs['mtrx.legs'] ]
steps:
- script: echo $(myvar) # echos A or B depending on which leg is running
TFS'de YAML desteklenmiyor.
Dilimleme
Aracı işi, bir test paketini paralel olarak çalıştırmak için kullanılabilir. Örneğin, tek bir aracıda büyük bir 1000 test paketi çalıştırabilirsiniz. Veya iki aracı kullanabilir ve her bir aracıda paralel olarak 500 test çalıştır da kullanabilirsiniz.
Dilimlemeden yararlanacak şekilde, işteki görevler ait olduğu dilimi anlayacaktır.
Test Visual Studio görev, test yalıtma desteği olan böyle bir görevdir. Birden çok aracı yüklemişsanız, Visual Studio Test görevinin bu aracılarda paralel olarak nasıl çalıştırılamayacaklarını belirtebilirsiniz.
Strateji, parallel bir işin birçok kez çoğaltılmış olmasına olanak sağlar.
ve System.JobPositionInPhase değişkenleri her işe System.TotalJobsInPhase eklenir. Daha sonra değişkenler, işleri işler arasında bölmek için betiklerin içinde kullanılabilir.
Bkz. Aracı işlerini kullanarak paralel ve birden çok yürütme.
Aşağıdaki iş, değerleriyle beş kez ve uygun System.JobPositionInPhase şekilde System.TotalJobsInPhase ayarlanır.
jobs:
- job: Test
strategy:
parallel: 5
YAML henüz TFS'de desteklenmiyor.
İş değişkenleri
YAML kullanıyorsanız, işte değişkenler belirtilebilir. Değişkenler, $(variableName) makro söz dizimi kullanılarak görev girişlere geçirilir veya aşama değişkeni kullanılarak bir betik içinde erişilebilir.
İşte, bir işte değişkenleri tanımlama ve bunları görevler içinde kullanma örneği.
variables:
mySimpleVar: simple var value
"my.dotted.var": dotted var value
"my var with spaces": var with spaces value
steps:
- script: echo Input macro = $(mySimpleVar). Env var = %MYSIMPLEVAR%
condition: eq(variables['agent.os'], 'Windows_NT')
- script: echo Input macro = $(mySimpleVar). Env var = $MYSIMPLEVAR
condition: in(variables['agent.os'], 'Darwin', 'Linux')
- bash: echo Input macro = $(my.dotted.var). Env var = $MY_DOTTED_VAR
- powershell: Write-Host "Input macro = $(my var with spaces). Env var = $env:MY_VAR_WITH_SPACES"
YAML henüz TFS'de desteklenmiyor.
Koşul kullanma hakkında bilgi için bkz.Koşulları belirtme.
Çalışma alanı
Bir aracı havuzu işi çalıştırarak aracı üzerinde bir çalışma alanı oluşturur. Çalışma alanı, kaynağı indirdiği, adımları çalıştırdiği ve çıkış ürettiği bir dizindir. Çalışma alanı dizinine değişkeni kullanılarak işinize Pipeline.Workspace başvurabilirsiniz. Bunun altında çeşitli alt dizinler oluşturulur:
Bir aracı havuzu işi çalıştırarak aracı üzerinde bir çalışma alanı oluşturur. Çalışma alanı, kaynağı indirdiği, adımları çalıştırdiği ve çıkış ürettiği bir dizindir. Çalışma alanı dizinine değişkeni kullanılarak işinize Agent.BuildDirectory başvurabilirsiniz. Bunun altında çeşitli alt dizinler oluşturulur:
Build.SourcesDirectory, görevlerin uygulamanın kaynak kodunu indir olduğu yerdir.Build.ArtifactStagingDirectory, görevlerin yayımdan önce işlem hattı için gereken yapıtları indirmesi veya yapıtları karşıya yüklemesidir.Build.BinariesDirectory, görevlerin çıkışlarını yazacakları yerdir.Common.TestResultsDirectory, görevlerin test sonuçlarını karşıya yükley yaptıkları yerdir.
ve $(Build.ArtifactStagingDirectory) her $(Common.TestResultsDirectory) derlemeden önce her zaman silinir ve yeniden oluşturulur.
Bir işlem hattını kendi içinde barındırılan bir aracıda çalıştırırken, varsayılan olarak ve dışında alt dizinlerin hiçbiri ardışık iki çalıştırma arasında $(Common.TestResultsDirectory) temizlenmez. Sonuç olarak, bunu kullanmak için görevlerin uygulanması şartıyla artımlı derlemeler ve dağıtımlar gerçekleştirebilirsiniz. İşteki ayarını kullanarak bu workspace davranışı geçersiz kılabilirsiniz.
Önemli
Çalışma alanı temizleme seçenekleri yalnızca kendinden konak aracılar için geçerlidir. Microsoft tarafından barındırılan aracılar kullanırken, iş her zaman yeni bir aracıda çalıştırıldı.
- job: myJob
workspace:
clean: outputs | resources | all # what to clean up before the job runs
Seçeneklerden birini clean belirttiğinizde, bunlar aşağıdaki gibi yorumlanır:
outputs: YeniBuild.BinariesDirectorybir iş çalıştırmadan önce silin.resources: YeniBuild.SourcesDirectorybir iş çalıştırmadan önce silin.all: Yeni bir işPipeline.Workspaceçalıştırmadan önce dizinin tamamını silin.
jobs:
- deployment: deploy
pool:
vmImage: 'ubuntu-latest'
workspace:
clean: all
environment: staging
Not
Aracı özelliklerinize ve işlem hattı taleplerine bağlı olarak, her iş kendi kendine barındırılan havuz içinde farklı bir aracıya yönlendir olabilir. Sonuç olarak, sonraki işlem hattı çalıştırmaları (veya aynı işlem hattında aşamalar veya işler) için yeni bir aracı edinesiniz, bu nedenle temizleme işlemi sonraki çalıştırmaların, işlerin veya aşamaların önceki çalıştırmalardan, işlerden veya aşamalardan gelen çıkışlara erişebli olacağının garantisi değildir. bir işlem hattı işini çalıştırmak için hangi aracıların kullanılmasını belirtmek için aracı özelliklerini ve işlem hattı taleplerini yapılandırabilirsiniz, ancak havuzda talepleri karşıleyen tek bir aracı yoksa, izleyen işlerin önceki işlerle aynı aracıyı kullanma garantisi yoktur. Daha fazla bilgi için bkz. Talepleri belirtme.
Çalışma alanı temizlemeye ek olarak işlem hattı ayarları kullanıcı arabiriminde Temizleme ayarını yapılandırarak da temizlemeyi yapılandırabilirsiniz. Temiz ayarı trueolduğunda, işlem hattınızdaki her bir ödeme adımı için belirtmeye eşdeğerdir. Temiz ayarını yapılandırmak için:
İşlem hattınızı düzenleyin, ... seçeneğini veardından Tetikleyiciler'i seçin.
YAML,Kaynakları al'ıseçin ve istediğiniz Temizleme ayarını yapılandırabilirsiniz. Varsayılan değer false'tır.
YAML henüz TFS'de desteklenmiyor.
Yapıt indirme
Bu örnek YAML dosyası yapıtı WebSite yayımlar ve ardından yapıtı dosyasına $(Pipeline.Workspace) indirir. Dağıtma işi yalnızca Derleme işi başarılı olursa çalışır.
# test and upload my code as an artifact named WebSite
jobs:
- job: Build
pool:
vmImage: 'ubuntu-latest'
steps:
- script: npm test
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: '$(System.DefaultWorkingDirectory)'
artifactName: WebSite
# download the artifact and deploy it only if the build job succeeded
- job: Deploy
pool:
vmImage: 'ubuntu-latest'
steps:
- checkout: none #skip checking out the default repository resource
- task: DownloadBuildArtifacts@0
displayName: 'Download Build Artifacts'
inputs:
artifactName: WebSite
downloadPath: $(System.DefaultWorkingDirectory)
dependsOn: Build
condition: succeeded()
YAML henüz TFS'de desteklenmiyor.
dependsOn ve koşul kullanma hakkında bilgi için bkz.Koşulları belirtme.
OAuth belirteclerine erişim
Bir işte çalışan betiklerin geçerli kimlik doğrulamasına veya TFS OAuth Azure Pipelines erişmesine izin veabilirsiniz. Belirteç, kimlik doğrulaması için Azure Pipelines REST API.
OAuth belirteci YAML işlem hatlarında her zaman kullanılabilir.
kullanılarak göreve veya adıma açıkça eşlenmiş olması env gerekir.
Aşağıda bir örnek verilmiştir:
steps:
- powershell: |
$url = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/build/definitions/$($env:SYSTEM_DEFINITIONID)?api-version=4.1-preview"
Write-Host "URL: $url"
$pipeline = Invoke-RestMethod -Uri $url -Headers @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
Write-Host "Pipeline = $($pipeline | ConvertTo-Json -Depth 100)"
env:
SYSTEM_ACCESSTOKEN: $(system.accesstoken)
YAML henüz TFS'de desteklenmiyor.

