Aracılığıyla paylaş


YAML işlem hatlarındaki kaynaklar

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Bu makalede YAML işlem hatlarına yönelik kaynaklar ele alınmaktadır. Kaynak, işlem hattının kullandığı ve bu işlem hattının dışında var olan her şeydir. YAML işlem hatlarındaki kaynaklar diğer işlem hatları, derlemeler, kapsayıcılar, paketler, depolar veya web kancaları olabilir.

Bir kaynağı tanımladıktan sonra işlem hattınızın herhangi bir yerinde kullanabilirsiniz. Daha fazla bilgi ve örnek için bkz . Kaynak tanımları.

resources:
  pipelines:
  - pipeline: resources1
    source: otherPipeline

steps:
- download: resources1
  artifact: artifact1.txt

Kaynak tanımında ayarlayarak kaynak durumunu kullanarak trigger. İşlem hattı resources.triggeringAlias ve resources.triggeringCategory değişkenler daha sonra kaynak adı ve kategorisine ayarlanır. Build.Reason değişkeni ResourceTrigger olarak ayarlanmadığı sürece, bu değişkenler boş olur.

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

Not

Bu makalede öncelikle YAML işlem hatlarındaki kaynaklar ele alınmaktadır. Klasik işlem hatlarındaki kaynaklar için bkz. Azure Pipelines kaynakları hakkında.

Kaynak yetkilendirmesi

Kaynakların işlem hatlarında kullanılmak üzere yetkilendirilmiş olması 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ına erişim izinleri vermek için kaynağın yönetim ayarlarını kullanın. Örneğin, İşlem Hatları>Kitaplığı sayfasında güvenli dosyaları ve değişken gruplarını, Proje ayarları>İşlem Hatları'nda aracı havuzlarını ve hizmet bağlantılarını yönetebilirsiniz. Bu yetkilendirme, test kaynakları gibi kısıtlamanız gerekmeyen kaynaklar için kullanışlıdır.

  • Projeniz için aracı havuzu güvenlik rollerinde en az Kullanıcı rolüne sahip olduğunuzdan emin olun. Oluşturduğunuz YAML işlem hatları, Kullanıcı rolünüz olan kaynakları kullanmak için otomatik olarak yetkilendirilmiştir.

  • Eğer YAML işlem hattına bir kaynak tanımı eklerseniz ve derleme, Could not find a <resource> with name <resource-name>. The <resource> does not exist or has not been authorized for use gibi bir hatayla başarısız olursa, kaynak üzerinde en az Kullanıcı rolüne sahip olduğunuzdan emin olun. Ardından başarısız derlemedeki kaynakları yetkilendirme seçeneğini belirleyebilirsiniz. Kaynak yetkilendirildikten sonra yeni bir derleme başlatabilirsiniz.

Kaynaklar için onay denetimleri

Kaynak kullanımını el ile denetlemek için onay denetimlerini ve şablonları kullanabilirsiniz. Gerekli şablon onay denetimini kullanarak, belirli bir kaynak veya ortamı kullanan herhangi bir işlem hattının belirli bir YAML şablonundan kapsamını genişletmesini gerektirebilirsiniz.

Gerekli şablon onayının ayarlanması, kaynağınızın yalnızca belirli koşullar altında kullanıldığından emin olarak güvenliği artırır. Daha fazla bilgi için bkz. Güvenlik için şablonları kullanma.

El ile kaynak sürümü seçici

Azure Pipelines, kaynak tanımlarına göre kaynaklar için varsayılan sürümleri değerlendirir. Zamanlanmış çalıştırmalar veya el ile çalıştırma seçmezseniz Azure Pipelines, varsayılan kaynak sürümlerini değerlendirmek için yalnızca başarıyla tamamlanmış sürekli tümleştirme (CI) çalıştırmalarını dikkate alır.

YaML sürekli dağıtım (CD) işlem hattını el ile tetiklerken farklı kaynak sürümleri seçmek için el ile kaynak sürümü seçicisini kullanabilirsiniz. İşlem hattı, derleme, depo, kapsayıcı ve paket kaynakları için kaynak sürüm seçme desteği sunulmaktadır.

