Definování prostředků v YAML

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Prostředky v YAML představují zdroje kanálů, buildů, úložišť, kontejnerů, balíčků a webhooků. Prostředky také poskytují úplnou sledovatelnost služeb používaných ve vašem kanálu, včetně verze, artefaktů, přidružených potvrzení a pracovních položek. Když definujete prostředek, můžete ho využívat kdekoli v kanálu. Pracovní postup DevOps můžete plně automatizovat tak, že se přihlašujete k odběru událostí ve vašich prostředcích.

Další informace najdete v tématu o prostředcích a definici schématu YAML prostředků.

Schéma

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

Proměnné

Když prostředek aktivuje kanál, nastaví se následující proměnné:

resources.triggeringAlias
resources.triggeringCategory

Tyto hodnoty jsou prázdné, pokud prostředek neaktivuje spuštění kanálu. Aby se tyto hodnoty nastavily, musí být ResourceTrigger proměnnáBuild.Reason.

pipelines Definování prostředku

Pokud máte kanál, který vytváří artefakty, můžete artefakty využívat definováním pipelines prostředku. pipelines je vyhrazený prostředek pouze pro Azure Pipelines. Pro pracovní postupy CD můžete také nastavit triggery pro prostředek kanálu.

V definici prostředku je jedinečná hodnota, pipeline kterou můžete použít k pozdějšímu odkazu na prostředek kanálu. source je název kanálu, který vytváří artefakt. Popisek definovaný pipeline pomocí odkazu na prostředek kanálu z jiných částí kanálu, například při použití proměnných prostředků kanálu nebo stahování artefaktů.

Alternativní způsob stahování kanálů najdete v úlohách v artefaktech kanálu.

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 (Build.BuildNumber) to pick the artifact, defaults to latest pipeline successful run 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 for 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

Důležité

Když definujete trigger prostředku, pokud je jeho prostředek kanálu ze stejného úložiště (řekněme jako vlastní) jako aktuální kanál, aktivuje se stejná větev a potvrzení, pro které je událost vyvolána. Pokud je ale prostředek kanálu z jiného úložiště, aktuální kanál se aktivuje ve výchozí větvi vlastního úložiště.

Vyhodnocení verze artefaktů

Verze artefaktů kanálu prostředků závisí na tom, jak se kanál aktivuje.

Pokud se kanál spustí, protože jste ho aktivovali ručně nebo kvůli plánovanému spuštění, je verze verze artefaktu definovaná hodnotami objektu version, brancha tags vlastnostmi.

Zadané vlastnosti Verze artefaktu
version Artefakty z sestavení se zadaným číslem spuštění
branch Artefakty z nejnovějšího sestavení provedeného v zadané větvi
tags Seznamu Artefakty z nejnovějšího sestavení, které mají všechny zadané značky
branch a tags seznam Artefakty z nejnovějšího sestavení provedeného v zadané větvi a se všemi zadanými značkami
Nic Artefakty z nejnovějšího sestavení ve všech větvích

Podívejme se na příklad. Řekněme, že váš kanál obsahuje následující definici prostředku.

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

Když ručně aktivujete spuštění kanálu, verze artefaktů kanálu je jedním z nejnovějších sestavení provedených ve main větvi a obsahuje značky MyCIAliasProduction a PrepProduction značky.

Když se kanál aktivuje kvůli dokončení jednoho z jeho kanálů prostředků, verze artefaktů je jedním z aktivovaných kanálů. Hodnoty objektu version, brancha tags vlastnosti jsou ignorovány.

Zadané triggery Výsledek
branches Nové spuštění aktuálního kanálu se aktivuje vždy, když kanál prostředku úspěšně dokončí spuštění ve include větvích.
tags Nové spuštění aktuálního kanálu se aktivuje pokaždé, když kanál prostředku úspěšně dokončí spuštění označené všemi zadanými značkami.
stages Při úspěšném spuštění kanálu prostředku se aktivuje nové spuštění aktuálního kanálu. stages
branches, tagsa stages Nové spuštění aktuálního kanálu se aktivuje vždy, když spuštění kanálu prostředku splňuje všechny podmínky větve, značek a fází.
trigger: true Nové spuštění aktuálního kanálu se aktivuje vždy, když kanál prostředku úspěšně dokončí spuštění.
Nic Po úspěšném dokončení spuštění kanálu prostředku se neaktivuje žádné nové spuštění aktuálního kanálu.

