İş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 bir aracı havuzundaki aracıda çalışır.
  • Sunucu işleri Azure DevOps Server çalışır.
  • 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:

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 debug bir release uygulama x86x64 oluş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: Yeni Build.BinariesDirectory bir iş çalıştırmadan önce silin.
  • resources: Yeni Build.SourcesDirectory bir 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:

  1. İşlem hattınızı düzenleyin, ... seçeneğini veardından Tetikleyiciler'i seçin.

    Tetikleyicileri düzenleme.

  2. YAML,Kaynakları al'ıseçin ve istediğiniz Temizleme ayarını yapılandırabilirsiniz. Varsayılan değer false'tır.

    Temiz ayarı.

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.

Sırada ne var?