YAML işlem hatlarındaki kaynaklar

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

Bu makalede YAML işlem hatlarına yönelik kaynaklar ele alınmaktadır. Kaynak, işlem hattı dışında bulunan bir işlem hattı tarafından kullanılan her şeydir. Bir kaynağı tanımladıktan sonra işlem hattınızın herhangi bir yerinde kullanabilirsiniz.

Kaynaklar, sürüm, yapıtlar, ilişkili işlemeler ve iş öğeleri dahil olmak üzere işlem hattınızın kullandığı hizmetler için tam izlenebilirlik sağlar. Kaynaklarınızdaki olayları tetikleme abonesi olarak DevOps iş akışlarınızı tamamen otomatikleştirebilirsiniz.

Kaynaklar şeması

YAML'deki kaynaklar, işlem hattı, derleme, depo, kapsayıcı, paket ve web kancası kaynaklarını temsil eder. Şema bilgilerinin tamamı için Azure Pipelines için YAML şema başvurusundaki kaynak tanımına bakın.

Bir kaynak işlem hattını tetiklediğinde aşağıdaki değişkenler ayarlanır:

resources.triggeringAlias
resources.triggeringCategory

Değişkenin Build.Reason ayarlanması için bu değerlerin olması ResourceTrigger gerekir. Bir kaynak işlem hattı çalıştırmasını tetiklemediyse değerler boş olur.

İşlem hatları kaynak tanımı

Yapıtlar üreten bir işlem hattınız varsa, bir pipelines kaynak tanımlayarak yapıtları kullanabilirsiniz. Kaynağı yalnızca Azure Pipelines kullanabilir pipelines . İşlem hattı kaynağında sürekli dağıtım (CD) iş akışlarınız için tetikleyiciler ayarlayabilirsiniz.

Kaynak tanımınızda, pipeline işlem hattınızın ilerleyen bölümlerinde işlem hattı kaynağına başvurmak için kullanabileceğiniz benzersiz bir değerdir. source, işlem hattı yapıtını oluşturan işlem hattının adıdır. Şema bilgilerinin tamamı için resources.pipelines.pipeline tanımına bakın.

İşlem hattı kaynak değişkenlerini kullanırken veya yapıtları indirirken işlem hattınızın diğer bölümlerinden işlem hattı kaynağına başvurmak için tarafından pipeline tanımlanan etiketi kullanırsınız. İşlem hattı yapıtlarını indirmenin alternatif bir yolu için bkz . Yapıtları indirme.

Önemli

İşlem hattı kaynak tetikleyicisi tanımladığınızda:

  • pipeline Kaynak geçerli işlem hattıyla aynı depodan geliyorsa veya selftetikleme, olayın oluşturulduğu aynı dalı ve işlemeyi izler.
  • İşlem hattı kaynağı farklı bir depodan geliyorsa, geçerli işlem hattı kaynak deposunun varsayılan dalında pipeline tetikler.

Örnek işlem hattı kaynak tanımları

Aşağıdaki örnek, aynı proje içindeki bir işlem hattındaki yapıtları tüketir.

resources:
  pipelines:
  - pipeline: SmartHotel-resource # identifier to use in pipeline resource variables
    source: SmartHotel-CI # name of the pipeline that produces the artifacts

Başka bir projeden işlem hattı kullanmak için proje adını ve kaynak adını eklersiniz. Aşağıdaki örnek, işlem hattı el ile tetiklendiğinde veya zamanlandığında varsayılan sürümü çözümlemek için kullanır branch . Dal girişi joker karakter içeremez.

resources:
  pipelines:
  - pipeline: SmartHotel
    project: DevOpsProject
    source: SmartHotel-CI
    branch: releases/M142

Aşağıdaki örnekte basit tetikleyicisi olan bir işlem hattı kaynağı gösterilmektedir.

resources:
  pipelines:
  - pipeline: SmartHotel
    project: DevOpsProject
    source: SmartHotel-CI
    trigger: true

Aşağıdaki örnekte dal koşullarına sahip bir işlem hattı kaynağı trigger gösterilmektedir.

