YAML'de kaynakları tanımlama

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

YAML'deki kaynaklar, işlem hattı, derleme, depo, kapsayıcı, paket ve web kancası kaynaklarını temsil eder. Kaynaklar ayrıca sürüm, yapıtlar, ilişkili işlemeler ve iş öğeleri dahil olmak üzere işlem hattınızda kullanılan hizmetlerin tam izlenebilirliğini sağlar. Bir kaynak tanımladığınızda, işlem hattınızın herhangi bir yerinde kullanılabilir. Ayrıca kaynaklarınızdaki olayları tetikleme abonesi olarak DevOps iş akışınızı tamamen otomatikleştirebilirsiniz.

Daha fazla bilgi için bkz. Kaynaklar ve kaynaklar YAML şema tanımı hakkında.

Şema

resources:
  pipelines: [ pipeline ]  
  builds: [ build ]
  repositories: [ repository ]
  containers: [ container ]
  packages: [ package ]
  webhooks: [ webhook ]

Değişkenler

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

resources.triggeringAlias
resources.triggeringCategory

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

Kaynak tanımlama pipelines

Yapıtlar üreten bir işlem hattınız varsa, bir pipelines kaynak tanımlayarak yapıtları kullanabilirsiniz. pipelines yalnızca Azure Pipelines için ayrılmış bir kaynaktır. Cd iş akışlarınız için işlem hattı kaynağında tetikleyiciler de ayarlayabilirsiniz.

Kaynak tanımınızda, pipeline daha sonra işlem hattı kaynağına başvurmak için kullanabileceğiniz benzersiz bir değerdir. source , yapıt oluşturan işlem hattının adıdır. İşlem hattı kaynak değişkenlerini kullanırken veya yapıtları indirirken işlem hattının diğer bölümlerinden işlem hattı kaynağına başvurmak için tarafından pipeline tanımlanan etiketi kullanın.

İşlem hatlarını indirmenin alternatif bir yolu için İşlem Hattı Yapıtları'ndaki görevlere bakın.

resources:        # types: pipelines | builds | repositories | containers | packages
  pipelines:
  - pipeline: string  # identifier for the resource used in pipeline resource variables
    project: string # project for the source; optional for current project
    source: string  # name of the pipeline that produces an artifact. If it is in a different pipelines folder, it needs to be the full path, e.g. MyTeam/MyPipeline
    version: string  # the pipeline run number to pick the artifact, defaults to latest pipeline successful across all stages; Used only for manual or scheduled triggers
    branch: string  # branch to pick the artifact, optional; defaults to all branches; Used only for manual or scheduled triggers
    tags: [ string ] # list of tags required on the pipeline to pickup default artifacts, optional; Used only for manual or scheduled triggers
    trigger:     # triggers aren't enabled by default unless you add trigger section to the resource
      branches:  # branch conditions to filter the events, optional; Defaults to all branches.
        include: [ string ]  # branches to consider the trigger events, optional; Defaults to all branches.
        exclude: [ string ]  # branches to discard the trigger events, optional; Defaults to none.
      tags: [ string ]  # list of tags to evaluate for trigger event, optional
      stages: [ string ] # list of stages to evaluate for trigger event, optional

Önemli

Bir kaynak tetikleyicisi tanımladığınızda, işlem hattı kaynağı geçerli işlem hattıyla aynı depodan (örneğin kendi başına) geliyorsa tetikleyici, olayın oluşturulduğu aynı dalı ve işlemeyi izler. Ancak işlem hattı kaynağı farklı bir depodan geliyorsa, geçerli işlem hattı kendi deposunun varsayılan dalında tetikler.

Yapıt sürümünün değerlendirilmesi

Kaynak işlem hattının yapıtlarının sürümü, işlem hattınızın nasıl tetiklenmiş olduğuna bağlıdır.

İşlem hattınız el ile tetiklediğiniz veya zamanlanmış bir çalıştırma nedeniyle çalışıyorsa, yapıtın sürümünün sürümü , branchve tags özelliklerinin değerleriyle versiontanımlanır.

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