Kaynaklar için pipeline, manuel sürüm seçici, tüm dallardaki tüm mevcut çalıştırmaları görüntülemenize, dilim numarasına veya dala göre çalıştırmaları aramanıza ve başarılı, başarısız veya devam eden bir çalıştırmayı seçmenize olanak tanır.

CD işlem hattınızı çalıştırabilmek için CI çalıştırmasının tamamlanmasını beklemeniz veya ilgisiz bir hata nedeniyle yeniden çalıştırmanız gerekmez. İhtiyacınız olan çıktıları ürettiğini bildiğiniz herhangi bir işlemi seçme esnekliğine sahipsiniz.

Kaynak sürümü seçicisini kullanmak için İşlem hattını çalıştır bölmesinde Kaynaklar'ı seçin, bir kaynak seçin ve kullanılabilir sürümler listesinden belirli bir sürümü seçin. GitHub paketleri gibi kullanılabilir sürümleri getirememenize neden olan kaynaklar için metin alanına istediğiniz sürümü girebilirsiniz.

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

Kaynak tanımları

YAML işlem hattı kaynakları şunlar olabilir:

Aşağıdaki bölümlerde YAML işlem hattı kaynak kategorilerinin tanımları ve örnekleri verilmiştir. Şema bilgilerinin tamamı için Azure Pipelines için YAML şema referansındakikaynaklar tanımına bakın.

İşlem hatları kaynağı

CD iş akışlarınız için pipeline olarak CI kaynaklarını kullanabilirsiniz. pipeline veya işlem hattı kaynak değişkenlerini kullanmak için işlem hattınızdaki kaynaklara da başvurabilirsiniz. Yalnızca Azure Pipelines pipelines kaynağını kullanabilir.

Kaynak tanımında pipelines :

  • pipeline , işlem hattı kaynaklarına başvurmak için kullandığınız benzersiz bir addır.
  • source , işlem hattı yapıtlarını oluşturan işlem hattının adıdır.

Şema bilgilerinin tamamı için resources.pipelines.pipeline tanımına bakın.

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

Aşağıdaki örnek kaynak tanımı, aynı Azure DevOps projesindeki 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ı belirtmek için kaynak tanımına project adını ekleyin. Aşağıdaki örnek, işlem hattı el ile veya zamanlamayla tetiklendiğinde varsayılan sürümü çözümlemek için de kullanır branch . Şube girişi joker karakter içeremez.

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

Kaynak sürümü değerlendirmesi

Azure Pipelines, kaynak tanımlarına göre kaynaklar için varsayılan sürümleri değerlendirir. İşlem hattının varsayılan kaynak eseri sürümleri, işlem hattının elle mi çalıştırıldığına, zamanlamaya mı bağlı olarak çalıştığına veya kaynak çalıştırmasının sonucuna göre mi tetiklendiğine bağlıdır.

Elle veya zamanlanmış bir işlem hattı çalıştırması için, version, branch, tags ve pipeline kaynak tanımındaki özelliklerin değerleri yapıt sürümlerini tanımlar. branch girişinde joker karakter bulunamaz ve tags özellikler AND işlecini kullanır.

Zamanlanmış çalıştırmalar veya sürüm seçiciyi kullanmazsanız el ile çalıştırmalar için Azure Pipelines, varsayılan kaynak sürümlerini değerlendirirken yalnızca başarıyla tamamlanmış sürekli tümleştirme (CI) çalıştırmalarını dikkate alır. El ile çalıştırmalar için, el ile sürüm seçiciyi kullanarak tanımlı sürümleri geçersiz kılabilirsiniz.

Aşağıdaki tabloda pipeline kaynak tanımı özellikleri ve bunların belirttiği yapıt sürümleri listelenmektedir.

Belirtilen özellik Artefakt sürümü
version Belirtilen çalıştırma numarasına sahip derleme
branch Belirtilen dalda çalıştıran en son derleme
tags Belirtilen tüm etiketleri içeren en son derleme
branch ve tags Belirtilen tüm etiketleri içeren belirtilen dalda en son derleme çalıştırması
version ve branch Belirtilen çalıştırma numarası ve dal ile derleme yapın.
Hiçbiri Tüm dallarda en son derleme