resources:
  pipelines:
  - pipeline: SmartHotel
    project: DevOpsProject
    source: SmartHotel-CI
    trigger:
      branches:
      - releases/*
      - resources.triggeringAlias

Aşağıdaki örnek, CD işlem hatları için tetikleyici koşullarını değerlendirmek için filtreleri kullanır stages . Aşamalar işlecini AND kullanır. Sağlanan tüm aşamaların başarıyla tamamlanmasının ardından CD işlem hattı tetikler.

resources:
  pipelines:
  - pipeline: MyCIAlias  
    project: Fabrikam  
    source: Farbrikam-CI  
    trigger:    
      stages:
      - PreProduction
      - Production

Aşağıdaki örnek, varsayılan sürüm değerlendirmesi ve tetikleyiciler için filtreleri kullanır tags . Etiketler işlecini AND kullanır.

tags sürekli tümleştirme (CI) veya CD işlem hattında ayarlanır. Bu etiketler Git deposundaki dallarda ayarlanan etiketlerden farklıdır.

resources:
  pipelines:
  - pipeline: MyCIAlias
    project: Fabrikam
    source: Farbrikam-CI
    tags: 
    - Production 
    trigger:
      tags:
      - Production
      - Signed

İşlem hatları yapıtı sürüm değerlendirmesi

Kaynak işlem hattının yapıt sürümü, işlem hattının nasıl tetiklendiğinden bağlıdır.

El ile veya zamanlanmış tetikleyici

İşlem hattı çalıştırması el ile tetiklenmiş veya zamanlanmışsa, , branchve tags özelliklerinin değerleri versionyapıt sürümünü tanımlar. Girişin branch joker karakterleri olamaz. tags Özellikler işlecini AND kullanır.

Belirtilen özellikler Yapıt sürümü
version Belirtilen çalıştırma numarasına sahip derlemedeki yapıtlar
branch Belirtilen dalda yapılan en son derlemedeki yapıtlar
tags liste Belirtilen tüm etiketleri içeren en son derlemedeki yapıtlar
branch ve tags liste Belirtilen tüm etiketleri içeren belirtilen dalda yapılan en son derlemedeki yapıtlar
Hiçbiri Tüm dallardaki en son derlemedeki yapıtlar

Aşağıdaki pipeline kaynak tanımı, branch işlem hattı el ile tetiklendiğinde veya zamanlandığında varsayılan sürümü değerlendirmek için ve tags özelliklerini kullanır. İşlem hattının çalıştırılmasını el ile tetiklediğinizde, MyCIAlias işlem hattı yapıtları sürümü ve PrepProduction etiketlerini içeren Production dalda main yapılan en son derlemedir.

resources:
  pipelines:
  - pipeline: MyCIAlias
    project: Fabrikam
    source: Farbrikam-CI
    branch: main
    tags:
    - Production
    - PreProduction

Kaynak işlem hattı tamamlama tetikleyicisi

Kaynak işlem hatlarından biri tamamlandığında işlem hattı tetiklendiğinde yapıtlar sürümü tetikleyen işlem hattının sürümüdür. , branchve tags özelliklerinin değerleri versionyoksayılır.

Belirtilen tetikleyiciler Sonuç
branches Yeni işlem hattı çalıştırması, kaynak işlem hattı dallardan birinde include çalıştırmayı başarıyla tamamladığınızda tetikler.
tags Yeni işlem hattı çalıştırması, kaynak işlem hattı belirtilen tüm etiketlerle etiketlenmiş bir çalıştırmayı başarıyla tamamladığınızda tetikler.
stages Yeni bir işlem hattı çalıştırması, kaynak işlem hattı belirtilen stagesöğesini başarıyla yürüttüğünde tetikler.
branches, tags ve stages Yeni işlem hattı çalıştırması, kaynak işlem hattı çalıştırması tüm dal, etiketler ve aşama koşullarını karşılasa tetikler.
trigger: true Kaynak işlem hattı bir çalıştırmayı başarıyla tamamladığınızda yeni bir işlem hattı çalıştırması tetikler.
Hiçbir şey Kaynak işlem hattı bir çalıştırmayı başarıyla tamamladığında yeni işlem hattı çalıştırması tetiklemez.

Kaynak işlem hattı her çalıştırıldığında SmartHotel-CI aşağıdaki işlem hattı çalışır:

  • Dallardan releases birinde veya dalda main çalışır
  • hem hem de Verified ile etiketlenmiş Signed
  • hem hem PreProduction de aşamalarını Production tamamlar
resources:
  pipelines:
  - pipeline: SmartHotel
    project: DevOpsProject
    source: SmartHotel-CI
    trigger:
      branches:
        include:
        - releases/*
        - main
        exclude:
        - topic/*
      tags: 
      - Verified
      - Signed
      stages:
      - Production
      - PreProduction
      

İşlem hattı yapıtı indirme

Bu adım geçerli download çalıştırmayla veya başka bir işlem hattı kaynağıyla ilişkili yapıtları indirir.

Geçerli işlem hattındaki tüm yapıtlar ve tüm pipeline kaynakları otomatik olarak indirilir ve her dağıtım işinin başında kullanıma sunulur. olarak ayarlayarak download noneveya başka bir işlem hattı kaynak tanımlayıcısı belirterek bu davranışı geçersiz kılabilirsiniz.

Normal iş yapıtları otomatik olarak indirilir. Gerektiğinde açıkça kullanın download .

Kaynaktan alınan pipeline yapıtlar $(PIPELINE) öğesine indirilir. WORKSPACE)/<pipeline-identifier>/<artifact-identifier> klasörü. Daha fazla bilgi için bkz . İşlem hattı yapıtlarını yayımlama ve indirme.

İsteğe bağlı artifact özellik yapıt adlarını belirtir. Belirtilmezse, tüm kullanılabilir yapıtlar indirilir. İsteğe bağlı patterns özellik, eklenecek dosyaları temsil eden desenleri tanımlar. Tam şema bilgileri için steps.download tanımına bakın.

- job: deploy_windows_x86_agent
  steps:
  - download: SmartHotel
    artifact: WebTier1
    patterns: '**/*.zip'

İşlem hattı kaynak değişkenleri