Bir örneğe göz atalım. İşlem hattınızın aşağıdaki kaynak tanımını içerdiğini varsayalım.

resources:
  pipelines:
  - pipeline: MyCIAlias
    project: Fabrikam
    source: Farbrikam-CI
    branch: main      ### This branch input cannot have wild cards. It is used for evaluating default version when pipeline is triggered manually or scheduled.
    tags:               ### These tags are used for resolving default version when the pipeline is triggered manually or scheduled
    - Production        ### Tags are AND'ed
    - PreProduction

İşlem hattınızı el ile çalıştırılacak şekilde tetiklediğinizde, işlem hattının yapıtlarının MyCIAlias sürümü dalda main yapılan ve etiketleri PrepProduction içeren Production en son derlemelerden biridir.

İşlem hattınız kaynak işlem hatlarından biri tamamlandığında tetiklendiğinde, yapıtların sürümü tetiklenen işlem hattından biridir. , branchve tags özelliklerinin değerleri versionyoksayılır.

Belirtilen tetikleyiciler Sonuç
branches Kaynak işlem hattı dallardaki bir çalıştırmayı başarıyla tamamladığınızda geçerli işlem hattının yeni bir çalıştırması include tetikleniyor
tags Kaynak işlem hattı belirtilen tüm etiketlerle etiketlenmiş bir çalıştırmayı başarıyla tamamladığınızda geçerli işlem hattının yeni bir çalıştırması tetikleniyor
stages Kaynak işlem hattı belirtilen işlemi başarıyla yürüttüğünde geçerli işlem hattının yeni bir çalıştırması tetikleniyor stages
branches, tagsve stages Kaynak işlem hattı çalıştırması tüm dal, etiketler ve aşama koşullarını karşılasa geçerli işlem hattının yeni bir çalıştırması tetikleniyor
trigger: true Kaynak işlem hattı bir çalıştırmayı başarıyla tamamladığınızda geçerli işlem hattının yeni bir çalıştırması tetikleniyor
Hiçbir şey Kaynak işlem hattı bir çalıştırmayı başarıyla tamamladığında geçerli işlem hattının yeni bir çalıştırması tetiklenm

Bir örneğe göz atalım. İşlem hattınızın aşağıdaki kaynak tanımını içerdiğini varsayalım.