Aşağıdaki pipeline kaynak tanımı, branch ve tags özelliklerini, işlem hattı zamanlandığında veya manuel olarak tetiklendiğinde varsayılan sürümü değerlendirmek için kullanır. Yapıtlar myCIAlias sürümü, main ve Production etiketleriyle PreProduction dalında yapılan en son derleme çalıştırmasıdır.

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

İşlem hattı kaynak tetikleyicileri

Kaynak çalıştırmasının sonucunu tetikleyen işlem hattı çalıştırmaları için, trigger kaynak tanımındaki özellik ayarları varsayılan kaynak yapıt sürümlerini belirler. Bir kaynağı geçerli işlem hattını çalıştırmak için tetikleyici olarak kullanmak amacıyla pipeline özelliğini ayarlamanız trigger gerekir. Eğer bir trigger özelliği eklemezseniz, kaynak yürütmeleri geçerli işlem hattı yürütmelerini başlatmaz.

İşlem hattı bir kaynak tanımındaki bir trigger değere göre tetiklendiğinde, pipeline, version ve branch değerleri genel kaynak tanımı özelliklerine ilişkin olarak yoksayılır. Özellikler trigger yapıt sürümlerini belirler.

Önemli

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

  • pipeline Kaynak geçerli işlem hattıyla aynı depodan geliyorsa veya self tetikleme aynı dalda ve tetikleme olayını başlatan aynı committe ise.
  • pipeline Kaynak geçerli işlem hattından farklı bir depodan geliyorsa tetikleme, kaynak deposunun pipeline varsayılan dalındadır.

Aşağıdaki tabloda özelliklerin trigger tetikleyici davranışını nasıl etkilediği açıklanmaktadır.

Tetikleyici özelliği Tetikleyici davranışı
true Tetikleme, kaynak işlem hattı bir çalıştırmayı başarıyla tamamladığında gerçekleşir.
branches Kaynak işlem hattı, include dallarından birinde çalışmayı başarıyla tamamladığında tetikleme gerçekleşir.
tags Tetikleme, kaynak işlem hattı belirtilen tüm etiketlerle etiketlenmiş bir çalıştırmayı başarıyla tamamladığında gerçekleşir.
stages Tetikleme, kaynak işlem hattı belirtilen stagesöğesini başarıyla çalıştırdığında gerçekleşir.
branches, tags ve stages Başarılı kaynak işlem hattı çalıştırması tüm dal, etiket ve aşama koşullarını karşıladığında tetikleme gerçekleşir.

Aşağıdaki örnek, basit bir trigger işlem hatları kaynak tanımını göstermektedir.

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

Aşağıdaki örnek, dal koşullarına sahip trigger işlem hattı kaynağını göstermektedir.

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

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

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

Aşağıdaki örnek, varsayılan sürüm değerlendirmesi ve tetikleyici için filtreleri kullanır tags . trigger etiketleri AND işlecini kullanır. tags Kaynak tanımlarındaki pipeline küme, Git deposundaki dallarda ayarlanan etiketlerden farklıdır.

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

SmartHotel-CI kaynağının işlem hattı her çalıştırıldığında, aşağıdaki işlem hattı çalışır.

  • releases dallarından birinde veya main dalında çalışır.
  • Hem Verified hem de Signed ile etiketlenmiş.
  • Production ve PreProduction aşamalarını tamamlar.