Her çalıştırmada, bir işlem hattı kaynağının meta verileri önceden tanımlanmış değişkenler olarak tüm işler tarafından kullanılabilir. Bu değişkenler yalnızca çalışma zamanında işlem hattınızda kullanılabilir ve bu nedenle işlem hattı derleme zamanında değerlendirilen şablon ifadelerinde kullanılamaz.

Daha fazla bilgi için bkz . Önceden tanımlanmış değişkenler olarak işlem hattı kaynak meta verileri. Değişken söz dizimi hakkında daha fazla bilgi edinmek için bkz . Değişkenleri tanımlama.

Aşağıdaki örnek, işlem hattı kaynağı için myresourcevars önceden tanımlanmış değişken değerlerini döndürür.

resources:
  pipelines:
  - pipeline: myresourcevars
    source: mypipeline
    trigger: true 

steps:
- script: |
    echo $(resources.pipeline.myresourcevars.pipelineID)
    echo $(resources.pipeline.myresourcevars.runName)
    echo $(resources.pipeline.myresourcevars.runID)
    echo $(resources.pipeline.myresourcevars.runURI)
    echo $(resources.pipeline.myresourcevars.sourceBranch)
    echo $(resources.pipeline.myresourcevars.sourceCommit)
    echo $(resources.pipeline.myresourcevars.sourceProvider)
    echo $(resources.pipeline.myresourcevars.requestedFor)
    echo $(resources.pipeline.myresourcevars.requestedForID)

Kaynak tanımını oluşturur

Yapıtlar üreten bir dış CI derleme sisteminiz varsa, yapıtları kaynaklarla builds kullanabilirsiniz. Kaynak build Jenkins, TeamCity veya CircleCI gibi herhangi bir dış CI sisteminden olabilir.

Kategori builds genişletilebilir. Derleme hizmetinizdeki yapıtları kullanmak için bir uzantı yazabilir ve öğesinin bir parçası buildsolarak yeni bir hizmet türü tanıtabilirsiniz.

Tanımda build varsayılan version olarak en son başarılı derlemeyi kullanır. trigger varsayılan olarak etkin değildir ve açıkça ayarlanmalıdır. Şema bilgilerinin tamamı için resources.builds.build tanımına bakın.

Aşağıdaki örnekte Jenkins kaynağıdır type.

resources:
  builds:
  - build: Spaceworkz
    type: Jenkins
    connection: MyJenkinsServer 
    source: SpaceworkzProj   # name of the Jenkins source project
    trigger: true

Önemli

Tetikleyiciler, barındırılan Jenkins için yalnızca Azure DevOps'un Jenkins sunucusuyla görüş açısına sahip olduğu durumlarda desteklenir.

downloadBuild görevi

Kaynak build yapıtları işlerinize/deploy-jobs'larınıza otomatik olarak indirilmiyor. Kaynaktan build yapıtları işlerinizin bir parçası olarak kullanmak için, görevi açıkça eklemeniz downloadBuild gerekir. Her dağıtım veya iş için indirme davranışını özelleştirebilirsiniz.

Bu görev, çalışma zamanının tanımladığı kaynak türü build için karşılık gelen indirme görevine otomatik olarak çözümür. Kaynaktan alınan build yapıtlar $(PIPELINE) öğesine indirilir. ÇALIŞMA ALANI)/<build-identifier>/ klasörü.

Tanımda downloadBuild , yapıtların indirilmesi için kaynağı belirtirsiniz. İsteğe bağlı artifact özellik, indirilmesi gereken yapıtları belirtir. Belirtilmezse, kaynakla ilişkili tüm yapıtlar indirilir.

İsteğe bağlı patterns özellik, indirilmesi gereken minimatch yolunu veya minimatch yollarının listesini tanımlar. Boşsa, yapıtın tamamı indirilir. Örneğin, aşağıdaki kod parçacığı yalnızca *.zip dosyalarını indirir.

- job: deploy_windows_x86_agent
  steps:
  - downloadBuild: Spaceworkz
    patterns: '**/*.zip'

Şema bilgilerinin tamamı için steps.downloadBuild tanımına bakın.

Depo kaynak tanımı

anahtar repository sözcüğü bir dış depo belirtmenize olanak tanır. İşlem hattınızda başka bir depoda şablonlar varsa veya hizmet bağlantısı gerektiren bir depoyla çoklu depo kullanıma alma işlemi kullanmak istiyorsanız bu kaynağı kullanabilirsiniz. Bu depoları sisteme bildirmeniz gerekir.

Örneğin:

resources:
  repositories:
  - repository: common
    type: github
    name: Contoso/CommonTools
    endpoint: MyContosoServiceConnection

Şema bilgilerinin tamamı için resources.repositories.repository tanımına bakın.

Depo kaynak türleri

Azure Pipelines, depo türü için aşağıdaki değerleri destekler: git, github, githubenterpriseve bitbucket.