Podívejme se na příklad. Řekněme, že váš kanál obsahuje následující definici prostředku.

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

Kanál se spustí pokaždé, když SmartHotel-CI se kanál spustí na jedné z releases větví nebo ve main větvi, označí se oběma Verified a Signeda dokončí se obě Production fáze i PreProduction fáze.

download pro kanály

Všechny artefakty z aktuálního kanálu a ze všech pipeline prostředků se automaticky stáhnou a zpřístupní na začátku každé deployment úlohy. Toto chování můžete přepsat. Další informace najdete v tématu Artefakty kanálu. Pravidelné artefakty úlohy se nestáhnou automaticky. Explicitně použijte download v případě potřeby.

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

Artefakty z pipeline prostředku se stáhnou do $(PIPELINE.WORKSPACE)/<pipeline-identifier>/<artifact-identifier> složky.

Proměnné prostředků kanálu

V každém spuštění jsou metadata pro prostředek kanálu k dispozici pro všechny úlohy ve formě předdefinovaných proměnných. Jedná se <Alias> o identifikátor, který jste zadali pro prostředek kanálu. Proměnné prostředků kanálu jsou k dispozici pouze za běhu.

Další informace o syntaxi proměnných najdete v tématu Definování proměnných.

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

Další informace najdete v tématu Metadata prostředků kanálu jako předdefinované proměnné.

builds Definování prostředku

Pokud máte externí systém sestavení CI, který vytváří artefakty, můžete s prostředkem builds využívat artefakty. Prostředek builds může být jakýkoli externí systém CI, jako je Jenkins, TeamCity, CircleCI atd.

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 je rozšiřitelná kategorie. Můžete napsat rozšíření, které bude využívat artefakty ze služby sestavení a zavést nový typ služby jako součást builds. Jenkins je typ prostředku v builds.

Důležité

Triggery se podporují jenom pro hostované Jenkinse, kde má Azure DevOps přehled o serveru Jenkinse.

downloadBuild úkol pro sestavení

Artefakty z build prostředku můžete využívat jako součást úloh pomocí downloadBuild úkolu. Na základě typu definovaného build zdroje se tato úloha automaticky přeloží na odpovídající úlohu stahování služby během běhu.

Artefakty z build prostředku se stáhnou do $(PIPELINE.WORKSPACE)/<build-identifier>/ složky.

Důležité

build Artefakty prostředků se automaticky nestáhnou ve vašich úlohách nebo úlohách deploy-jobs. Musíte explicitně přidat downloadBuild úlohu pro využívání artefaktů.

- 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

repositories Definování prostředku

Pokud váš kanál obsahuje šablony v jiném úložišti nebo pokud chcete použít rezervaci více úložišť s úložištěm, které vyžaduje připojení služby, musíte o daném úložišti instruovat systém. Klíčové repository slovo umožňuje zadat externí úložiště.

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.

Typ

Kanály podporují následující hodnoty pro typ úložiště: git, github, githubenterprisea bitbucket. Typ git odkazuje na úložiště Git v Azure Repos.

Zadaný typ Výsledek Příklad
type: git Hodnota name odkazuje na jiné úložiště ve stejném projektu. name: otherRepo Pokud chcete odkazovat na úložiště v jiném projektu ve stejné organizaci, předpona názvu tohoto projektu. Příklad: name: OtherProject/otherRepo.
type: github Hodnota name je úplný název úložiště GitHub a zahrnuje uživatele nebo organizaci. name: Microsoft/vscode
type: githubenterprise hodnota name je úplný název úložiště GitHub Enterprise a zahrnuje uživatele nebo organizaci. name: Microsoft/vscode
type: bitbucket Hodnota name je úplný název úložiště Bitbucket Cloud a zahrnuje uživatele nebo organizaci. name: MyBitbucket/vscode

Úložiště GitHub Enterprise vyžadují pro autorizaci připojení služby GitHub Enterprise.

Úložiště Bitbucket Cloud vyžadují pro autorizaci připojení ke cloudové službě Bitbucket.

Proměnné