resources:
  pipelines:
  - pipeline: SmartHotel
    project: DevOpsProject
    source: SmartHotel-CI
    trigger:
      branches:
        include:
        - releases/*
        - main
        exclude:
        - topic/*
      tags: 
      - Verified
      - Signed
      stages:
      - Production
      - PreProduction
      

İşlem hattınız dallardan birinde veya main dalda çalıştırıldığındaSmartHotel-CI, hem hem de SignedVerified ile etiketlendiğinde ve hem hem de aşamalarını PreProductionProduction tamamladığında çalışır.releases

download işlem hatları için

Geçerli işlem hattından ve tüm kaynaklardan tüm pipeline yapıtlar otomatik olarak indirilir ve her deployment işin başında kullanıma sunulur. Bu davranışı geçersiz kılabilirsiniz. Daha fazla bilgi için bkz . İşlem Hattı Yapıtları. Normal 'iş' yapıtları otomatik olarak indirilmiyor. Gerektiğinde açıkça kullanın download .

steps:
- download: [ current | pipeline resource identifier | none ] # disable automatic download if "none"
  artifact: string ## artifact name, optional; downloads all the available artifacts if not specified
  patterns: string # patterns representing files to include; optional

Kaynaktan alınan pipeline yapıtlar klasöre $(PIPELINE.WORKSPACE)/<pipeline-identifier>/<artifact-identifier> indirilir.

İş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 biçiminde tüm işler için kullanılabilir. <Alias>, işlem hattı kaynağınız için vermiş olduğunuz tanımlayıcıdır. İşlem hattı kaynak değişkenleri yalnızca çalışma zamanında kullanılabilir.

Değişken söz dizimi hakkında daha fazla bilgi edinmek için bkz . Değişkenleri tanımlama.

resources.pipeline.<Alias>.projectID
resources.pipeline.<Alias>.pipelineName
resources.pipeline.<Alias>.pipelineID
resources.pipeline.<Alias>.runName
resources.pipeline.<Alias>.runID
resources.pipeline.<Alias>.runURI
resources.pipeline.<Alias>.sourceBranch
resources.pipeline.<Alias>.sourceCommit
resources.pipeline.<Alias>.sourceProvider
resources.pipeline.<Alias>.requestedFor
resources.pipeline.<Alias>.requestedForID

Daha fazla bilgi için bkz . Önceden tanımlanmış değişkenler olarak işlem hattı kaynak meta verileri.

Kaynak tanımlama builds

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

resources:        # types: pipelines | builds | repositories | containers | packages
  builds:
  - build: string   # identifier for the build resource
    type: string   # the type of your build service like Jenkins, circleCI etc.
    connection: string   # service connection for your build service.
    source: string   # source definition of the build
    version: string   # the build number to pick the artifact, defaults to Latest successful build
    trigger: boolean    # Triggers aren't enabled by default and should be explicitly set

builds genişletilebilir bir kategoridir. Derleme hizmetinizdeki yapıtları kullanmak için bir uzantı yazabilir ve öğesinin bir parçası buildsolarak yeni bir hizmet türü tanıtabilirsiniz. Jenkins, içindeki buildsbir kaynak türüdür.

Önemli

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

downloadBuild derlemeler için görev

Görevi kullanarak downloadBuild kaynaktan build yapıtları işlerinizin bir parçası olarak kullanabilirsiniz. Tanımlanan kaynak türüne build bağlı olarak, bu görev çalışma zamanında hizmet için karşılık gelen indirme görevine otomatik olarak çözümür.

Kaynaktan alınan build yapıtlar klasöre $(PIPELINE.WORKSPACE)/<build-identifier>/ indirilir.

Önemli

build kaynak yapıtları işlerinize/deploy-jobs'larınıza otomatik olarak indirilmiyor. Yapıtları kullanmak için görevi açıkça eklemeniz downloadBuild gerekir.

- downloadBuild: string # identifier for the resource from which to download artifacts
  artifact: string # artifact to download; if left blank, downloads all artifacts associated with the resource provided
  patterns: string | [ string ] # a minimatch path or list of [minimatch paths](tasks/file-matching-patterns.md) to download; if blank, the entire artifact is downloaded

Kaynak tanımlama repositories

İşlem hattınızın başka bir depoda şablonları varsa veya hizmet bağlantısı gerektiren bir depoyla çok depolu kullanıma alma kullanmak istiyorsanız, sisteme bu depo hakkında bilgi vermelisiniz. anahtar repository sözcüğü bir dış depo belirtmenize olanak tanır.

resources:
    repositories:
    - repository: string # Required as first property. Alias for the repository.
      endpoint: string # ID of the service endpoint connecting to this repository.
      trigger: none | trigger | [ string ] # CI trigger for this repository, no CI trigger if skipped (only works for Azure Repos).
      name: string # repository name (format depends on 'type'; does not accept variables).
      ref: string # ref name to checkout; defaults to 'refs/heads/main'. The branch checked out by default whenever the resource trigger fires.
      type: string # Type of repository: git, github, githubenterprise, and bitbucket.

Tür

İşlem hatları, depo türü için aşağıdaki değerleri destekler: git, github, githubenterpriseve bitbucket. Türü Azure git Repos Git depolarına başvurur.

Belirtilen tür Sonuç Örnek
type: git Değer, name aynı projedeki başka bir depoya başvurur. name: otherRepo Aynı kuruluştaki başka bir projedeki bir depoya başvurmak için, adın önüne bu projenin adını ekleyin. name: OtherProject/otherRepo bunun bir örneğidir.
type: github name Değer, GitHub deposunun tam adıdır ve kullanıcı veya kuruluşu içerir. name: Microsoft/vscode
type: githubenterprise name değeri GitHub Enterprise deposunun tam adıdır ve kullanıcı veya kuruluşu içerir. name: Microsoft/vscode
type: bitbucket name Değer, Bitbucket Cloud deposunun tam adıdır ve kullanıcı veya kuruluşu içerir. name: MyBitbucket/vscode

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.

Değişkenler

Her çalıştırmada, bir depo kaynağının meta verileri çalışma zamanı değişkenleri biçimindeki tüm işler için kullanılabilir. <Alias>, depo kaynağınız için vermiş olduğunuz 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

Değişkenler

Her çalıştırmada, bir depo kaynağının meta verileri çalışma zamanı değişkenleri biçimindeki tüm işler için kullanılabilir. <Alias>, depo kaynağınız için vermiş olduğunuz 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

Depo kullanmak için kullanın checkout

Kaynağın parçası repository olarak tanımlanan depolarınızı kullanmak için anahtar sözcüğünü kullanıncheckout.

Şema

steps:
- checkout: string # Required as first property. Configures checkout for the specified repository.
  clean: string # If true, run git clean -ffdx followed by git reset --hard HEAD before fetching.
  fetchDepth: string # Depth of Git graph to fetch.
  fetchTags: string # Set to 'true' to sync tags when fetching the repo, or 'false' to not sync tags. See remarks for the default behavior.
  lfs: string # Set to 'true' to download Git-LFS files. Default is not to download them.
  persistCredentials: string # Set to 'true' to leave the OAuth token in the Git config after the initial fetch. The default is not to leave it.
  submodules: string # Set to 'true' for a single level of submodules or 'recursive' to get submodules of submodules. Default is not to fetch submodules.
  path: string # Where to put the repository. The default is $(Build.SourcesDirectory).
  condition: string # Evaluate this condition expression to determine whether to run this task.
  continueOnError: boolean # Continue running even on failure?
  displayName: string # Human-readable name for the task.
  target: string | target # Environment in which to run this task.
  enabled: boolean # Run this task when the job runs?
  env: # Variables to map into the process's environment.
    string: string # Name/value pairs
  name: string # ID of the step.
  timeoutInMinutes: string # Time to wait for this task to complete before the server kills it.
  retryCountOnTaskFailure: string # Number of retries if the task fails.

Kaynaktaki repository depolar, işlerinizde otomatik olarak eşitlenmez. depolarınızı işlerinizin bir parçası olarak getirmek için kullanın checkout .

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

Kaynak tanımlama containers

Sürekli tümleştirme/sürekli teslim (CI/CD) işlem hattınızın bir parçası olarak bir kapsayıcı görüntüsü kullanmanız gerekiyorsa bunu kullanarak containersgerçekleştirebilirsiniz. Kapsayıcı kaynağı genel veya özel bir Docker Kayıt Defteri veya Azure Container Registry olabilir.

İşlem hattınızın bir parçası olarak Docker kayıt defterindeki görüntüleri kullanmanız gerekiyorsa, genel bir kapsayıcı kaynağı tanımlayabilirsiniz ( type anahtar sözcük gerekmez).

resources:
  containers:
  - container: string  # identifier (A-Z, a-z, 0-9, and underscore)
    image: string  # container image name
    options: string  # arguments to pass to container at startup
    endpoint: string  # reference to a service connection for the private registry
    env: { string: string }  # list of environment variables to add
    ports: [ string ] # ports to expose on the container
    volumes: [ string ] # volumes to mount on the container
    mapDockerSocket: bool # whether to map in the Docker daemon socket; defaults to true
    mountReadOnly:  # volumes to mount read-only - all default to false
      externals: boolean  # components required to talk to the agent
      tasks: boolean  # tasks required by the job
      tools: boolean  # installable tools like Python and Ruby
      work: boolean # the work directory

genel kapsayıcı kaynağını işinizin bir parçası olarak kullanılan bir görüntü olarak kullanabilir veya Kapsayıcı işleri için de kullanılabilir. İşlem hattınız bir veya daha fazla hizmetin desteğini gerektiriyorsa, hizmet kapsayıcıları oluşturmak ve bu kapsayıcılara bağlanmak istersiniz. Hizmetler arasında veri paylaşmak için birimleri kullanabilirsiniz.

ACR görüntülerinizi kullanmak için Azure Container Registry (ACR) için birinci sınıf bir kapsayıcı kaynak türü kullanabilirsiniz. Bu kaynak türü, işlerinizin bir parçası olarak ve otomatik işlem hattı tetikleyicilerini etkinleştirmek için kullanılabilir. Otomatik işlem hattı tetikleyicilerini kullanmak için ACR için Katkıda Bulunan veya Sahip izinlerine sahip olmanız gerekir. Daha fazla bilgi için bkz . Azure Container Registry rolleri ve izinleri.

resources:          # types: pipelines | repositories | containers | builds | packages
  containers:
  - container: string # identifier for the container resource      
    type: string # type of the registry like ACR, GCR etc. 
    azureSubscription: string # Azure subscription (ARM service connection) for container registry;
    resourceGroup: string # resource group for your ACR
    registry: string # registry for container images
    repository: string # name of the container image repository in ACR
    trigger: # Triggers aren't enabled by default and need to be set explicitly
      enabled: boolean # set to 'true' to trigger on all image tags if 'tags' is unset.
      tags:
        include: [ string ]  # image tags to consider the trigger events, optional; defaults to any new tag
        exclude: [ string ]  # image tags on discard the trigger events, optional; defaults to none

Not

Tüm görüntü etiketleri (enabled: 'true') için kapsayıcı tetikleyicilerini etkinleştirmek için kullanılan söz dizimi, diğer kaynak tetikleyicileri için kullanılan söz diziminden farklıdır. Belirli bir kaynak için doğru söz dizimini kullanmaya dikkat edin.

Not

İş yükü kimlik federasyonu kullanan hizmet bağlantıları içinde azureSubscriptiondesteklenmez.

Kapsayıcı kaynak değişkenleri

Bir kapsayıcıyı kaynak olarak tanımladıktan sonra kapsayıcı görüntüsü meta verileri değişken biçiminde işlem hattına geçirilir. Görüntü, kayıt defteri ve bağlantı ayrıntıları gibi bilgilere kapsayıcı dağıtma görevlerinizde kullanılacak 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.

resources.container.<Alias>.type
resources.container.<Alias>.registry
resources.container.<Alias>.repository
resources.container.<Alias>.tag 
resources.container.<Alias>.digest
resources.container.<Alias>.URI
resources.container.<Alias>.location

Konum değişkeni yalnızca kapsayıcı kaynaklarının türü için ACR geçerlidir.

Kaynak tanımlama packages

YAML işlem hatlarında kaynak olarak NuGet ve npm GitHub paketlerini kullanabilirsiniz.

Kaynakları belirtirken package , paketi NuGet veya npm olarak ayarlayın. Yeni bir paket sürümü yayınlandığında otomatik işlem hattı tetikleyicilerini de etkinleştirebilirsiniz.

GitHub paketlerini kullanmak için kişisel erişim belirteci (PAT) tabanlı kimlik doğrulamasını kullanın ve PTS kullanan bir GitHub hizmet bağlantısı oluşturun.

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

resources:
  packages:
    - package: myPackageAlias # alias for the package resource
      type: Npm # type of the package NuGet/npm
      connection: GitHubConnectionName # GitHub service connection with the PAT type
      name: nugetTest/nodeapp # <Repository>/<Name of the package>
      version: 1.0.1 # Version of the package to consume; Optional; Defaults to latest
      trigger: true # To enable automated triggers (true/false); Optional; Defaults to no triggers

Kaynak tanımlama webhooks

Not

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

Diğer kaynaklarla (işlem hatları, kapsayıcılar, derleme ve paketler gibi) yapıtları kullanabilir ve otomatik tetikleyicileri etkinleştirebilirsiniz. Ancak dağıtım işleminizi diğer dış olaylara veya hizmetlere göre otomatikleştiremezsiniz. Kaynak, webhooks işlem hattınızı herhangi bir dış hizmetle tümleştirmenize ve iş akışını otomatikleştirmenize olanak tanır. Web kancaları (GitHub, GitHub Enterprise, Nexus, Artifactory vb.) aracılığıyla tüm dış olaylara abone olabilir ve işlem hatlarınızı tetikleyebilirsiniz.

Web kancası tetikleyicilerini yapılandırmak için aşağıdaki adımları uygulayın.

  1. Dış hizmetinizde bir web kancası ayarlayın. Web kancanızı oluştururken aşağıdaki bilgileri sağlamanız gerekir:

    • İstek Url'si

      https://dev.azure.com/<ADO 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 Gizli dizi değerini belirtin.

  2. Yeni bir "Gelen Web Kancası" hizmet bağlantısı oluşturun. Bu bağlantı, aşağıdaki önemli bilgileri tanımlamanıza olanak tanıyan, yeni kullanıma sunulmuş bir Hizmet Bağlantısı Türüdür:

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

    Gelen Web Kancası Hizmeti bağlantısı

  3. ADLı webhooks yeni bir kaynak türü YAML işlem hatlarında kullanıma sunulmuştur. Bir web kancası olayına abone olmak için işlem hattınızda bir web kancası kaynağı tanımlayın ve bunu Gelen web kancası hizmet bağlantısına işaret edin. 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. Yük verilerini işlerinizdeki değişkenler biçiminde kullanın.

  4. 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 tetiklenir. JSON yük verilerini, biçimini kullanarak işlerinizde kullanabilirsiniz ${{ parameters.<WebhookAlias>.<JSONPath>}}

resources:
  webhooks:
    - webhook: MyWebhookTriggerAlias           ### Webhook alias
      connection: IncomingWebhookConnection    ### Incoming webhook service connection
      filters:                                 ### List of JSON parameters to filter; Parameters are AND'ed
        - path: JSONParameterPath              ### JSON path in the payload
          value: JSONParameterExpectedValue    ### Expected value in the path provided

Web kancaları işlem hatları, derlemeler, kapsayıcılar ve 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.

Çalıştırma oluşturma iletişim kutusunda kaynaklar için el ile sürüm seçici

Bir CD YAML işlem hattını el ile tetiklediğinizde, sağlanan girişlere göre işlem hattında tanımlanan kaynaklar için varsayılan sürümü otomatik olarak değerlendiririz. Ancak, bir çalıştırma oluştururken kaynak sürümü seçiciden farklı bir sürüm seçebilirsiniz.

  1. Çalıştırma oluştur bölmesinde Kaynaklar'ı seçin. Bu işlem hattında kullanılan kaynakların listesini görürsünüz.

  2. Bir kaynak seçin ve kullanılabilir sürümler listesinden belirli bir sürümü seçin. Kaynak sürümü seçici işlem hattı, derleme, depo, kapsayıcı ve paket kaynakları için desteklenir.

    İşlem Hattı Sürüm Seçici

İşlem hattı kaynakları için tüm dallardaki tüm kullanılabilir çalıştırmaları görebilirsiniz. İşlem hattı numarasına veya dala göre bunları arayın. Başarılı, başarısız veya devam eden bir çalıştırma seçin. Bu esneklik, 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ında ilgisiz bir aşama hatası nedeniyle CI çalıştırmasının tamamlanmasını veya yeniden çalıştırılmasını beklemeniz gerekmez. Ancak, yalnızca varsayılan sürümü zamanlanmış tetikleyiciler için değerlendirdiğimizde veya el ile sürüm seçici kullanmadığınızda CI çalıştırmalarını başarıyla tamamlayacağız.

GitHub paketleri gibi kullanılabilir sürümleri getirememenize neden olan kaynaklar için, çalıştırmanın seçileceği sürümü sağlayabilmeniz için sürüm seçicinin bir parçası olarak bir metin kutusu gösteririz.

YAML işlem hattını yetkilendirme

Kaynakların kullanılabilmesi için önce yetkilendirilmeleri gerekir. Kaynak sahibi, bu kaynağa erişebilen kullanıcıları ve işlem hatlarını denetler. İşlem hattının kaynağı kullanma yetkisine sahip olması gerekir. YAML işlem hattını yetkilendirmek için aşağıdaki yöntemlere bakın.

  • Kaynağın yönetim deneyimine gidin. Örneğin, değişken grupları ve güvenli dosyalar, İşlem Hatları altındaki Kitaplık sayfasında yönetilir. Aracı havuzları ve hizmet bağlantıları Project ayarlarında yönetilir. Burada tüm işlem hatlarını bu kaynağa erişme yetkisi vekleyebilirsiniz. Bu yetkilendirme, bir kaynağa erişimi kısıtlamanız gerekmiyorsa (örneğin, test kaynakları) kullanışlıdır.

  • İlk kez bir işlem hattı oluşturduğunuzda, yaml dosyasında başvuruda bulunılan tüm kaynaklar, bu kaynağın Kullanıcı rolünün bir üyesiyseniz işlem hattı tarafından kullanılmak üzere otomatik olarak yetkilendirilir. Bu nedenle, işlem hattı oluşturduğunuzda YAML dosyasında başvuruda bulunılan kaynaklar otomatik olarak yetkilendirilir.

  • YAML dosyasında değişiklik yapıp kaynak eklediğinizde, derleme aşağıdaki hataya benzer bir hatayla başarısız olur: Could not find a <resource> with name <resource-name>. The <resource> does not exist or has not been authorized for use.

    Bu durumda, başarısız derlemedeki kaynakları yetkilendirme seçeneği görürsünüz. Kaynak için Kullanıcı rolünün üyesiyseniz bu seçeneği belirleyebilirsiniz. Kaynaklar 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 ayarlama

Bir kaynağın ne zaman çalıştığını onay denetimleri ve şablonlarla el ile denetleyebilirsiniz. Gerekli şablon onay denetimiyle, bir kaynak veya ortam kullanan herhangi bir işlem hattının da belirli bir YAML şablonundan genişletılmasını gerektirebilirsiniz. Gerekli şablon onayının ayarlanması güvenliği artırır. Kaynağınızın yalnızca bir şablonla belirli koşullar altında kullanıldığından emin olun. Şablonlar ve kaynaklarla işlem hattı güvenliğini geliştirme hakkında daha fazla bilgi edinin.

Izlenebilirlik

İşlem hattı veya dağıtım iş düzeyinde tüketilen tüm kaynaklar için tam izlenebilirlik sağlıyoruz.

İşlem hattı izlenebilirliği

Her işlem hattı çalıştırması için aşağıdaki bilgileri gösteririz.

  • bir kaynak tarafından tetiklenmişse işlem hattını tetikleyen kaynak.

    İşlem hattında kaynak tetikleyicisi

  • Kaynağın ve kullanılan yapıtların sürümü.

    İşlem hattı çalıştırmasında tüketilen yapıtlar

  • Her kaynakla ilişkili işlemeler.

    İşlem hattı çalıştırmasında 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. Aşağıdaki 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.

Ortamda işlemeler

CI işlem hatlarında ilişkili CD işlem hattı bilgilerini gösterme

Uçtan uca izlenebilirlik sağlamak için, hangi CD işlem hatlarının veren BIR CI işlem hattı tüketeceğini izleyebilirsiniz. KAYNAK aracılığıyla pipeline ci işlem hattı çalıştırmasının kullanıldığı CD YAML işlem hattı çalıştırmalarının listesini görebilirsiniz. Diğer işlem hatları CI işlem hattınızı tüketiyorsa, çalıştırma görünümünde bir "İlişkili işlem hatları" sekmesi görürsünüz. Burada işlem hattınızı ve yapıtlarınızı kullanan tüm işlem hattı çalıştırmalarını bulabilirsiniz.

CI işlem hattındaki CD işlem hatları bilgileri

YAML kaynak tetikleyicisi sorunları desteği ve izlenebilirliği

İşlem hattı tetikleyicilerinin yürütülememesi kafa karıştırıcı olabilir. İşlem hattı tanımı sayfasına Tetikleyici Sorunları adlı yeni bir menü öğesi ekledik. Burada tetikleyicilerin neden yürütülemiyoruz öğrenebilirsiniz. Bu sayfaya erişmek için işlem hattı geçmişinizi açın. Tetikleyici Sorunları yalnızca depo dışı kaynaklar için kullanılabilir.

Gezintiden Tetikleyici Sorunları'nı seçin.

Kaynak tetikleyicileri aşağıdaki nedenlerle yürütülemez.

  • Sağlanan hizmet bağlantısının kaynağı geçersizse veya tetikleyicide söz dizimi hataları varsa, tetikleyici yapılandırılmaz ve hataya neden olur.

  • Tetikleyici koşulları eşleşmezse, tetikleyici yürütülemez. Koşulların neden eşleşmediğini anlamanız için bir uyarı görüntülenir.

    Tetikleyici sorunları desteklenebilirliği

Sonraki adımlar

SSS

Kısayol yerine download neden işlem hatlarını resources 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şlerinde otomatik olarak indirilir.

Yapıtları derleme işlerinde indirmeyi veya ile downloaddağıtım işlerindeki indirme davranışını geçersiz kılmayı seçebilirsiniz. Daha fazla bilgi için bkz . steps.download.

İşlem Hattı Yapıtlarını İndir görevi yerine neden kullanmalıyım resources ?

İşlem Hattı Yapıtlarını İndir görevini doğrudan kullandığınızda izlenebilirliği ve tetikleyicileri kaçırabilirsiniz. Bazen İşlem Hattı Yapıtlarını İndir görevini doğrudan kullanmak mantıklıdır. Örneğin, farklı bir şablonda depolanan bir betik göreviniz olabilir ve betik görevinin bir derlemedeki yapıtların indirilmesi gerekir. Veya şablon kullanan birinin işlem hattı kaynağı eklemek isteyip istemediğini bilmiyor olabilirsiniz. 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ılar kaynak tetikleyicisi YAML işlem hatları için Docker Hub'da kullanılamadığından 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. Ad alanını, depoyu, sürümü ve kaynak diğer adını seçin.

    Docker Hub yapıtı ekleyin.

  3. Tetikleyiciyi seçin ve sürekli dağıtım tetikleyicisini Etkinleştir olarak değiştirin. Seçili depoya her Docker gönderimi gerçekleştiğinde bir yayın oluşturacaksınız.

  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 sizi Docker Hub'da günlüğe kaydeder.

  • Bash görevi çalıştırır docker pull <hub-user>/<repo-name>[:<tag>]. , repo-nameve tag değerlerini değerlerinizle değiştirinhub-user.

    Docker oturum açma ve Bash görevleri ekleyin.

Web kancalarını nasıl doğrulayabilir ve sorunlarını 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. İşlem hattınızı çalıştırdığınızda 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.

    1. İşlem hattınızı açın.
    2. Düzenle'yi seçin.
    3. Diğer eylemler menüsünü Diğer eylemler menüsünü seçin seçin.
    4. Tetikleyiciler>YAML>Kaynak Al'ı seçin.
    5. Özellik dalınızı güncelleştirmek için el ile ve zamanlanmış derlemeler için Varsayılan dal'a gidin.
    6. Kaydet ve kuyruk'a tıklayın.
    7. 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 POSThttps://dev.azure.com/{organization}/_apis/public/distributedtask/webhooks/{webhook-name}?api-version={apiversion}. Şimdi 200 durum kodu yanıtı almanız gerekir.