İşlem hattınızda işleri belirtme

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

Not

Microsoft Team Foundation Server (TFS) 2018 ve önceki sürümlerde derleme ve yayın işlem hatlarıtanım, çalıştırmalar derleme, hizmet bağlantılarıhizmet uç noktası, aşamalarortam ve işleraşama olarak 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ıralı olarak çalışan bir dizi adımdır. Başka bir deyişle, iş çalışmak üzere zamanlanabilir en küçük iş birimidir.

Derleme veya yayın işlem hattınızı işlerde düzenleyebilirsiniz. Her işlem hattının en az bir işi vardır. İş, birim olarak sıralı olarak çalışan bir dizi adımdır. Başka bir deyişle, iş çalışmak üzere zamanlanabilir en küçük iş birimidir.

Not

Derleme işlemlerinde işleri kullanmak için TFS 2018.2'yi yüklemeniz gerekir. TFS 2018 RTM'de yayın dağıtım işlemlerinde işleri kullanabilirsiniz.

Tek bir iş tanımlama

En basit örnekte işlem hattının tek bir işi vardır. Bu durumda, şablon kullanmadığınız sürece anahtar sözcüğünü job açıkça kullanmanız gerekmez. YAML dosyanızdaki adımları doğrudan belirtebilirsiniz.

Bu YAML dosyası , Microsoft tarafından barındırılan bir aracıda çalışan bir işe sahiptir ve çıktılarını alır Hello world.

pool:
  vmImage: 'ubuntu-latest'
steps:
- bash: echo "Hello world"

Bu işte ek özellikler belirtmek isteyebilirsiniz. Bu durumda anahtar sözcüğünü job kullanabilirsiniz.

jobs:
- job: myJob
  timeoutInMinutes: 10
  pool:
    vmImage: 'ubuntu-latest'
  steps:
  - bash: echo "Hello world"

İşlem hattınızın birden çok işi olabilir. Bu durumda anahtar sözcüğünü jobs kullanın.

jobs:
- job: A
  steps:
  - bash: echo "A"

- job: B
  steps:
  - bash: echo "B"

İşlem hattınızın birden çok aşaması olabilir ve her birinin birden çok işi olabilir. Bu durumda anahtar sözcüğünü stages kullanın.

stages:
- stage: A
  jobs:
  - job: A1
  - job: A2

- stage: B
  jobs:
  - job: B1
  - job: B2

bir iş belirtmek için tam söz dizimi:

- 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ş belirtmek için tam söz dizimi:

- 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ğıtmaksa (uygulamanızı derlemek veya test etmek değil), dağıtım işi adlı özel bir iş türü kullanabilirsiniz.

Dağıtım işinin söz dizimi:

- deployment: string        # instead of job keyword, use deployment keyword
  pool:
    name: string
    demands: string | [ string ]
  environment: string
  strategy:
    runOnce:
      deploy:
        steps:
        - script: echo Hi!

içinde dağıtım görevleri jobiçin adımlar ekleyebilirsiniz, ancak bunun yerine bir dağıtım işi kullanmanızı öneririz. Dağıtım işinin birkaç avantajı vardır. Örneğin, dağıttığınız şeyin geçmişini görebilme gibi avantajları da içeren bir ortama dağıtabilirsiniz.

YAML, TFS'de desteklenmez.

İş türleri

İşler, çalıştıkları yere bağlı olarak farklı türlerde olabilir.

  • Aracı havuzu işleri, aracı havuzundaki bir aracıda çalışır.
  • Sunucu işleri, Azure DevOps Server üzerinde çalışır.
  • Kapsayıcı işleri , aracı havuzundaki bir aracının üzerindeki kapsayıcıda çalışır. Kapsayıcı seçme hakkında daha fazla bilgi için bkz. Kapsayıcı işlerini tanımlama.
  • Aracı havuzu işleri, aracı havuzundaki bir aracıda çalışır.
  • Sunucu işleri, Azure DevOps Server üzerinde çalışır.
  • Aracı havuzu işleri , aracı havuzundaki bir aracıda çalıştırılır. Bu işler derleme ve yayın işlem hatlarında kullanılabilir.
  • Sunucu işleri 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