Tür Ad değeri Örnek
type: git Aynı projede veya aynı kuruluşta başka bir depo. Aynı proje: name: otherRepo
Aynı kuruluştaki başka bir proje: name: otherProject/otherRepo.
type: github Kullanıcı veya kuruluş da dahil olmak üzere GitHub deposunun tam adı. name: Microsoft/vscode
type: githubenterprise Kullanıcı veya kuruluş da dahil olmak üzere GitHub Enterprise deposunun tam adı. name: Microsoft/vscode
type: bitbucket Kullanıcı veya kuruluş dahil olmak üzere Bitbucket Bulut deposunun tam adı. name: MyBitbucket/vscode

Depo kaynak değişkenleri

Her çalıştırmada, bir depo kaynağı için aşağıdaki meta veriler çalışma zamanı değişkenleri biçimindeki tüm işler için kullanılabilir. <Alias>, depo kaynağınıza verdiğiniz tanımlayıcıdır.

resources.repositories.<Alias>.name
resources.repositories.<Alias>.ref
resources.repositories.<Alias>.type
resources.repositories.<Alias>.id
resources.repositories.<Alias>.url

Aşağıdaki örnekte diğer adına commonsahip bir depo kaynağı vardır, bu nedenle depo kaynak değişkenlerine kullanılarak resources.repositories.common.*erişilir.

resources:
  repositories:
    - repository: common
      type: git
      ref: main
      name: Repo

variables:
  ref: $[ resources.repositories.common.ref ]
  name: $[ resources.repositories.common.name ]
  id: $[ resources.repositories.common.id ]
  type: $[ resources.repositories.common.type ]
  url: $[ resources.repositories.common.url ]

steps:
- bash: |
    echo "name = $(name)"
    echo "ref = $(ref)"
    echo "id = $(id)"
    echo "type = $(type)"
    echo "url = $(url)"

Her çalıştırmada, bir depo kaynağı için aşağıdaki meta veriler çalışma zamanı değişkenleri biçimindeki tüm işler için kullanılabilir. <Alias>, depo kaynağınıza verdiğiniz tanımlayıcıdır.

resources.repositories.<Alias>.name
resources.repositories.<Alias>.ref
resources.repositories.<Alias>.type
resources.repositories.<Alias>.id
resources.repositories.<Alias>.url
resources.repositories.<Alias>.version

Aşağıdaki örnekte diğer adına commonsahip bir depo kaynağı vardır, bu nedenle depo kaynak değişkenlerine kullanılarak resources.repositories.common.*erişilir.

resources:
  repositories:
    - repository: common
      type: git
      ref: main
      name: Repo

variables:
  ref: $[ resources.repositories.common.ref ]
  name: $[ resources.repositories.common.name ]
  id: $[ resources.repositories.common.id ]
  type: $[ resources.repositories.common.type ]
  url: $[ resources.repositories.common.url ]
  version: $[ resources.repositories.common.version ]

steps:
- bash: |
    echo "name = $(name)"
    echo "ref = $(ref)"
    echo "id = $(id)"
    echo "type = $(type)"
    echo "url = $(url)"
    echo "version = $(version)"

Depolar için checkout anahtar sözcüğü

Kaynaktaki repository depolar, işlerinizde otomatik olarak eşitlenmez. Kaynağın checkout parçası olarak tanımlanan bir depoyu getirmek için anahtar sözcüğünü repository kullanın. Şema bilgilerinin tamamı için steps.checkout tanımına bakın.

Daha fazla bilgi için bkz . İşlem hattınızdaki birden çok depoya göz atın.

Kapsayıcılar kaynak tanımı

CI/CD işlem hatlarınızın bir parçası olarak kapsayıcı görüntülerini kullanmanız gerekiyorsa, kaynakları kullanabilirsiniz containers . Kaynak container , genel veya özel bir Docker kayıt defteri veya Azure Container Registry örneği olabilir.

İşinizin bir parçası olarak genel bir kapsayıcı kaynak görüntüsü kullanabilir veya kapsayıcı işleri için kaynağı kullanabilirsiniz. İşlem hattınız bir veya daha fazla hizmetin desteğini gerektiriyorsa, hizmet kapsayıcıları oluşturmanız ve bu kapsayıcılara bağlanmanız gerekir. Hizmetler arasında veri paylaşmak için birimleri kullanabilirsiniz.

İşlem hattınızın bir parçası olarak bir Docker kayıt defterinden görüntü kullanmanız gerekiyorsa genel bir kapsayıcı kaynağı tanımlayabilirsiniz. Anahtar type sözcük gerekmez. Örneğin:

resources:         
  containers:
  - container: smartHotel 
    endpoint: myDockerRegistry
    image: smartHotelApp 

Şema bilgilerinin tamamı için resources.containers.container tanımına bakın.

Not

enabled: 'true' Tüm görüntü etiketleri için kapsayıcı tetikleyicilerini etkinleştirme söz dizimi, diğer kaynak tetikleyicilerinin söz diziminden farklıdır. Belirli kaynaklar için doğru söz dizimini kullandığınızdan emin olun.

Azure Container Registry kaynak türü

Azure Container Registry görüntülerinizi kullanmak için birinci sınıf kapsayıcı kaynak türünü acrkullanabilirsiniz. Bu kaynak türünü işlerinizin bir parçası olarak ve otomatik işlem hattı tetikleyicilerini etkinleştirmek için kullanabilirsiniz.