resources:
  pipelines:
  - pipeline: SmartHotel
    project: otherDevOpsProject
    source: SmartHotel-CI
    trigger:
      branches:
        include:
        - releases/*
        - main
        exclude:
        - topic/*
      tags: 
      - Verified
      - Signed
      stages:
      - Production
      - PreProduction

İşlem hattı artifaktı indirme

YAML işlem hattındaki download adımı, geçerli çalıştırmayla veya başka bir pipeline kaynakla ilişkili yapıtları indirmek için kullanabilirsiniz.

Yapıtlar yalnızca dağıtım işlerinde otomatik olarak indirilir. 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ılabilir. olarak ayarlayarak downloadnoneveya başka bir pipeline kaynak tanımlayıcısı belirterek bu davranışı geçersiz kılabilirsiniz.

Normal bir derleme işinde artefaktlar otomatik olarak indirilmez. Gerektiğinde açıkça kullanın download .

download adımında, isteğe bağlı artifact özelliği, eser adlarını belirtir. Belirtilmezse, tüm mevcut artefaktlar indirilir.

İsteğe bağlı patterns özellik, indirilebilecek 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'

Kaynaktaki pipeline öğeler $(PIPELINE.WORKSPACE)/<pipeline-identifier>/<artifact-identifier> klasörüne indiriliyor. Daha fazla bilgi için İşlem hattı yapıtlarını yayımlama ve indirme bölümüne bakın. İşlem hattı yapıtlarını indirmenin alternatif bir yolu için Yapıtları İndirme bölümüne bakın.

İşlem hattı kaynak değişkenleri

İşlem hattı kaynağının meta verileri her çalıştırmadaki tüm işler için önceden tanımlanmış değişkenler olarak 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 Değişkenleri Tanımlama ve İşlem hattı kaynak meta verilerini önceden tanımlanmış değişkenler olarak tanımlama kısmına bakın.

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 oluşturur

CI çıktısı üreten bir derleme sisteminiz varsa, bu çıktıları builds kaynaklarla tüketebilirsiniz.

Kategori builds genişletilebilir. Kaynak build Jenkins, TeamCity veya CircleCI gibi herhangi bir dış CI sisteminden olabilir. builds kullanarak derleme hizmetinizdeki yapıtları kullanacak bir uzantı yazabilir veya yeni bir hizmet türü tanıtabilirsiniz.

build tanımında, version en son başarılı derleme olarak varsayılan değerdir. İsterseniz trigger'yi açıkça ayarlamanız gerekir. Şema bilgilerinin tamamı için resources.builds.build tanımına bakın.

Aşağıdaki örnekte Jenkins kaynak türüdür.

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şlere/deploy-jobs'a otomatik olarak indirilmez. İşlerinizin bir parçası olarak kaynaktan build yapıtları kullanmak için, downloadBuild görevini açıkça eklemeniz gerekir. Her dağıtım veya iş için indirme davranışını özelleştirebilirsiniz.

Görev downloadBuild , ç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 build indirilen yapıtlar, $(PIPELINE.WORKSPACE)/<build-identifier>/ klasörüne indirilir.

downloadBuild tanımında, artefaktları indirmek için kaynağı belirtirsiniz. İsteğe bağlı artifact özellik, indirilmesi gereken yapıtları belirtir. Belirtilmezse, kaynakla ilişkili tüm artifaktlar 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. Aşağıdaki örnek 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 kaynakları

repository Aşağıdakiler durumunda sisteme dış depolar hakkında bilgi vermek için anahtar sözcüğünü kullanın:

Ö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 , git, githubve githubenterprise depo türlerini desteklerbitbucket.

Aşağıdaki tabloda kaynak türleri açıklanmaktadır repository :

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

Depo kaynak değişkenleri

Bir depo kaynağının meta verileri her çalışma zamanı değişkeni olarak çalıştırıldığında tüm işler tarafından kullanılabilir. <alias>, kaynak tanımınızdaki repository tanımlayıcıdırrepository.

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

Aşağıdaki repository kaynak tanımının diğer adı common olan, bu nedenle resources.repositories.common.* kullanarak depo kaynak değişkenlerine erişebilirsiniz.

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)"

Bir depo kaynağının meta verileri her çalışma zamanı değişkeni olarak çalıştırıldığında tüm işler tarafından kullanılabilir. <alias>, kaynak tanımınızdaki repository tanımlayıcıdırrepository.

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

Örnekteki nesne, bir takma ad olan common'e sahiptir, bu nedenle resources.repositories.common.*'i kullanarak depo kaynak değişkenlerine erişebilirsiniz.

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 senkronize edilmez. Anahtar sözcüğünü checkout kullanarak bir kaynakta repository tanımlanan bir depoyu getirebilirsiniz. Daha fazla bilgi için İşlem hattınızdaki birden çok depoyu inceleyin bölümüne bakın. Şema bilgilerinin tamamı için steps.checkout tanımına bakın.

Kaynak kapsayıcılar

CI/CD işlem hatlarınızda kapsayıcı imajlarını tüketmek için containers kaynakları kullanabilirsiniz. Kaynak container , genel veya özel bir Docker kayıt defteri veya Azure Container Registry örneği olabilir.

genel bir kapsayıcı kaynak görüntüsünü işlerinizin bir parçası olarak kullanabilir veya kapsayıcı işlerinde kullanabilirsiniz. İşlem hattınız bir veya daha fazla hizmetin desteğini gerektiriyorsa, hizmet kapsayıcıları oluşturup bunlara bağlanmanız da gerekir. Hizmetler arasında veri paylaşmak için veri depoları kullanabilirsiniz.

Docker kayıt defterindeki görüntüleri kullanmanız gerekiyorsa, anahtar sözcük kullanmadan genel bir type kapsayıcı kaynağı tanımlayabilirsiniz. Örneğin:

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

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

Not

Görüntü enabled: 'true' 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şlerinizde ve otomatik işlem hattı tetikleyicilerini etkinleştirmek için kullanabilirsiniz.

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

Azure kapsayıcı kayıt defteriniz için acr kaynak türünü kullanmak istiyorsanız, azureSubscription, resourceGroup ve repository değerlerini belirtmeniz gerekir. Ö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 emin olun veya YAML dosyasını geçerli varsayılan dalla birleştirdiğinizden emin olun. İşlem hattı varsayılan dalını değiştirme hakkında daha fazla bilgi için bkz. İşlem hattı varsayılan dalı.

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. Kapsayıcı dağıtım görevlerinizde kullanılan tüm işlerde, görüntü, kayıt defteri ve bağlantı ayrıntıları gibi bilgilere 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ı kaynak türüne acr uygulanır.

Aşağıdaki örnekte bir Azure Resource Manager hizmet bağlantısı adlı arm-connection bulunmaktadı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)

Paket Kaynağı

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 trigger olarak ayarlayın true.

Kaynakları tanımlarken, package özelliğinde <repository>\<name> paketini belirtin ve paketi nametype veya NuGet olarak 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 görevlere otomatik olarak indirilmez. İndirmek için getPackage kullanın.

Aşağıdaki örnekte, adlı bir GitHub npm paketine bağlı, pat-contoso bulunmaktadır. 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

steps:
- getPackage: contoso

Webhook kaynakları

Not

Azure DevOps Server 2020.1'de yayımlanan webhooks.

Artifaktları kullanmak ve tetikleyicileri otomatikleştirmek için Azure Pipelines işlem hattı, kapsayıcı, derleme ve paket kaynaklarını kullanabilirsiniz, ancak bunları harici olaylar veya hizmetler temelinde dağıtım yapmak için kullanamazsınız. Web kancaları, birinci sınıf Azure Pipelines kaynaklarının desteklemedığı dış web kancası olaylarını temel alarak iş akışınızı otomatikleştirir. Dış olaylara, web kancaları aracılığıyla abone olabilir ve bu olayları işlem hatlarınızı tetiklemek için kullanabilirsiniz.

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. Azure DevOps'un işlemle ilgili görünürlüğü olmayan şirket içi hizmetler için, işlem hatlarınızı otomatik olarak tetiklemeleri için hizmette web kancalarını yapılandırabilirsiniz.

Bir Webhook olayına abone olmak için işlem hattınızda bir webhook kaynağı tanımlar ve gelen Webhook hizmet bağlantısını belirtirsiniz. Şema bilgilerinin tamamı için resources.webhooks.webhook tanımına bakın.

JSON yük verilerini, biçimini ${{ parameters.<WebhookAlias>.<JSONPath>}}kullanarak işlerinizde değişken olarak kullanabilirsiniz. Aşağıdaki örnek bir web kancası kaynağını tanımlar ve çağırır:

resources:
  webhooks:
    - webhook: myWebhookResource
      connection: myWebHookConnection

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

Her işlem hattının tetikleyicilerini özelleştirmek için web kancası kaynağında JSON yükü verilerini temel alan filtreler tanımlayabilirsiniz. Gelen web kancası hizmet bağlantısı bir web kancası etkinliği aldığında, bu web kancası etkinliğine abone olan tüm boru hatları için yeni bir çalıştırma başlatılır.

Aşağıdaki örnek web kancası filtrelerini kullanır.

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}}

Webhook tetikleyici yapılandırması

Web kancası tetikleyicisini yapılandırmak için, aşağıdaki bilgileri sağlayarak dış hizmette bir web kancası ayarlarsınız:

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

Azure DevOps Proje Ayarları>Pipeline'lar>Hizmet bağlantıları bölümünde yeni bir gelen webhook hizmet bağlantısı oluşturursunuz. Örneğin, GitHub hizmet bağlantı türü için aşağıdaki bilgileri tanımlayabilirsiniz:

  • Web Kancası Adı: Dış hizmetinizde oluşturduğunuz web kancası bağlantı adı.
  • Gizli (isteğe bağlı): İsteği doğrulamak için yükün HMAC-SHA1 karması. Web kancanızı oluştururken gizli anahtar kullandıysanız, aynısını sağlamanız gerekir.
  • Http Üst Bilgisi (isteğe bağlı): İstekte, istek doğrulaması için yükün HMAC-SHA1 karma değerini içeren HTTP üst bilgisi. Örneğin, GitHub istek üst bilgisi şeklindedir X-Hub-Signature.

Gelen webhook hizmet bağlantısını gösteren ekran görüntüsü.

bir web kancası kullanarak işlem hattınızı tetiklemeniz için POSTadresine bir https://dev.azure.com/<org_name>/_apis/public/distributedtask/webhooks/<webhook_connection_name>?api-version=6.0-preview 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 mesajının tamamını çeker. Oluşturulan YAML geçersiz olduğundan, bu web kancası aracılığıyla tetiklenen işlem hattı çalışmaz.

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. Azure Pipelines, kaynakları kullanan tüm işlem hattı çalıştırmaları için aşağıdaki bilgileri gösterir:

  • İşlem hattını tetikleyen kaynak, bu tetiklemeyi gerçekleştiren kaynaktır.
  • Kaynak sürümleri ve tüketilen eserler.
  • Her kaynakla ilişkili taahhütler.
  • Her kaynakla ilişkili iş öğeleri.

CI işlem hatları için ilişkili CD işlem hattı 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. CI işlem hattınızı diğer işlem hatları kullandıysa İlişkili işlem hatları sekmesini Çalıştır görünümünde 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ü.

Ortam izlenebilirliği

Bir işlem hattı bir ortama dağıtıldıktan sonra, kullanılan kaynakların listesi ile bunların ilişkili commitlerini ve iş öğelerini görebilirsiniz.

Bir ortamdaki işlemeleri 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ı, taahhütleri ve iş öğelerini görüntüleyerek süreç hakkında tam görünürlük sağlar. Bir pipeline kaynağı tanımladığınızda, ilişkili yapıtlar dağıtım görevlerine 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.

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

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

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, login eylemini içerir ve Docker Hub'da oturum açmanızı sağlar.
    • Bash görevi çalıştırır docker pull <hub-user>/<repo-name>[:<tag>].

Webhook'umu nasıl doğrulayabilir ve sorunlarını giderebilirim?

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

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

    resources:
      webhooks:
        - webhook: MyWebhookTriggerAlias
          connection: MyServiceConnection
    
  3. İşlem hattınızı ç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, webhook'unuz işlem hattınız tarafından kullanılmaya 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üncelleyin.
  5. Kaydet ve kuyruğa al'ı seçin.
  6. Bu işlem hattı başarıyla çalıştırıldıktan sonra, POSThttps://dev.azure.com/<organization>/_apis/public/distributedtask/webhooks/<webhook-name>?api-version=<apiversion>'ye gövdede geçerli bir JSON ile bir API çağrısı gerçekleştirin. Şimdi 200 durum kodu yanıtı almanız gerekir.

Kaynak tetikleyicim neden çalışmadı?

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

  • Sağlanan hizmet bağlantısının kaynağı geçersiz.
  • Tetikleyici yapılandırılmadı veya tetikleyicide söz dizimi hataları var.
  • 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ı depo kaynakları için kullanılamaz.

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ü.