Bunlar en yaygın iş türüdür ve aracı havuzundaki bir aracıda çalışır.

  • Microsoft tarafından barındırılan aracıları kullanırken, işlem hattındaki her iş yeni bir aracı alır.
  • Bir aracının işinizi çalıştırmak için hangi özelliklere sahip olması gerektiğini belirtmek için şirket içinde barındırılan aracılarla talepleri kullanın. Ardışık işler için aynı aracıyı, aracı havuzunuzda işlem hattınızın taleplerine uyan birden fazla aracı olup olmadığına bağlı olarak alabilirsiniz. Havuzunuzda işlem hattının taleplerine uyan tek bir aracı varsa, işlem hattı bu aracı kullanılabilir olana kadar bekler.

Not

talepler ve yetenekler, işlerin işin gereksinimlerini karşılayan bir aracıyla eşleştirilebilmesi için şirket içinde barındırılan aracılarla kullanılmak üzere tasarlanmıştır. Microsoft tarafından barındırılan aracıları kullanırken, aracı için işin gereksinimleriyle eşleşen bir görüntü 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 özellikleri kullanmanız gerekmez.

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, TFS'de desteklenmez.

Aracı özellikleri hakkında daha fazla bilgi edinin.

Sunucu işleri

Bir sunucu işindeki görevler tarafından düzenlenip sunucuda yürütülür (Azure Pipelines veya TFS). Sunucu işi için aracı veya herhangi bir hedef bilgisayar gerekmez. Şu anda bir sunucu işinde yalnızca birkaç görev desteklenmektedir.

Aracısız işler tarafından desteklenen görevler

Şu anda aracısız işler için yalnızca aşağıdaki görevler kullanıma hazır olarak desteklenmektedir:

Görevler genişletilebilir olduğundan, uzantıları kullanarak daha fazla aracısız görev ekleyebilirsiniz. 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 # note: the value 'server' is a reserved keyword which indicates this is an agentless job

Basitleştirilmiş söz dizimini de kullanabilirsiniz:

jobs:
- job: string
  pool: server # note: the value 'server' is a reserved keyword which indicates this is an agentless job

YAML, TFS'de desteklenmez.

Bağımlılıklar

Tek bir aşamada birden çok iş tanımladığınızda, aralarındaki bağımlılıkları belirtebilirsiniz. İşlem hatları, bağımlılıkları olmayan en az bir iş içermelidir. Varsayılan olarak, değer ayarlanmadığı dependsOn sürece Azure DevOps YAML işlem hattı işleri paralel olarak çalıştırılır.

Not

Her aracı aynı anda yalnızca bir iş çalıştırabilir. Birden çok işi paralel çalıştırmak için birden çok aracı yapılandırmanız gerekir. Ayrıca yeterli paralel iş gerekir.

Birden çok iş ve bunların bağımlılıklarını tanımlamak için söz dizimi:

jobs:
- job: string
  dependsOn: string
  condition: string

Sıralı olarak oluşturulan ö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 (bağımlılık olmadan) derleyen örnek işler:

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

Yayma ö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

Fan-in ö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, TFS'de desteklenmez.

Koşullar

Her işin hangi koşullar altında çalıştırılacağını belirtebilirsiniz. Varsayılan olarak, bir iş başka bir işe bağımlı değilse veya bağımlı olduğu tüm işler tamamlandıysa ve başarılı olduysa çalışır. Önceki bir iş başarısız olsa bile bir işi çalıştırmaya zorlayarak veya özel bir koşul belirterek bu davranışı özelleştirebilirsiniz.

Önceki bir 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/main'))
  steps:
  - script: echo this only runs for master