Otomatik işlem hattı tetikleyicilerini kullanmak için Azure Container Registry için Katkıda Bulunan veya Sahip izinlerine sahip olmanız gerekir. Daha fazla bilgi için bkz . Azure Container Registry rolleri ve izinleri.

Kaynak türünü kullanmak acr için Azure kapsayıcı kayıt defteriniz için , resourceGroupve repository değerlerini belirtmeniz azureSubscriptiongerekir. Örneğin:

resources:         
  containers:
  - container: petStore      
    type: acr  
    azureSubscription: ContosoConnection
    resourceGroup: ContosoGroup
    registry: petStoreRegistry
    repository: myPets
    trigger: 
      tags:
        include: 
        - production* 

Not

Tetikleyici değerlendirmesi yalnızca varsayılan dalda gerçekleşir. Doğru varsayılan dalı ayarladığınızdan veya YAML dosyasını geçerli varsayılan dalla birleştirdiğinden emin olun. İşlem hattı varsayılan dalını değiştirme hakkında daha fazla bilgi için İşlem hattı varsayılan dalı'nı ziyaret edin.

Kapsayıcı kaynak değişkenleri

Bir kapsayıcıyı kaynak olarak tanımladığınızda, kapsayıcı görüntüsü meta verileri işlem hattına değişken olarak geçer. Görüntü, kayıt defteri ve bağlantı ayrıntıları gibi bilgilere kapsayıcı dağıtım görevlerinizde kullanılan tüm işlerde erişilebilir.

Kapsayıcı kaynak değişkenleri Docker ve Azure Container Registry ile çalışır. Yerel görüntü kapsayıcıları için kapsayıcı kaynak değişkenlerini kullanamazsınız. location değişkeni yalnızca kapsayıcı kaynaklarının acr türüne uygulanır.

Aşağıdaki örnekte adlı arm-connectionbir Azure Resource Manager hizmet bağlantısı vardır. Daha fazla bilgi için bkz . Azure kapsayıcı kayıt defterleri, depolar ve görüntüler.

resources:
  containers:
  - container: mycontainer
    type: ACR
    azureSubscription: arm-connection
    resourceGroup: rg-storage-eastus
    registry: mycontainerregistry
    repository: hello-world
    trigger:
      tags:
      - latest

steps:
- script: echo |
    echo $(resources.container.mycontainer.type)
    echo $(resources.container.mycontainer.registry)
    echo $(resources.container.mycontainer.repository)
    echo $(resources.container.mycontainer.tag)
    echo $(resources.container.mycontainer.digest)
    echo $(resources.container.mycontainer.URI)
    echo $(resources.container.mycontainer.location)

Paketler kaynak tanımı

YAML işlem hatlarında kaynak olarak NuGet ve npm GitHub paketlerini kullanabilirsiniz. Yeni bir paket sürümü yayınlandığında otomatik işlem hattı tetikleyicilerini etkinleştirmek için özelliğini olarak trueayarlayıntrigger.

Kaynakları tanımlarkenpackage, özelliğinde name Repository>/<Name> paketini <belirtin ve paketi type veya npmolarak NuGet ayarlayın. GitHub paketlerini kullanmak için kişisel erişim belirteci (PAT) tabanlı kimlik doğrulamasını kullanın ve PAT kullanan bir GitHub hizmet bağlantısı oluşturun.

Şema bilgilerinin tamamı için resources.packages.package tanımına bakın.

Paketler varsayılan olarak işlere otomatik olarak indirilir. İndirmek için getPackage kullanın.

Aşağıdaki örnekte adlı bir GitHub npm paketine adlı pat-contoso bir GitHub hizmet bağlantısı vardırcontoso. Daha fazla bilgi için bkz . GitHub paketleri.

resources:
  packages:
    - package: contoso
      type: npm
      connection: pat-contoso
      name: myname/contoso 
      version: 7.130.88 
      trigger: true

pool:
  vmImage: 'ubuntu-latest'

steps:
- getPackage: contoso

Web kancaları kaynak tanımı

Not

Web kancaları Azure DevOps Server 2020.1'de yayımlandı.

Yapıtları kullanabilir ve işlem hattı, kapsayıcı, derleme ve paket kaynaklarıyla otomatik tetikleyicileri etkinleştirebilirsiniz. Ancak bu kaynakları dış olaylara veya hizmetlere göre dağıtımlarınızı otomatikleştirmek için kullanamazsınız.

webhooks YAML işlem hatlarındaki kaynak, iş akışlarını otomatikleştirmek için işlem hatlarınızı GitHub, GitHub Enterprise, Nexus ve Artifactory gibi dış hizmetlerle tümleştirmenize olanak tanır. Web kancaları aracılığıyla herhangi bir dış olaya abone olabilir ve işlem hatlarınızı tetikleme olaylarını kullanabilirsiniz.

Web kancaları işlem hatları, derlemeler, kapsayıcılar veya paketler gibi birinci sınıf kaynaklar tarafından desteklenmeyen dış web kancası olaylarını temel alarak iş akışınızı otomatikleştirir. Ayrıca, Azure DevOps'un işlem üzerinde görünürlüğü olmayan şirket içi hizmetler için hizmette web kancalarını yapılandırabilir ve işlem hatlarınızı otomatik olarak tetikleyebilirsiniz.

