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 veyaself
tetikleme, 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, , branch
ve tags
özelliklerinin değerleri version
yapı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. , branch
ve tags
özelliklerinin değerleri version
yoksayı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 daldamain
ç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
none
veya 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ı builds
olarak 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
, githubenterprise
ve bitbucket
.
- Türü Azure
git
Repos Git depolarına başvurur. - GitHub Enterprise depoları yetkilendirme için GitHub Enterprise hizmet bağlantısı gerektirir.
- Bitbucket Cloud depoları yetkilendirme için Bitbucket Cloud hizmet bağlantısı gerektirir.
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 common
sahip 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 common
sahip 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ü acr
kullanabilirsiniz. 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 , resourceGroup
ve repository
değerlerini belirtmeniz azureSubscription
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 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-connection
bir 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 true
ayarlayıntrigger
.
Kaynakları tanımlarkenpackage
, özelliğinde name
Repository>/<Name> paketini <belirtin ve paketi type
veya npm
olarak 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
.
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-preview
adresine 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.
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.
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.
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.
Tetikleyici sorunları sayfasında, hata ve uyarı iletileri tetikleyicinin neden başarısız olduğunu açıklar.
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.
- Yeni bir Docker Hub hizmet bağlantısı oluşturun.
- 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.
- 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.
- 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>]
.
- Docker görevi eyleme
Web kancamı nasıl doğrulayabilir ve sorunlarını nasıl giderebilirim?
Hizmet bağlantısı oluşturun.
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
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.
POST
gövdesinde geçerli JSON ile birhttps://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:
- İşlem hattı sayfanızda Düzenle'yi seçin.
- Diğer eylemler menüsünde Tetikleyiciler'i seçin.
- YAML sekmesini ve ardından Kaynakları al'ı seçin.
- El ile ve zamanlanmış derlemeler için Varsayılan dal'ın altında özellik dalınızı güncelleştirin.
- Kaydet ve kuyruk'a tıklayın.
- 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.