Bir işin, önceki bir işte ayarlanan bir çıkış değişkeninin değerine göre çalıştırılmasını belirtebilirsiniz. Bu durumda, yalnızca doğrudan bağımlı işlerde ayarlanan 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, TFS'de desteklenmez.

Zaman aşımları

İşiniz yanıt vermediğinde veya çok uzun süre beklerken kaynakları almaktan kaçınmak için, işinizin ne kadar süreyle çalışmasına izin verilip verilmediği konusunda bir sınır belirlemek iyi bir fikirdir. İşi çalıştırma sınırını dakika cinsinden belirtmek için iş zaman aşımı ayarını kullanın. Değeri sıfır olarak ayarlamak, işin çalıştırabileceği anlamına gelir:

  • Şirket içinde barındırılan aracılarda sonsuza kadar
  • Ortak proje ve genel depo ile Microsoft tarafından barındırılan aracılarda 360 dakika (6 saat) boyunca
  • Özel bir proje veya özel depo ile Microsoft tarafından barındırılan aracılarda 60 dakika boyunca ( ek kapasite ödenmediği sürece)

Zaman aşımı süresi, iş çalışmaya başladığında başlar. İşin kuyruğa alındığı veya bir aracı beklediği süreyi içermez.

, timeoutInMinutes iş yürütme süresi için bir sınır ayarlanmasına izin verir. Belirtilmediğinde varsayılan değer 60 dakikadır. 0 Belirtildiğinde, üst sınır kullanılır (yukarıda açıklanmıştır).

, cancelTimeoutInMinutes önceki bir görev başarısız olursa dağıtım görevi çalışmaya devam etmek üzere ayarlandığında iş iptal süresi için bir sınır ayarlanmasına izin verir. Belirtilmediğinde varsayılan değer 5 dakikadır. Değer 1 ile 35790 dakika arasında olmalıdır.

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, TFS'de desteklenmez.

Microsoft tarafından barındırılan aracıları hedefleyen işler, ne kadar süreyle çalışabilecekleri konusunda ek kısıtlamalara sahiptir.

Ayrıca her görevin zaman aşımını ayrı ayrı ayarlayabilirsiniz; bkz. görev denetimi seçenekleri.

Çok işli yapılandırma

Oluşturduğunuz tek bir işten, birden çok aracı üzerinde paralel olarak birden çok iş çalıştırabilirsiniz. Bazı örnekler:

  • Çoklu yapılandırma derlemeleri: Paralel olarak birden çok yapılandırma oluşturabilirsiniz. Örneğin, hem de x64x86 platformlarda hem de debugrelease yapılandırmalar için bir Visual C++ uygulaması oluşturabilirsiniz. Daha fazla bilgi edinmek için bkz. Visual Studio Derlemesi - birden çok platform için birden çok yapılandırma.

  • Çoklu yapılandırma dağıtımları: Paralel olarak, örneğin farklı coğrafi bölgelere birden çok dağıtım çalıştırabilirsiniz.

  • Çoklu yapılandırma testi: Birden çok yapılandırmayı paralel olarak test edebilirsiniz.

  • Çoklu yapılandırma değişkeni boş olsa bile, çoklu yapılandırma her zaman en az bir iş oluşturur.

Strateji matrix , bir işin farklı değişken kümeleriyle birden çok kez gönderilmesini sağlar. etiketi paralellik maxParallel miktarını kısıtlar. Aşağıdaki iş, Konum ve Tarayıcı değerleri belirtilen şekilde ayarlanmış şekilde üç kez gönderilir. Ancak aynı anda yalnızca iki iş çalıştırılır.

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 US_IE ) yalnızca temel Latin alfabesi harflerini (A-Z, a-z), sayıları ve alt çizgilerini (_) içermelidir. Bunlar bir harf ile başlamalıdır. Ayrıca, 100 karakter veya daha kısa olmalıdır.