Bir web kancası olayına abone olmak için işlem hattınızda bir web kancası kaynağı tanımlar ve bunu gelen web kancası hizmet bağlantısına işaret edersiniz. Ayrıca, her işlem hattının tetikleyicilerini özelleştirmek için web kancası kaynağında JSON yükü verilerini temel alan daha fazla filtre tanımlayabilirsiniz.

Gelen web kancası hizmet bağlantısı bir web kancası olayı aldığında, web kancası olayına abone olan tüm işlem hatları için yeni bir çalıştırma tetikler. biçimini ${{ parameters.<WebhookAlias>.<JSONPath>}}kullanarak işlerinizdeki JSON yük verilerini değişken olarak kullanabilirsiniz.

Şema bilgilerinin tamamı için resources.webhooks.webhook tanımına bakın.

Aşağıdaki örnek bir web kancası kaynağını tanımlar:

resources:
  webhooks:
    - webhook: WebHook
      connection: IncomingWH

steps:  
- script: echo ${{ parameters.WebHook.resource.message.title }}

Web kancası tetikleyicileri

Web kancası tetikleyicilerini yapılandırmak için önce aşağıdaki bilgileri sağlayarak dış hizmetinizde bir web kancası ayarlarsınız:

  • İstek Url'si: https://dev.azure.com/<Azure DevOps organization>/_apis/public/distributedtask/webhooks/<webhook name>?api-version=6.0-preview
  • Gizli dizi (İsteğe bağlı): JSON yükünüzün güvenliğini sağlamanız gerekiyorsa bir gizli dizi değeri sağlayın.

Ardından yeni bir gelen web kancası hizmeti bağlantısı oluşturacaksınız. Bu hizmet bağlantı türü için aşağıdaki bilgileri tanımlarsınız:

  • Web Kancası Adı: Dış hizmetinizde oluşturulan web kancasıyla aynıdır.
  • Gizli dizi (İsteğe bağlı): Gelen isteğin doğrulanması için yükün HMAC-SHA1 karması doğrulamak için kullanılır. Web kancanızı oluştururken gizli dizi kullandıysanız, aynı gizli diziyi sağlamanız gerekir.
  • Http Üst Bilgisi: İstek doğrulaması için yükün HMAC-SHA1 karma değerini içeren istekteki HTTP üst bilgisi. Örneğin, GitHub istek üst bilgisi şeklindedir X-Hub-Signature.

Gelen web kancası hizmeti bağlantısını gösteren ekran görüntüsü.

bir web kancası kullanarak işlem hattınızı tetiklemeniz için https://dev.azure.com/<org_name>/_apis/public/distributedtask/webhooks/<webhook_connection_name>?api-version=6.0-previewadresine bir POST istekte bulunursunuz. Bu uç nokta genel kullanıma açıktır ve yetkilendirme gerektirmez. İsteğin aşağıdaki örneğe benzer bir gövdesi olmalıdır:

{
    "resource": {
        "message": {
            "title": "Hello, world!",
            "subtitle": "I'm using WebHooks!"
        }
    }
}

Not

Web kancasının istek gövdesinden verilere erişmek yanlış YAML'ye yol açabilir. Örneğin işlem hattı adımı - script: echo ${{ parameters.WebHook.resource.message }} , geçersiz YAML oluşturan JSON iletisinin tamamını çeker. Oluşturulan YAML geçersiz hale geldiği için bu web kancası aracılığıyla tetiklenen işlem hattı çalışmaz.

Aşağıdaki kod parçacığında web kancası filtrelerini kullanan başka bir örnek gösterilmektedir.

resources:
  webhooks:
    - webhook: MyWebhookTrigger          
      connection: MyWebhookConnection    
      filters:
        - path: repositoryName      
          value: maven-releases     
        - path: action
          value: CREATED
steps:
- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      Write-Host ${{ parameters.MyWebhookTrigger.repositoryName}}
      Write-Host ${{ parameters.MyWebhookTrigger.component.group}}

Kaynaklar için el ile sürüm seçici

Bir CD YAML işlem hattını el ile tetiklediğinizde, Azure Pipelines sağlanan girişlere göre işlem hattında tanımlanan kaynaklar için varsayılan sürümleri otomatik olarak değerlendirir. Ancak Azure Pipelines, varsayılan sürümü zamanlanmış tetikleyiciler için değerlendirirken veya el ile bir sürüm seçmediğinizde yalnızca başarıyla tamamlanmış CI çalıştırmalarını dikkate alır.

Çalıştırma oluştururken farklı bir sürümü el ile seçmek için kaynak sürümü seçicisini kullanabilirsiniz. Kaynak sürümü seçici işlem hattı, derleme, depo, kapsayıcı ve paket kaynakları için desteklenir.

İşlem hattı kaynakları için tüm dallardaki tüm kullanılabilir çalıştırmaları görebilir, işlem hattı numarasına veya dallarına göre bunları arayabilir ve başarılı, başarısız veya devam eden bir çalıştırma seçebilirsiniz. Bu esneklik, bir çalıştırmanın ihtiyacınız olan tüm yapıtları oluşturduğundan eminseniz CD işlem hattınızı çalıştırabilmenizi sağlar. Ci çalıştırmasının tamamlanmasını beklemeniz veya ilgisiz bir aşama hatası nedeniyle yeniden çalıştırmanız gerekmez.