V každém spuštění jsou metadata prostředku úložiště k dispozici pro všechny úlohy ve formě proměnných modulu runtime. Jedná se <Alias> o identifikátor, který jste zadali pro prostředek úložiště.

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

Proměnné

V každém spuštění jsou metadata prostředku úložiště k dispozici pro všechny úlohy ve formě proměnných modulu runtime. Jedná se <Alias> o identifikátor, který jste zadali pro prostředek úložiště.

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

Použití checkout k využívání úložiště

Pomocí checkout klíčového slova můžete využívat úložiště definovaná jako součást repository prostředku.

Schéma

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.

Úložiště z repository prostředku se ve vašich úlohách automaticky nesynchronizují. Slouží checkout k načtení úložišť v rámci úloh.

Další informace najdete v tématu Rezervace více úložišť v kanálu.

containers Definování prostředku

Pokud potřebujete využívat image kontejneru jako součást kanálu kontinuální integrace nebo průběžného doručování (CI/CD), můžete ji dosáhnout pomocí containers. Prostředek kontejneru může být veřejný nebo privátní registr Dockeru nebo Azure Container Registry.

Pokud potřebujete využívat image z registru Dockeru jako součást vašeho kanálu, můžete definovat obecný prostředek kontejneru (nevyžaduje se type klíčové slovo).

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

Jako image využitou jako součást úlohy můžete použít obecný prostředek kontejneru nebo ho můžete použít také pro úlohy kontejneru. Pokud váš kanál vyžaduje podporu jedné nebo více služeb, budete chtít vytvořit kontejnery služeb a připojit se k němu. Svazky můžete použít ke sdílení dat mezi službami.

K využívání imagí ACR můžete použít typ prostředku kontejneru první třídy pro Službu Azure Container Registry (ACR). Tento typ prostředků lze použít jako součást úloh a také k povolení automatických aktivačních událostí kanálu. Abyste mohli používat automatické triggery kanálu, musíte mít oprávnění přispěvatele nebo vlastníka pro službu ACR. Další informace najdete v tématu Role a oprávnění služby Azure Container Registry.

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

Poznámka:

Syntaxe, která se používá k povolení triggerů kontejneru pro všechny značky imagí (enabled: 'true') se liší od syntaxe, která se používá pro jiné triggery prostředků. Věnujte pozornost použití správné syntaxe pro konkrétní prostředek.

Poznámka:

Připojení služeb, která používají federaci identit úloh, nejsou podporována v azureSubscription.

Proměnné prostředků kontejneru

Po definování kontejneru jako prostředku se metadata image kontejneru předají kanálu ve formě proměnných. Informace, jako jsou image, registr a podrobnosti o připojení, jsou přístupné napříč všemi úlohami, které se mají použít v úlohách nasazení kontejneru.

Proměnné prostředků kontejneru fungují s Dockerem a službou Azure Container Registry. Proměnné prostředků kontejneru nemůžete použít pro místní kontejnery imagí.

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

Proměnná umístění je použitelná pouze pro ACR typ prostředků kontejneru.

packages Definování prostředku

Balíčky NuGet a npm GitHubu můžete využívat jako prostředek v kanálech YAML.

Při zadávání package prostředků nastavte balíček jako NuGet nebo npm. Automatické triggery kanálu můžete povolit také při vydání nové verze balíčku.

Pokud chcete používat balíčky GitHubu, použijte ověřování na základě pat a vytvořte připojení služby GitHub, které používá paty.

Ve výchozím nastavení se balíčky automaticky nestáhnou do úloh. Ke stažení použijte 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

webhooks Definování prostředku

Poznámka:

Webhooky byly vydány v Azure DevOps Serveru 2020.1.

S dalšími prostředky (jako jsou kanály, kontejnery, sestavení a balíčky) můžete využívat artefakty a povolit automatizované spouštěcí události. Proces nasazení nicméně nemůžete automatizovat na základě jiných externích událostí nebo služeb. Tento webhooks prostředek umožňuje integrovat kanál s jakoukoli externí službou a automatizovat pracovní postup. Můžete se přihlásit k odběru jakýchkoli externích událostí prostřednictvím jejich webhooků (GitHub, GitHub Enterprise, Nexus, Artifactory atd.) a aktivovat tak své kanály.

