Definieren von Ressourcen in YAML
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Ressourcen in YAML stellen Quellen von Pipelines, Builds, Repositorys, Containern, Paketen und Webhooks dar. Ressourcen bieten Ihnen auch die vollständige Nachverfolgbarkeit der in Ihrer Pipeline verwendeten Dienste, einschließlich der Version, Artefakte, zugeordneten Commits und Arbeitselemente. Wenn Sie eine Ressource definieren, kann sie überall in Ihrer Pipeline genutzt werden. Außerdem können Sie Ihren DevOps-Workflow vollständig automatisieren, indem Sie Triggerereignisse für Ihre Ressourcen abonnieren.
Weitere Informationen finden Sie unter Informationen zu Ressourcen und der YAML-Schemadefinition für Ressourcen.
Schema
resources:
pipelines: [ pipeline ]
builds: [ build ]
repositories: [ repository ]
containers: [ container ]
packages: [ package ]
webhooks: [ webhook ]
Variables
Wenn eine Ressource eine Pipeline auslöst, werden die folgenden Variablen festgelegt:
resources.triggeringAlias
resources.triggeringCategory
Diese Werte sind leer, wenn eine Ressource keine Pipelineausführung auslöst. Die Variable Build.Reason
muss ResourceTrigger
sein, damit diese Werte festgelegt werden.
Definieren einer pipelines
-Ressource
Wenn Sie über eine Pipeline verfügen, die Artefakte erzeugt, können Sie die Artefakte nutzen, indem Sie eine pipelines
-Ressource definieren. pipelines
ist nur für Azure Pipelines eine dedizierte Ressource. Sie können auch Trigger für eine Pipelineressource für Ihre CD-Workflows festlegen.
In Ihrer Ressourcendefinition ist pipeline
ein eindeutiger Wert, den Sie verwenden können, um später auf die Pipelineressource zu verweisen. source
ist der Name der Pipeline, die ein Artefakt erzeugt. Verwenden Sie die durch pipeline
definierte Bezeichnung, um von anderen Teilen der Pipeline aus auf die Pipelineressource zu verweisen, z. B. beim Verwenden von Pipelineressourcenvariablen oder beim Herunterladen von Artefakten.
Eine alternative Möglichkeit zum Herunterladen von Pipelines finden Sie unter den Aufgaben in Pipelineartefakte.
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
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
Wichtig
Wenn Sie einen Ressourcentrigger definieren und die zugehörige Pipelineressource aus demselben Repository (z. B. „self“) stammt wie die aktuelle Pipeline, folgt die Auslösung demselben Branch und Commit, bei dem das Ereignis ausgelöst wird. Wenn die Pipelineressource jedoch aus einem anderen Repository stammt, wird die aktuelle Pipeline auf dem Standardbranch des self-Repositorys ausgelöst.
Auswertung der Artefaktversion
Die Version der Artefakte der Ressourcenpipeline hängt davon ab, wie Ihre Pipeline ausgelöst wird.
Wenn Ihre Pipeline ausgeführt wird, da Sie sie manuell ausgelöst haben oder aufgrund einer geplanten Ausführung, wird die Version der Artefakte durch die Werte der Eigenschaften version
, branch
und tags
definiert.
Angegebene Eigenschaften | Artefaktversion |
---|---|
version |
Die Artefakte aus dem Build mit der angegebenen Ausführungsnummer. |
branch |
Die Artefakte aus dem neuesten Build, der für den angegebenen Branch ausgeführt wurde. |
tags -Liste |
Die Artefakte aus dem neuesten Build mit allen angegebenen Tags |
Liste branch und tags |
Die Artefakte aus dem neuesten Build, der für den angegebenen Branch und mit allen angegebenen Tags ausgeführt wurde. |
Keine | Die Artefakte aus dem neuesten Build in allen Branches. |
Schauen wir uns ein Beispiel an. Angenommen, Ihre Pipeline enthält die folgende Ressourcendefinition.
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
Wenn Sie die Ausführung der Pipeline manuell auslösen, entspricht die Version der Artefakte der MyCIAlias
-Pipeline der des neuesten Builds, der für den main
-Branch durchgeführt wurde und über die Tags Production
und PrepProduction
verfügt.
Wenn Ihre Pipeline ausgelöst wird, da eine ihrer Ressourcenpipelines abgeschlossen ist, entspricht die Version der Artefakte derjenigen der auslösenden Pipeline. Die Werte der Eigenschaften version
, branch
und tags
werden ignoriert.
Angegebene Trigger | Ergebnis |
---|---|
branches |
Eine neue Ausführung der aktuellen Pipeline wird ausgelöst, wenn die Ressourcenpipeline erfolgreich eine Ausführung auf den include -Branches abgeschlossen hat. |
tags |
Eine neue Ausführung der aktuellen Pipeline wird ausgelöst, wenn die Ressourcenpipeline erfolgreich eine Ausführung abschließt, die mit allen angegebenen Tags markiert ist. |
stages |
Eine neue Ausführung der aktuellen Pipeline wird ausgelöst, wenn die Ressourcenpipeline die angegebene stages erfolgreich ausgeführt hat. |
branches , tags und stages |
Eine neue Ausführung der aktuellen Pipeline wird ausgelöst, wenn die Ausführung der Ressourcenpipeline alle Branch-, Tag- und Phasenbedingungen erfüllt. |
trigger: true |
Eine neue Ausführung der aktuellen Pipeline wird ausgelöst, wenn die Ressourcenpipeline erfolgreich eine Ausführung abgeschlossen hat. |
Nichts | Es wird keine neue Ausführung der aktuellen Pipeline ausgelöst, wenn die Ressourcenpipeline erfolgreich eine Ausführung abgeschlossen hat. |
Schauen wir uns ein Beispiel an. Angenommen, Ihre Pipeline enthält die folgende Ressourcendefinition.
resources:
pipelines:
- pipeline: SmartHotel
project: DevOpsProject
source: SmartHotel-CI
trigger:
branches:
include:
- releases/*
- main
exclude:
- topic/*
tags:
- Verified
- Signed
stages:
- Production
- PreProduction
Ihre Pipeline wird immer dann ausgeführt, wenn die SmartHotel-CI
-Pipeline auf einem der releases
-Branches oder auf dem main
-Branch ausgeführt wird, mit Verified
und Signed
gekennzeichnet ist und sowohl die Production
- als auch die PreProduction
-Phase abgeschlossen hat.
download
für Pipelines
Alle Artefakte aus der aktuellen Pipeline und aus allen pipeline
-Ressourcen werden automatisch heruntergeladen und zu Beginn eines jeden deployment
-Auftrags zur Verfügung gestellt. Sie können dieses Verhalten außer Kraft setzen. Weitere Informationen finden Sie unter Pipelineartefakte. Reguläre „Auftragsartefakte“ werden nicht automatisch heruntergeladen. Verwenden Sie bei Bedarf explizit 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
Artefakte aus der pipeline
-Ressource werden in den Ordner $(PIPELINE.WORKSPACE)/<pipeline-identifier>/<artifact-identifier>
heruntergeladen.
Variablen der Pipelineressource
In jeder Ausführung sind die Metadaten für eine Pipelineressource für alle Aufträge in Form von vordefinierten Variablen verfügbar. Der <Alias>
ist der Bezeichner, den Sie für Ihre Pipelineressource angegeben haben. Die Variablen der Pipelineressource sind nur zur Laufzeit verfügbar.
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
Weitere Informationen finden Sie unter Metadaten der Pipelineressource als vordefinierte Variablen.
Definieren einer builds
-Ressource
Wenn Sie über ein externes CI-Buildsystem verfügen, das Artefakte erzeugt, können Sie Artefakte mit einer builds
-Ressource nutzen. Eine builds
-Ressource kann ein beliebiges externes CI-System wie Jenkins, TeamCity, CircleCI usw. sein.
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
ist eine erweiterbare Kategorie. Sie können eine Erweiterung schreiben, um Artefakte von Ihrem Builddienst zu nutzen und eine neue Art von Dienst als Teil von builds
einzuführen. Jenkins ist ein Ressourcentyp in builds
.
Wichtig
Trigger werden nur für gehostetes Jenkins unterstützt, bei dem Azure DevOps eine Sichtverbindung mit dem Jenkins-Server hat.
downloadBuild
-Aufgabe für Builds
Sie können Artefakte aus der build
-Ressource im Rahmen Ihrer Aufträge mithilfe der downloadBuild
-Aufgabe verwenden. Basierend auf dem definierten Ressourcentyp build
löst diese Aufgabe automatisch die entsprechende Downloadaufgabe für den Dienst während der Laufzeit auf.
Artefakte aus der build
-Ressource werden in den Ordner $(PIPELINE.WORKSPACE)/<build-identifier>/
heruntergeladen.
Wichtig
build
-Ressourcenartefakte werden nicht automatisch in Ihren Aufträgen/Bereitstellungsaufträgen heruntergeladen. Sie müssen explizit die Aufgabe downloadBuild
zur Verwendung der Artefakte hinzufügen.
- 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
Definieren einer repositories
-Ressource
Wenn Ihre Pipeline über Vorlagen in einem anderen Repository verfügt, oder Sie das Auschecken mehrerer Repositorys mit einem Repository verwenden möchten, das eine Dienstverbindung erfordert, müssen Sie das System über dieses Repository informieren.
Mit dem repository
-Schlüsselwort können Sie ein externes Repository angeben.
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
Pipelines unterstützen die folgenden Werte für den Repositorytyp: git
, github
, githubenterprise
und bitbucket
.
Der git
-Typ bezieht sich auf Azure Repos Git-Repositorys.
Typ angegeben | Ergebnis | Beispiel |
---|---|---|
type: git |
Der name -Wert verweist auf ein anderes Repository im selben Projekt. |
name: otherRepo : Wenn Sie auf ein Repository in einem anderen Projekt innerhalb derselben Organisation verweisen möchten, stellen Sie dem Namen den Namen dieses Projekts voran. z. B. name: OtherProject/otherRepo . |
type: github |
Der name -Wert ist der vollständige Name des GitHub-Repositorys und enthält den Benutzer oder die Organisation. |
name: Microsoft/vscode |
type: githubenterprise |
Der name -Wert ist der vollständige Name des GitHub Enterprise-Repositorys und enthält den Benutzer oder die Organisation. |
name: Microsoft/vscode |
type: bitbucket |
Der name -Wert ist der vollständige Name des Bitbucket Cloud-Repositorys und enthält den Benutzer oder die Organisation. |
name: MyBitbucket/vscode |
GitHub Enterprise-Repositorys benötigen zur Autorisierung eine GitHub Enterprise-Dienstverbindung.
Bitbucket Cloud-Repositorys benötigen eine Bitbucket Cloud-Dienstverbindung zur Autorisierung.
Variables
In jeder Ausführung sind die Metadaten für eine Repositoryressource für alle Aufträge in Form von Laufzeitvariablen verfügbar. Der <Alias>
ist der Bezeichner, den Sie für Ihre Repositoryressource angegeben haben.
Verwenden von checkout
zum Nutzen des Repositorys
Verwenden Sie das Schlüsselwort checkout
, um Ihre Repositorys zu verwenden, die als Teil der Ressource repository
definiert sind.
Schema
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.
Repositorys aus der repository
-Ressource werden nicht automatisch in Ihren Aufträgen synchronisiert. Verwenden Sie checkout
, um Ihre Repositorys als Teil Ihrer Aufträge abzurufen.
Weitere Informationen finden Sie im Artikel zum Auschecken mehrerer Repositorys in Ihrer Pipeline.
Definieren einer containers
-Ressource
Wenn Sie ein Containerimage als Teil Ihrer CI/CD-Pipeline (Continuous Integration/Continuous Delivery) verwenden möchten, können Sie dies mithilfe von containers
erreichen. Eine Containerressource kann eine öffentliche oder private Docker-Registrierung oder eine Azure Container Registry-Instanz sein.
Wenn Sie als Teil Ihrer Pipeline Images aus der Docker-Registrierung verwenden möchten, können Sie eine generische Containerressource definieren (kein type
-Schlüsselwort erforderlich).
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
Sie können eine generische Containerressource als Image verwenden, das als Teil Ihres Auftrags genutzt wird, oder sie kann auch für Containeraufträge verwendet werden. Wenn Ihre Pipeline die Unterstützung eines oder mehrerer Dienste erfordert, sollten Sie Dienstcontainer erstellen und mit diesen eine Verbindung herstellen. Sie können Volumes verwenden, um Daten zwischen Diensten freizugeben.
Sie können einen erstklassigen Containerressourcentyp für Azure Container Registry (ACR) verwenden, um Ihre ACR-Images zu nutzen. Dieser Ressourcentyp kann als Teil Ihrer Aufträge und zum Aktivieren automatischer Pipelinetrigger verwendet werden. Sie benötigen die Berechtigungen Mitwirkender oder Besitzer für ACR, um automatische Pipelinetrigger zu verwenden. Weitere Informationen finden Sie unter Azure Container Registry: Rollen und Berechtigungen.
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
Hinweis
Die Syntax, die zum Aktivieren von Containertriggern für alle Imagetags (enabled: 'true'
) verwendet wird, unterscheidet sich von der Syntax, die für andere Ressourcentrigger verwendet wird. Achten Sie genau darauf, die richtige Syntax für eine bestimmte Ressource zu verwenden.
Containerressourcenvariablen
Sobald Sie einen Container als Ressource definieren, werden Containerimage-Metadaten in Form von Variablen an die Pipeline übergeben. Informationen wie Image, Registrierung und Verbindungsdetails sind für alle Aufträge zugänglich, die Sie für Ihre Aufgaben zur Bereitstellung von Containern verwenden.
Containerressourcenvariablen funktionieren mit Docker und Azure Container Registry. Sie können keine Containerressourcenvariablen für lokale Imagecontainer verwenden.
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
Die Standortvariable gilt nur für den ACR
-Typ von Containerressourcen.
Definieren einer packages
-Ressource
Sie können NuGet- und npm-GitHub-Pakete als Ressource in YAML-Pipelines nutzen.
Wenn Sie package
-Ressourcen angeben, legen Sie das Paket als NuGet oder npm fest. Sie können auch automatische Pipelinetrigger aktivieren, wenn eine neue Paketversion veröffentlicht wird.
Um GitHub-Pakete zu verwenden, verwenden Sie eine Authentifizierung auf der Basis von persönlichen Zugriffstoken (Personal Access Token, PAT) und erstellen eine GitHub-Dienstverbindung, die PATs verwendet.
Standardmäßig werden Pakete nicht automatisch in Aufträge heruntergeladen. Verwenden Sie zum Herunterladen 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
Definieren einer webhooks
-Ressource
Hinweis
Webhooks wurden in Azure DevOps Server 2020.1 veröffentlicht.
Mit anderen Ressourcen (wie Pipelines, Containern, Builds und Paketen) können Sie Artefakte nutzen und automatische Trigger aktivieren. Sie können Ihren Bereitstellungsprozess jedoch nicht auf der Grundlage anderer externer Ereignisse oder Dienste automatisieren. Mit der webhooks
-Ressource können Sie Ihre Pipeline in jeden externen Dienst integrieren und den Workflow automatisieren. Sie können alle externen Ereignisse über ihre Webhooks (GitHub, GitHub Enterprise, Nexus, Artifactory usw.) abonnieren und Ihre Pipelines auslösen.
Führen Sie die folgenden Schritte aus, um die Webhooktrigger zu konfigurieren.
Richten Sie einen Webhook für Ihren externen Dienst ein. Wenn Sie Ihren Webhook erstellen, müssen Sie die folgenden Informationen angeben:
Anforderungs-URL
https://dev.azure.com/<ADO Organization>/_apis/public/distributedtask/webhooks/<WebHook Name>?api-version=6.0-preview
Geheimnis – Optional Wenn Sie Ihre JSON-Nutzdaten schützen müssen, geben Sie den Wert für das Geheimnis an.
Erstellen Sie eine neue Dienstverbindung vom Typ „Eingehender Webhook“. Diese Verbindung ist ein neu eingeführter Dienstverbindungstyp, mit dem Sie die folgenden wichtigen Informationen definieren können:
- Webhookname: Der Name des Webhooks sollte dem in Ihrem externen Dienst erstellten Webhook entsprechen.
- HTTP-Header: Der Name des HTTP-Headers in der Anforderung, der den HMAC-SHA1-Hashwert der Nutzdaten zur Überprüfung der Anforderung enthält. Für GitHub lautet der Header der Anforderung z. B. „X-Hub-Signature“.
- Geheimnis: Das Geheimnis wird verwendet, um den HMAC-SHA1-Hash der Nutzdaten zu überprüfen, der zur Überprüfung der eingehenden Anforderung verwendet wird (optional). Wenn Sie beim Erstellen Ihres Webhooks ein Geheimnis verwendet haben, müssen Sie denselben geheimen Schlüssel angeben.
Ein neuer Ressourcentyp namens
webhooks
wird in YAML-Pipelines eingeführt. Um ein Webhookereignis zu abonnieren, definieren Sie eine Webhookressource in Ihrer Pipeline, und verweisen sie auf die eingehende Webhookdienstverbindung. Sie können auch weitere Filter für die Webhookressource definieren, die auf den JSON-Nutzdaten basieren, um die Trigger für die einzelnen Pipelines anzupassen. Verbrauchen Sie die Nutzdaten in Form von Variablen in Ihren Aufträgen.Immer, wenn die eingehende Webhookdienstverbindung ein Webhookereignis empfängt, wird eine neue Ausführung für alle Pipelines ausgelöst, die das Webhookereignis abonniert haben. Sie können die JSON-Nutzdaten in Ihren Aufträgen mithilfe des Formats
${{ parameters.<WebhookAlias>.<JSONPath>}}
nutzen.
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
Webhooks automatisieren Ihren Workflow auf der Grundlage eines externen Webhookereignisses, das nicht von erstklassigen Ressourcen wie Pipelines, Builds, Container und Pakete unterstützt wird. Auch für lokale Dienste, bei denen Azure DevOps keinen Einblick in den Prozess hat, können Sie Webhooks für den Dienst konfigurieren, um Ihre Pipelines automatisch auszulösen.
Manuelle Versionsauswahl für Ressourcen im Dialogfeld zum Erstellen einer Ausführung
Wenn Sie eine CD-YAML-Pipeline manuell auslösen, werten wir automatisch die Standardversion für die in der Pipeline definierten Ressourcen basierend auf den angegebenen Eingaben aus. Sie können jedoch eine andere Version aus der Versionsauswahl der Ressource auswählen, wenn Sie eine Ausführung erstellen.
Wählen Sie im Bereich Ausführung erstellen die Option Ressourcen aus. Es wird eine Liste der in dieser Pipeline verbrauchten Ressourcen angezeigt.
Wählen Sie eine Ressource und dann eine bestimmte Version aus der Liste der verfügbaren Versionen aus. Die Ressourcenversionsauswahl wird für Pipeline-, Build-, Repository-, Container- und Paketressourcen unterstützt.
Für Pipelineressourcen werden alle verfügbaren Ausführungen aus allen Branches angezeigt. Suchen Sie sie anhand der Pipelinenummer oder des Branchs. Und wählen Sie eine Ausführung aus, die erfolgreich, fehlerhaft oder in Bearbeitung ist. Diese Flexibilität gewährleistet, dass Sie Ihre CD-Pipeline ausführen können, wenn Sie sicher sind, dass sie alle erforderlichen Artefakte erzeugt hat. Sie müssen nicht warten, bis die CI-Ausführung abgeschlossen oder erneut ausgeführt wird, da ein nicht verwandter Phasenfehler in der CI-Ausführung aufgetreten ist. Wir berücksichtigen jedoch nur erfolgreich ausgeführte CI-Ausführungen, wenn wir die Standardversion für geplante Trigger auswerten oder wenn Sie keine manuelle Versionsauswahl verwenden.
Für Ressourcen, von denen Sie keine verfügbaren Versionen abrufen können, z. B. GitHub-Pakete, zeigen wir ein Textfeld als Teil der Versionsauswahl an, sodass Sie die Version angeben können, die für die Ausführung gewählt werden soll.
Autorisieren einer YAML-Pipeline
Ressourcen müssen vor der Verwendung autorisiert werden. Ein Ressourcenbesitzer kontrolliert die Benutzer und Pipelines, die auf diese Ressource zugreifen können. Die Pipeline muss für die Verwendung der Ressource autorisiert sein. Sehen Sie sich die folgenden Möglichkeiten an, wie Sie eine YAML-Pipeline autorisieren können.
Wechseln Sie zur Verwaltungsoberfläche der Ressource. Variablengruppen und sichere Dateien werden beispielsweise auf der Seite Bibliothek unter Pipelines verwaltet. Agentpools und Dienstverbindungen werden in Projekteinstellungen verwaltet. Hier können Sie alle Pipelines für den Zugriff auf diese Ressource autorisieren. Diese Autorisierung ist praktisch, wenn Sie den Zugriff auf eine Ressource – z. B. Testressourcen – nicht einschränken müssen.
Wenn Sie eine Pipeline zum ersten Mal erstellen, werden alle Ressourcen, auf die in der YAML-Datei verwiesen wird, automatisch für die Verwendung durch die Pipeline autorisiert, wenn Sie Mitglied der Rolle Benutzer für diese Ressource sind. So werden Ressourcen, auf die in der YAML-Datei verwiesen wird, wenn Sie eine Pipeline erstellen, automatisch autorisiert.
Wenn Sie Änderungen an der YAML-Datei vornehmen und Ressourcen hinzufügen, tritt beim Build ein Fehler auf, der dem folgenden Fehler ähnelt:
Could not find a <resource> with name <resource-name>. The <resource> does not exist or has not been authorized for use.
In diesem Fall wird eine Option zum Autorisieren der Ressourcen für den fehlerhaften Build angezeigt. Wenn Sie ein Mitglied der Rolle Benutzer für die Ressource sind, können Sie diese Option auswählen. Sobald die Ressourcen autorisiert sind, können Sie einen neuen Build starten.
Überprüfen Sie, ob die Agentpoolsicherheitsrollen für Ihr Projekt korrekt sind.
Festlegen von Genehmigungsüberprüfungen für Ressourcen
Sie können manuell steuern, wann eine Ressource mit Genehmigungsüberprüfungen und Vorlagen ausgeführt wird. Mit der erforderlichen Überprüfung zur Vorlagengenehmigung können Sie anfordern, dass jede Pipeline, die eine Ressource oder Umgebung verwendet, auch von einer bestimmten YAML-Vorlage ausgeht. Das Festlegen einer erforderlichen Vorlagengenehmigung erhöht die Sicherheit. Stellen Sie sicher, dass Ihre Ressource nur unter bestimmten Bedingungen mit einer Vorlage verwendet wird. Erfahren Sie mehr darüber, wie Sie die Pipelinesicherheit mit Vorlagen und Ressourcen verbessern.
Nachverfolgbarkeit
Wir bieten vollständige Nachverfolgbarkeit für jede Ressource, die auf Pipelineebene oder der Ebene des Bereitstellungsauftrags genutzt wird.
Nachverfolgbarkeit von Pipelines
Für jede Pipelineausführung zeigen wir die folgenden Informationen an.
Die Ressource, die die Pipeline ausgelöst hat, wenn sie durch eine Ressource ausgelöst wurde.
Version der Ressource und der verbrauchten Artefakte.
Den jeweiligen Ressourcen zugeordnete Commits.
Den jeweiligen Ressourcen zugeordnete Arbeitselemente.
Nachverfolgbarkeit von Umgebungen
Wenn eine Pipeline in einer Umgebung bereitgestellt wird, können Sie eine Liste der verbrauchten Ressourcen anzeigen. Die folgende Ansicht enthält die im Rahmen der Bereitstellungsaufträge und ihrer zugeordneten Commits und Arbeitselemente verbrauchten Ressourcen.
Anzeigen zugehöriger CD-Pipelineinformationen in CI-Pipelines
Um die End-to-End-Nachverfolgbarkeit zu ermöglichen, können Sie nachverfolgen, welche CD-Pipelines eine angegebene CI-Pipeline nutzen. Sie können die Liste der CD-YAML-Pipelineausführungen anzeigen, bei denen eine CI-Pipelineausführung über die pipeline
-Ressource genutzt wird. Wenn Ihre CI-Pipeline von anderen Pipelines genutzt wird, wird die Registerkarte „Zugeordnete Pipelines“ in der Ausführungsansicht angezeigt. Hier finden Sie alle Pipelineausführungen, die Ihre Pipeline und Artefakte nutzen.
Unterstützung und Nachverfolgbarkeit bei YAML-Ressourcentriggerproblemen
Es kann verwirrend sein, wenn Pipelinetrigger nicht ausgeführt werden können. Wir haben auf der Pipelinedefinitionsseite ein neues Element mit dem Namen Triggerprobleme hinzugefügt, unter dem Sie erfahren können, warum Trigger nicht ausgeführt werden. Öffnen Sie den Pipelineverlauf, um auf diese Seite zuzugreifen. Triggerprobleme ist nur für Nicht-Repositoryressourcen verfügbar.
Ressourcentrigger können aus folgenden Gründen nicht ausgeführt werden.
Wenn die Quelle der bereitgestellten Dienstverbindung ungültig ist oder der Trigger Syntaxfehler enthält, wird der Trigger nicht konfiguriert, was zu einem Fehler führt.
Wenn die Triggerbedingungen nicht erfüllt sind, wird der Trigger nicht ausgeführt. Es wird eine Warnung angezeigt, damit Sie verstehen können, warum die Bedingungen nicht erfüllt werden.
Nächste Schritte
Häufig gestellte Fragen
Warum sollte ich die resources
von Pipelines anstelle der download
-Tastenkombination verwenden?
Die Verwendung einer pipelines
-Ressource ist eine Möglichkeit, Artefakte aus einer CI-Pipeline zu nutzen und auch automatisierte Trigger zu konfigurieren. Eine Ressource bietet Ihnen vollständige Einblicke in den Prozess, indem die verbrauchte Version, Artefakte, Commits und Arbeitselemente angezeigt werden. Wenn Sie eine Pipelineressource definieren, werden die zugehörigen Artefakte automatisch in Bereitstellungsaufträgen heruntergeladen.
Sie können die Artefakte in Buildaufträgen herunterladen oder das Downloadverhalten in Bereitstellungsaufträgen mit download
außer Kraft setzen. Die Aufgabe download
verwendet intern die Aufgabe Pipelineartefakte herunterladen.
Warum sollte ich resources
anstelle der Aufgabe „Pipelineartefakte herunterladen“ verwenden?
Wenn Sie die Aufgabe Pipelineartefakte herunterladen direkt verwenden, entgehen Ihnen Nachverfolgbarkeit und Trigger. Manchmal ist es sinnvoll, die Aufgabe „Pipelineartefakte herunterladen“ direkt zu verwenden. Sie könnten z. B. eine Skriptaufgabe in einer anderen Vorlage gespeichert haben und die Skriptaufgabe erfordert das Herunterladen von Artefakten aus einem Build. Oder Sie wissen möglicherweise nicht, ob jemand, der eine Vorlage verwendet, eine Pipelineressource hinzufügen möchte. Um Abhängigkeiten zu vermeiden, können Sie die Aufgabe „Pipelineartefakte herunterladen“ verwenden, um alle Buildinformationen an eine Aufgabe zu übergeben.
Wie kann ich eine Pipelineausführung auslösen, wenn mein Docker Hub-Image aktualisiert wird?
Sie müssen eine klassische Releasepipeline einrichten, da der Containerressourcentrigger für Docker Hub für YAML-Pipelines nicht verfügbar ist.
Erstellen Sie eine neue Docker Hub-Dienstverbindung.
Erstellen Sie eine klassische Releasepipeline, und fügen Sie ein Docker Hub-Artefakt hinzu. Legen Sie Ihre Dienstverbindung fest. Wählen Sie den Namespace, das Repository, die Version und den Quellalias aus.
Wählen Sie den Trigger aus, und schalten Sie den Continuous Deployment-Trigger auf Aktivieren um. Sie erstellen jedes Mal eine Version, wenn ein Docker-Push für das ausgewählte Repository auftritt.
Erstellen Sie eine neue Phase und einen neuen Auftrag. Fügen Sie zwei Aufgaben hinzu – Docker-Anmeldung und Bash:
Die Docker-Aufgabe verfügt über die
login
-Aktion und meldet Sie bei Docker Hub an.Die Bash-Aufgabe führt
docker pull <hub-user>/<repo-name>[:<tag>]
aus. Ersetzen Siehub-user
,repo-name
undtag
durch Ihre eigenen Werte.
Wie kann ich Webhooks überprüfen und mögliche Probleme beheben?
Erstellen Sie eine Dienstverbindung.
Verweisen Sie im Abschnitt
webhooks
auf Ihre Dienstverbindung, und benennen Sie Ihren Webhook.resources: webhooks: - webhook: MyWebhookTriggerAlias connection: MyServiceConnection
Führen Sie Ihre Pipeline aus. Wenn Sie Ihre Pipeline ausführen, wird der Webhook in Azure als verteilte Aufgabe für Ihre Organisation erstellt.
Führen Sie einen
POST
-API-Aufruf mit gültigem JSON im Textkörper fürhttps://dev.azure.com/{organization}/_apis/public/distributedtask/webhooks/{webhook-name}?api-version={apiversion}
aus. Wenn Sie eine Antwort mit dem Statuscode 200 erhalten, ist Ihr Webhook bereit, von Ihrer Pipeline genutzt zu werden. Wenn Sie eine Antwort mit dem Statuscode 500 mit dem FehlerCannot find webhook for the given webHookId ...
erhalten, befindet sich Ihr Code möglicherweise in einem Branch, der nicht Ihr Standardbranch ist.- Öffnen Sie Ihre Pipeline.
- Wählen Sie Bearbeiten aus.
- Wählen Sie das Menü „Weitere Aktionen“
aus.
- Wählen Sie Trigger>YAML>Quellen abrufen aus.
- Wechseln Sie zu Standardbranch für manuelle und geplante Builds, um Ihren Featurebranch zu aktualisieren.
- Wählen Sie Speichern und in Warteschlange einreihen aus.
- Nachdem diese Pipeline erfolgreich ausgeführt wurde, führen Sie einen
POST
-API-Aufruf mit gültigem JSON im Textkörper fürhttps://dev.azure.com/{organization}/_apis/public/distributedtask/webhooks/{webhook-name}?api-version={apiversion}
aus. Sie sollten jetzt eine Antwort mit dem Statuscode 200 erhalten.