Kaynak sürümü seçicisini kullanmak için, İşlem hattını çalıştır bölmesinde Kaynaklar'ı seçin, ardından bir kaynak seçin ve kullanılabilir sürümler listesinden belirli bir sürümü seçin.

Depo kaynak sürümü seçicisini gösteren ekran görüntüsü.

GitHub paketleri gibi kullanılabilir sürümleri getirememenize neden olan kaynaklar için, sürüm seçici bir metin alanı sağlar, böylece çalıştırılacak sürümün seçileceği sürümü girebilirsiniz.

YAML işlem hatlarında kaynak yetkilendirme

Kaynakların işlem hatlarında kullanılabilmesi için önce yetkilendirilmeleri gerekir. Kaynak sahipleri kaynaklarına erişebilecek kullanıcıları ve işlem hatlarını denetler. YAML işlem hattını kaynakları kullanmak üzere yetkilendirmenin çeşitli yolları vardır.

  • Tüm işlem hatlarını kaynağa erişim yetkisi vermek için kaynak yönetimi deneyimini kullanın. Örneğin, değişken grupları ve güvenli dosyalar Kitaplık sayfasında İşlem Hatları'nın altında, aracı havuzları ve hizmet bağlantıları ise Project ayarlarında yönetilir. Bu yetkilendirme, test kaynakları gibi kaynaklara erişimi kısıtlamanız gerekmiyorsa kullanışlıdır.

  • İşlem hattı oluşturduğunuzda, bu kaynaklar için Kullanıcı rolüne sahipseniz YAML dosyasında başvuruda bulunılan tüm kaynaklar işlem hattı tarafından kullanılmak üzere otomatik olarak yetkilendirilir.

  • YAML dosyasına kaynak eklerseniz ve derleme gibi Could not find a <resource> with name <resource-name>. The <resource> does not exist or has not been authorized for use.bir hatayla başarısız olursa, başarısız derlemedeki kaynakları yetkilendirme seçeneği görürsünüz.

    Kaynak için Kullanıcı rolünün bir üyesiyseniz, bu seçeneği belirleyebilir ve başarısız derlemede kaynağı yetkileyebilirsiniz. Kaynak yetkilendirildikten sonra yeni bir derleme başlatabilirsiniz.

  • Projeniz için aracı havuzu güvenlik rollerinin doğru olduğunu doğrulayın.

Kaynaklar için onay denetimleri

Bir kaynağın ne zaman çalıştığını el ile denetlemek için onay denetimlerini ve şablonlarını kullanabilirsiniz. Gerekli şablon onay denetimiyle, kaynak veya ortam kullanan tüm işlem hatlarının belirli bir YAML şablonundan genişletılmasını zorunlu kılabilirsiniz.

Gerekli şablon onayının ayarlanması, kaynağınızın yalnızca belirli koşullar altında kullanılmasını sağlar ve güvenliği artırır. Şablonlarla işlem hattı güvenliğini geliştirme hakkında daha fazla bilgi edinmek için bkz. Güvenlik için şablonları kullanma.

Izlenebilirlik

Azure Pipelines, işlem hattı veya dağıtım işi düzeyinde tüketilen tüm kaynaklar için tam izlenebilirlik sağlar.

İşlem hattı izlenebilirliği

Azure Pipelines, her işlem hattı çalıştırması için aşağıdaki bilgileri gösterir:

  • İşlem hattını tetikleyen kaynak, işlem hattını tetikleyen kaynaktır.
  • Kaynak sürümü ve kullanılan yapıtlar.
  • Her kaynakla ilişkili işlemeler.
  • Her kaynakla ilişkili iş öğeleri.

Ortam izlenebilirliği

Bir işlem hattı bir ortama her dağıtıldığında, tüketilen kaynakların listesini görebilirsiniz. Görünüm, dağıtım işlerinin bir parçası olarak tüketilen kaynakları ve bunların ilişkili işlemelerini ve iş öğelerini içerir.

Bir ortamdaki işlemeleri gösteren ekran görüntüsü.

CI işlem hatlarında ilişkili CD işlem hatları bilgileri

Uçtan uca izlenebilirlik sağlamak için kaynak aracılığıyla pipelines belirli bir CI işlem hattını kullanan CD işlem hatlarını izleyebilirsiniz. Diğer işlem hatları CI işlem hattınızı tüketiyorsa, Çalıştır görünümünde İlişkili işlem hatları sekmesini görürsünüz. Görünümde CI işlem hattınızı ve ondan alınan yapıtları kullanan tüm CD YAML işlem hattı çalıştırmaları gösterilir.

CI işlem hattındaki CD işlem hattı bilgilerini gösteren ekran görüntüsü.

Kaynak tetikleyici sorunları

Kaynak tetikleyicileri şu nedenlerle yürütülemez:

  • Sağlanan hizmet bağlantısının kaynağı geçersiz, tetikleyicide söz dizimi hataları var veya tetikleyici yapılandırılmamış.
  • Tetikleyici koşulları eşleşmiyor.