Pomocí následujících kroků nakonfigurujte triggery webhooku.

  1. Nastavte webhook ve vaší externí službě. Při vytváření webhooku musíte zadat následující informace:

    • Adresa URL požadavku

      https://dev.azure.com/<ADO Organization>/_apis/public/distributedtask/webhooks/<WebHook Name>?api-version=6.0-preview
      
    • Tajný kód – volitelné. Pokud potřebujete datovou část JSON zabezpečit, zadejte hodnotu Tajné .

  2. Vytvořte nové připojení služby Příchozí webhook. Toto připojení je nově zavedený typ připojení služby, který umožňuje definovat následující důležité informace:

    • Název webhooku: Název webhooku by měl odpovídat webhooku vytvořenému ve vaší externí službě.
    • Hlavička HTTP – název hlavičky HTTP v požadavku, který obsahuje hodnotu hash HMAC-SHA1 datové části pro ověření požadavku. Například pro GitHub je hlavička požadavku X-Hub-Signature.
    • Tajný kód – Tajný kód slouží k ověření hodnoty hash HMAC-SHA1 datové části používané k ověření příchozího požadavku (volitelné). Pokud jste při vytváření webhooku použili tajný klíč, musíte zadat stejný tajný klíč.

    Příchozí připojení ke službě Webhook

  3. V kanálech YAML se zavádí nový typ webhooks prostředku. Pokud se chcete přihlásit k odběru události webhooku, definujte prostředek webhooku v kanálu a nasměrujte ho na připojení služby Příchozí webhook. Můžete také definovat další filtry pro prostředek webhooku na základě dat datové části JSON a přizpůsobit triggery pro každý kanál. Využití dat datové části ve formě proměnných v úlohách

  4. Pokaždé, když příchozí připojení služby Webhook obdrží událost webhooku, aktivuje se nové spuštění pro všechny kanály přihlášené k odběru události webhooku. Data datové části JSON v úlohách můžete využívat ve formátu ${{ 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

Webhooky automatizují pracovní postup na základě jakékoli události externího webhooku, která není podporována prostředky první třídy, jako jsou kanály, buildy, kontejnery a balíčky. U místních služeb, kde Azure DevOps nemá přehled o procesu, můžete také nakonfigurovat webhooky ve službě a aktivovat kanály automaticky.

Ruční výběr verze pro prostředky v dialogu pro vytvoření spuštění

Když ručně aktivujete kanál CD YAML, automaticky vyhodnotíme výchozí verzi pro prostředky definované v kanálu na základě zadaných vstupů. Při vytváření spuštění ale můžete vybrat jinou verzi než výběr verze prostředku.

  1. V podokně Vytvořit spuštění vyberte Prostředky. Zobrazí se seznam prostředků spotřebovaných v tomto kanálu.

  2. Vyberte prostředek a v seznamu dostupných verzí vyberte konkrétní verzi. Výběr verze prostředku se podporuje pro prostředky kanálu, sestavení, úložiště, kontejneru a balíčku.

    Výběr verze kanálu

U prostředků kanálu uvidíte všechna dostupná spuštění napříč všemi větvemi. Prohledávejte je na základě čísla kanálu nebo větve. A vyberte běh, který je úspěšný, neúspěšný nebo probíhající. Tato flexibilita zajišťuje, že kanál CD můžete spustit, pokud jste si jistí, že vytvořil všechny potřebné artefakty. Nemusíte čekat na dokončení nebo opětovné spuštění CI kvůli selhání nesouvisející fáze spuštění CI. Pokud ale vyhodnotíme výchozí verzi plánovaných triggerů, zvažujeme pouze úspěšné dokončení spuštění CI, nebo pokud nepoužíváte ruční výběr verze.

U prostředků, kde nemůžete načíst dostupné verze, jako jsou balíčky GitHubu, zobrazíme textové pole jako součást výběru verze, abyste mohli zadat verzi, kterou má spuštění vybrat.

Autorizace kanálu YAML

Prostředky musí být před jejich používáním autorizované. Vlastník prostředku řídí uživatele a kanály, které můžou k danému prostředku přistupovat. Kanál musí mít oprávnění k používání prostředku. Podívejte se na následující způsoby, jak autorizovat kanál YAML.

  • Přejděte do prostředí pro správu prostředku. Například skupiny proměnných a zabezpečené soubory se spravují na stránce Knihovna v části Kanály. Fondy agentů a připojení služeb se spravují v nastaveních Projectu. Tady můžete autorizovat všechny kanály pro přístup k danému prostředku. Tato autorizace je praktická, pokud nepotřebujete omezit přístup k prostředku – například testovací prostředky.

  • Při prvním vytvoření kanálu se všechny prostředky, na které odkazuje soubor YAML, automaticky autorizovají k použití kanálem, pokud jste členem role Uživatele pro daný prostředek. Prostředky, na které se odkazuje v souboru YAML při vytváření kanálu, se tedy automaticky autorizovají.

  • Když provedete změny v souboru YAML a přidáte prostředky, sestavení selže s chybou podobnou následující chybě: Could not find a <resource> with name <resource-name>. The <resource> does not exist or has not been authorized for use.

    V tomto případě se zobrazí možnost autorizace prostředků v neúspěšném sestavení. Pokud jste členem role Uživatel prostředku, můžete tuto možnost vybrat. Jakmile jsou prostředky autorizované, můžete spustit nové sestavení.

  • Ověřte správnost rolí zabezpečení fondu agentů pro váš projekt.

Nastavení kontrol schválení pro prostředky

Můžete ručně řídit, kdy se prostředek spouští pomocí kontrol schválení a šablon. Při kontrole schválení požadované šablony můžete vyžadovat jakýkoli kanál využívající prostředek nebo prostředí také z konkrétní šablony YAML. Nastavení požadovaného schválení šablony zvyšuje zabezpečení. Ujistěte se, že se prostředek použije jenom za určitých podmínek pomocí šablony. Přečtěte si další informace o tom, jak vylepšit zabezpečení kanálů pomocí šablon a prostředků.

Sledovatelnost

Poskytujeme úplnou sledovatelnost všech prostředků spotřebovaných na úrovni úlohy kanálu nebo nasazení.

Sledovatelnost kanálu

Pro každé spuštění kanálu zobrazíme následující informace.

  • Prostředek, který aktivoval kanál, pokud je aktivovaný prostředkem.

    Trigger prostředku v kanálu

  • Verze prostředku a využitých artefaktů

    Spotřebované artefakty při spuštění kanálu

  • Potvrzení přidružená k jednotlivým prostředkům.

    Potvrzení ve spuštění kanálu

  • Pracovní položky přidružené ke každému zdroji

Sledovatelnost prostředí

Kdykoli se kanál nasadí do prostředí, zobrazí se seznam využívaných prostředků. Následující zobrazení obsahuje prostředky spotřebované jako součást úloh nasazení a jejich přidružených potvrzení a pracovních položek.

Potvrzení v prostředí

Zobrazení informací o přidružených kanálech CD v kanálech CI

Pokud chcete zajistit kompletní sledovatelnost, můžete sledovat, které kanály CD využívají kanál CI. Zobrazí se seznam spuštění kanálů YAML CD, kde se prostřednictvím prostředku využívá pipeline spuštění kanálu CI. Pokud váš kanál CI spotřebovávají jiné kanály, zobrazí se v zobrazení spuštění karta Přidružené kanály. Tady najdete všechna spuštění kanálu, která z něj využívají váš kanál a artefakty.

Informace o kanálech CD v kanálu CI

Problémy s triggerem prostředků YAML – podpora a sledovatelnost

Může to být matoucí, když se triggery kanálu nepodaří spustit. Na stránce definice kanálu jsme přidali novou položku nabídky s názvem Problémy s triggerem, kde se dozvíte, proč se triggery nespouštějí. Pokud chcete získat přístup k této stránce, otevřete historii kanálu. Problémy s triggerem jsou dostupné jenom pro prostředky mimo úložiště.

V navigaci vyberte Problémy s triggerem.

Triggery prostředků se nedají spustit z následujících důvodů.

  • Pokud je zdroj zadaného připojení služby neplatný nebo pokud trigger obsahuje nějaké chyby syntaxe, trigger není nakonfigurovaný, což způsobí chybu.

  • Pokud se podmínky triggeru neshodují, trigger se nespustí. Zobrazí se upozornění, abyste pochopili, proč se podmínky neshodovaly.

    Problémy s podporou triggerů

Další kroky

Často kladené dotazy

Proč mám místo zástupce používat kanály resourcesdownload ?

pipelines Použití prostředku je způsob, jak využívat artefakty z kanálu CI a také konfigurovat automatizované triggery. Prostředek poskytuje úplný přehled o procesu zobrazením spotřebované verze, artefaktů, potvrzení a pracovních položek. Když definujete prostředek kanálu, přidružené artefakty se automaticky stáhnou v úlohách nasazení.

Můžete se rozhodnout stáhnout artefakty v úlohách sestavení nebo přepsat chování stahování v úlohách nasazení pomocí download. Další informace najdete v tématu steps.download.

Proč mám místo úlohy Stáhnout artefakty kanálu použít resources ?

Když přímo použijete úlohu Stáhnout artefakty kanálu, zmeškáte sledovatelnost a triggery. Někdy je vhodné použít přímo úlohu Stažení artefaktů kanálu. Můžete mít například úlohu skriptu uloženou v jiné šabloně a úloha skriptu vyžaduje stažení artefaktů ze sestavení. Nebo možná nevíte, jestli někdo, kdo používá šablonu, chce přidat prostředek kanálu. Abyste se vyhnuli závislostem, můžete k předání všech informací o sestavení úkolu použít úlohu Stažení artefaktů kanálu.

Jak můžu aktivovat spuštění kanálu při aktualizaci image Docker Hubu?

Budete muset nastavit klasický kanál verze, protože trigger prostředků kontejnerů není pro Docker Hub pro kanály YAML dostupný.

  1. Vytvořte nové připojení služby Docker Hub.

  2. Vytvořte klasický kanál verze a přidejte artefakt Docker Hubu. Nastavte připojení služby. Vyberte obor názvů, úložiště, verzi a alias zdroje.

    Přidejte artefakt Docker Hubu.

  3. Vyberte trigger a přepněte trigger průběžného nasazování na možnost Povolit. Vydání vytvoříte pokaždé, když dojde k nasdílení změn Dockeru do vybraného úložiště.

  4. Vytvořte novou fázi a úlohu. Přidejte dva úkoly, přihlášení Dockeru a Bash:

  • Úloha Dockeru login má akci a přihlásí vás do Docker Hubu.

  • Úloha Bash se spustí docker pull <hub-user>/<repo-name>[:<tag>]. Nahraďte hub-userhodnoty repo-namea tag nahraďte hodnotami.

    Přidejte úlohy Přihlášení Dockeru a Bash.

Jak můžu ověřit a řešit potíže s webhooky?

  1. Vytvořte připojení služby.

  2. Odkazujte na připojení ke službě a pojmenujte webhook v webhooks části.

    resources:
      webhooks:
        - webhook: MyWebhookTriggerAlias
          connection: MyServiceConnection
    
  3. Spusťte kanál. Při spuštění kanálu se webhook vytvoří v Azure jako distribuovaná úloha pro vaši organizaci.

  4. POST Proveďte volání rozhraní API s platným kódem JSON v textu do https://dev.azure.com/{organization}/_apis/public/distributedtask/webhooks/{webhook-name}?api-version={apiversion}. Pokud obdržíte odpověď na stavový kód 200, váš webhook je připravený ke spotřebě kanálem. Pokud se zobrazí odpověď se stavovým kódem 500 s chybou Cannot find webhook for the given webHookId ..., váš kód může být ve větvi, která není vaší výchozí větví.

    1. Otevřete kanál.
    2. Vyberte položku Upravit.
    3. Vyberte nabídku Nabídka Vybrat další akce dalších akcí .
    4. Vyberte Triggery>YAML>Get Sources.
    5. Přejděte do výchozí větve pro ruční a plánované sestavení a aktualizujte větev funkcí.
    6. Vyberte Uložit a frontu.
    7. Po úspěšném spuštění tohoto kanálu proveďte POST volání rozhraní API s platným kódem JSON v textu do https://dev.azure.com/{organization}/_apis/public/distributedtask/webhooks/{webhook-name}?api-version={apiversion}. Teď byste měli obdržet odpověď na stavový kód 200.