Matris oluşturmak için çıkış değişkenlerini kullanmak da mümkündür. Matrisi bir betik kullanarak oluşturmanız gerekiyorsa bu kullanışlı olabilir.

matrix dizeli bir JSON nesnesi içeren bir çalışma zamanı ifadesini kabul eder. Bu JSON nesnesi genişletildiğinde matris söz diziminin eşleşmesi gerekir. Aşağıdaki örnekte, JSON dizesini sabit kodladık, ancak 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

YAML, TFS'de desteklenmez.

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. Ya da iki aracı kullanabilir ve her birinde paralel olarak 500 test çalıştırabilirsiniz.

Dilimlemeden yararlanmak için, işteki görevler ait oldukları dilimi anlayacak kadar akıllı olmalıdır.

Visual Studio Test görevi, test dilimlemesi destekleyen bu tür görevlerden biridir. Birden çok aracı yüklediyseniz, Visual Studio Test görevinin bu aracılarda paralel olarak nasıl çalışacağını belirtebilirsiniz.

Strateji, parallel bir işin birçok kez çoğaltılabilmesini sağlar. ve değişkenleri System.JobPositionInPhaseSystem.TotalJobsInPhase her işe eklenir. Değişkenler daha sonra betiklerinizin içinde kullanılabilir ve işleri işler arasında bölebilir. Bkz. Aracı işlerini kullanarak paralel ve birden çok yürütme.

Aşağıdaki iş, değerleriyle System.JobPositionInPhase beş kez gönderilir ve System.TotalJobsInPhase uygun şekilde ayarlanır.

jobs:
- job: Test
  strategy:
    parallel: 5

YAML, TFS'de desteklenmez.

İş değişkenleri

YAML kullanıyorsanız, iş üzerinde değişkenler belirtilebilir. Değişkenler, $(variableName) makro söz dizimi kullanılarak görev girişlerine geçirilebilir veya aşama değişkeni kullanılarak bir betik içinde erişilebilir.

Burada bir işte değişkenleri tanımlama ve bunları görevler içinde kullanma örneği verilmiştir.

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, TFS'de desteklenmez.

Koşul kullanma hakkında bilgi için bkz. Koşulları belirtme.

Çalışma alanı

Bir aracı havuzu işi çalıştırdığınızda, aracı üzerinde bir çalışma alanı oluşturur. Çalışma alanı, kaynağı indirdiği, adımları çalıştırdığı ve çıkışlar ürettiği bir dizindir. Çalışma alanı dizinine, değişkeni kullanılarak Pipeline.Workspace işinizde başvurulabilir. Bunun altında çeşitli alt dizinler oluşturulur:

Bir aracı havuzu işi çalıştırdığınızda, aracı üzerinde bir çalışma alanı oluşturur. Çalışma alanı, kaynağı indirdiği, adımları çalıştırdığı ve çıkışlar ürettiği bir dizindir. Çalışma alanı dizinine, değişkeni kullanılarak Agent.BuildDirectory işinizde başvurulabilir. Bunun altında çeşitli alt dizinler oluşturulur:

  • Build.SourcesDirectory , görevlerin uygulamanın kaynak kodunu indirdiği yerdir.
  • Build.ArtifactStagingDirectory , görevlerin yayımlanmadan önce işlem hattı için gereken yapıtları indirdiği veya yapıtları karşıya yüklediği yerdir.
  • Build.BinariesDirectory , görevlerin çıkışlarını yazdığı yerdir.
  • Common.TestResultsDirectory görevlerin test sonuçlarını karşıya yüklediği yerdir.

$(Build.ArtifactStagingDirectory) ve $(Common.TestResultsDirectory) her derlemeden önce her zaman silinir ve yeniden oluşturulur.