İşlem hattı tetikleyicilerinin neden yürütülemediğine bakmak için işlem hattı tanımı sayfasındaki Tetikleyici sorunları menü öğesini seçin. Tetikleyici sorunları yalnızca depo olmayan kaynaklar için kullanılabilir.

Ana işlem hattı sayfasında Tetikleyici sorunlarını gösteren ekran görüntüsü.

Tetikleyici sorunları sayfasında, hata ve uyarı iletileri tetikleyicinin neden başarısız olduğunu açıklar.

Tetikleyici sorunları desteklenebilirliğini gösteren ekran görüntüsü.

SSS

İşlem hattı kaynaklarını, indirme kısayolunu veya İşlem Hattı Yapıtlarını İndir görevini ne zaman kullanmalıyım?

pipelines Kaynak kullanmak, CI işlem hattındaki yapıtları kullanmanın ve otomatik tetikleyicileri yapılandırmanın bir yoludur. Kaynak, tüketilen sürümü, yapıtları, işlemeleri ve iş öğelerini görüntüleyerek işlem hakkında tam görünürlük sağlar. bir işlem hattı kaynağı tanımladığınızda, ilişkili yapıtlar dağıtım işlerine otomatik olarak indirilir.

Yapıtları derleme işlerinde indirmek veya dağıtım işlerindeki indirme davranışını geçersiz kılmak için kısayolu kullanabilirsiniz download . Daha fazla bilgi için steps.download tanımına bakın.

İşlem Hattı Yapıtlarını İndir görevi izlenebilirlik veya tetikleyici sağlamaz, ancak bazen bu görevi doğrudan kullanmak mantıklıdır. Örneğin, bir derlemedeki yapıtların indirilmesi gereken farklı bir şablonda depolanan bir betik göreviniz olabilir. Veya şablona işlem hattı kaynağı eklemek istemeyebilirsiniz. Bağımlılıklardan kaçınmak için İşlem Hattı Yapıtlarını İndir görevini kullanarak tüm derleme bilgilerini bir göreve geçirebilirsiniz.

Docker Hub görüntüm güncelleştirildiğinde nasıl işlem hattı çalıştırması tetikleyebilirim?

Kapsayıcı kaynak tetikleyicisi YAML işlem hatları için Docker Hub'da kullanılamaz, bu nedenle klasik bir yayın işlem hattı ayarlamanız gerekir.

  1. Yeni bir Docker Hub hizmet bağlantısı oluşturun.
  2. Klasik bir yayın işlem hattı oluşturun ve bir Docker Hub yapıtı ekleyin. Hizmet bağlantınızı ayarlayın ve ad alanını, depoyu, sürümü ve kaynak diğer adını seçin.
  3. Tetikleyiciyi seçin ve sürekli dağıtım tetikleyicisini Etkinleştir olarak değiştirin. Seçilen depoya yapılan her Docker gönderimi bir yayın oluşturur.
  4. Yeni bir aşama ve iş oluşturun. Docker oturum açma ve Bash adlı iki görev ekleyin.
    • Docker görevi eyleme login sahiptir ve Docker Hub'da oturum açar.
    • Bash görevi çalıştırır docker pull <hub-user>/<repo-name>[:<tag>].

Web kancamı nasıl doğrulayabilir ve sorunlarını nasıl giderebilirim?

  1. Hizmet bağlantısı oluşturun.

  2. Hizmet bağlantınıza başvurun ve bölümünde web kancanızı adlandırın webhooks .

    resources:
      webhooks:
        - webhook: MyWebhookTriggerAlias
          connection: MyServiceConnection
    
  3. Ardışık düzeninizi çalıştırın. Web kancası Azure'da kuruluşunuz için dağıtılmış bir görev olarak oluşturulur.

  4. POST gövdesinde geçerli JSON ile bir https://dev.azure.com/<organization>/_apis/public/distributedtask/webhooks/<webhook-name>?api-version=<apiversion>API çağrısı gerçekleştirin. 200 durum kodu yanıtı alırsanız web kancanız işlem hattınız tarafından kullanıma hazırdır.

hatasını Cannot find webhook for the given webHookId ...içeren bir 500 durum kodu yanıtı alırsanız kodunuz varsayılan dalınız olmayan bir dalda olabilir. Bu sorunu gidermek için:

  1. İşlem hattı sayfanızda Düzenle'yi seçin.
  2. Diğer eylemler menüsünde Tetikleyiciler'i seçin.
  3. YAML sekmesini ve ardından Kaynakları al'ı seçin.
  4. El ile ve zamanlanmış derlemeler için Varsayılan dal'ın altında özellik dalınızı güncelleştirin.
  5. Kaydet ve kuyruk'a tıklayın.
  6. Bu işlem hattı başarıyla çalıştırıldıktan sonra gövdesinde geçerli JSON ile bir API çağrısı gerçekleştirin POST https://dev.azure.com/<organization>/_apis/public/distributedtask/webhooks/<webhook-name>?api-version=<apiversion>. Şimdi 200 durum kodu yanıtı almanız gerekir.