Şirket içinde barındırılan bir aracıda işlem hattı çalıştırdığınızda, varsayılan olarak ve $(Common.TestResultsDirectory) dışındaki $(Build.ArtifactStagingDirectory) alt dizinlerin hiçbiri ardışık iki çalıştırma arasında temizlenmez. Sonuç olarak, görevlerin bunu kullanmak için uygulanması koşuluyla artımlı derlemeler ve dağıtımlar yapabilirsiniz. İş üzerindeki ayarı kullanarak workspace bu davranışı geçersiz kılabilirsiniz.

Önemli

Çalışma alanı temizleme seçenekleri yalnızca şirket içi barındırılan aracılar için geçerlidir. Microsoft tarafından barındırılan aracılar kullanılırken iş her zaman yeni bir aracıda çalıştırılır.

- job: myJob
  workspace:
    clean: outputs | resources | all # what to clean up before the job runs

Seçeneklerden birini belirttiğinizde clean , bunlar aşağıdaki gibi yorumlanır:

  • outputs: Yeni bir iş çalıştırmadan önce silin Build.BinariesDirectory .
  • resources: Yeni bir iş çalıştırmadan önce silin Build.SourcesDirectory .
  • all: Yeni bir iş çalıştırmadan önce dizinin tamamını Pipeline.Workspace silin.
  jobs:
  - deployment: MyDeploy
    pool:
      vmImage: 'ubuntu-latest'
    workspace:
      clean: all
    environment: staging

Not

Aracınızın özelliklerine ve işlem hattı taleplerine bağlı olarak, her iş şirket içinde barındırılan havuzunuzda farklı bir aracıya yönlendirilebilir. Sonuç olarak, sonraki işlem hattı çalıştırmaları (veya aynı işlem hattındaki aşamalar veya işler) için yeni bir aracı alabilirsiniz, bu nedenle temizleme işlemi yapılmaması , sonraki çalıştırmaların, işlerin veya aşamaların önceki çalıştırmalardan, işlerden veya aşamalardan gelen çıkışlara erişebileceğinin garantisi değildir. Bir işlem hattı işini çalıştırmak için hangi aracıların kullanılacağını belirtmek için aracı özelliklerini ve işlem hattı taleplerini yapılandırabilirsiniz, ancak havuzda talepleri karşılayan tek bir aracı yoksa, izleyen işlerin önceki işlerle aynı aracıyı kullanacağı garanti değildir. Daha fazla bilgi için bkz. Talepleri belirtme.

Çalışma alanı temizlemeye ek olarak, işlem hattı ayarları kullanıcı arabiriminde Temizle ayarını yapılandırarak temizlemeyi de yapılandırabilirsiniz. Temiz ayarı true olduğunda (varsayılan değeri de budur), işlem hattınızdaki her kullanıma alma adımı için belirtmeye clean: true eşdeğerdir. belirttiğinizdeclean: true, git getirmeden önce komutunu çalıştırırsınız git reset --hard HEADgit clean -ffdx. Temiz ayarını yapılandırmak için:

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

    Tetikleyicileri düzenleme.

  2. YAML'yi seçin, Kaynakları al'ı seçin ve istediğiniz Temiz ayarını yapılandırın. Varsayılan değer true'dur.

    Temiz ayar.

YAML, TFS'de desteklenmez.

Yapıt indirme

Bu örnek YAML dosyası yapıtı WebSite yayımlar ve ardından yapıtı öğesine $(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, TFS'de desteklenmez.

dependsOn ve koşulu kullanma hakkında bilgi için bkz. Koşulları belirtme.

OAuth belirtecine erişim

Bir işte çalışan betiklerin geçerli Azure Pipelines veya TFS OAuth güvenlik belirtecine erişmesine izin vekleyebilirsiniz. Belirteç, Azure Pipelines REST API'sinde kimlik doğrulaması yapmak için kullanılabilir.

OAuth belirteci YAML işlem hatlarında her zaman kullanılabilir. kullanılarak envgörev veya adıma açıkça eşlenmelidir. 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, TFS'de desteklenmez.

Sırada ne var?