Definieren von Ressourcen in YAML
Azure DevOps Services
Ressourcen in YAML stellen Quellen von Pipelines, Builds, Repositorys, Containern, Paketen und Webhooks dar. Ressourcen bieten Ihnen auch die vollständige Rückverfolgbarkeit der Dienste, die in Ihrer Pipeline verwendet werden, einschließlich der Version, Artefakte, zugeordneten Commits und Arbeitsaufgaben. Wenn Sie eine Ressource definieren, kann sie an einer beliebigen Stelle in Ihrer Pipeline genutzt werden. Außerdem können Sie Ihren DevOps Workflow vollständig automatisieren, indem Sie Ereignisse auf Ihren Ressourcen auslösen.
Weitere Informationen finden Sie unter "Informationen zu Ressourcen"
Schema
resources:
pipelines: [ pipeline ]
builds: [ build ]
repositories: [ repository ]
containers: [ container ]
packages: [ package ]
webhooks: [ webhook ]
Variablen
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 für diese Werte gelten, um festgelegt zu werden ResourceTrigger
.
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 ein eindeutiger Wert, pipeline
mit dem Sie später auf die Pipelineressource verweisen können. source
ist der Name der Pipeline, die ein Artefakte erzeugt. Verwenden Sie die Bezeichnung, die durch pipeline
den Verweis auf die Pipelineressource aus anderen Teilen der Pipeline definiert wird, z. B. beim Verwenden von Pipelineressourcenvariablen oder herunterladen von Artefakten.
Eine alternative Möglichkeit zum Herunterladen von Pipelines finden Sie in den Vorgängen in Pipeline Artifacts.
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 Ressourcenauslöser definieren, wenn seine Pipelineressource aus demselben Repository stammt (z. B. selbst) wie die aktuelle Pipeline, löst das Auslösen der gleichen Verzweigung und des Commits aus, auf dem das Ereignis ausgelöst wird. Wenn die Pipelineressource jedoch aus einem anderen Repository stammt, löst die aktuelle Pipeline in der Standardverzweigung des Self-Repositorys aus.
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, weil Sie sie manuell ausgelöst oder aufgrund einer geplanten Ausführung ausgelöst haben, wird die Version der Artefakte durch die Werte der Werte der version
, branch
und tags
Eigenschaften definiert.
Angegebene Eigenschaften | Artefaktversion |
---|---|
version |
Die Artefakte aus dem Build mit der angegebenen Ausführungsnummer |
branch |
Die Artefakte aus dem neuesten Build, der auf der angegebenen Verzweigung ausgeführt wurde |
tags Liste |
Die Artefakte aus dem neuesten Build mit allen angegebenen Tags |
branch und tags Liste |
Die Artefakte aus dem neuesten Build, der auf der angegebenen Verzweigung ausgeführt wurde und über alle angegebenen Tags verfügt |
Keiner | Die Artefakte aus dem neuesten Build in allen Zweigen |
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 Ihre Pipeline manuell auslösen, ist die Version der Artefakte der MyCIAlias
Pipeline der neueste Build, der auf der main
Verzweigung ausgeführt wurde und die die Production
Und-Tags PrepProduction
enthält.
Wenn Ihre Pipeline ausgelöst wird, da eine ihrer Ressourcenpipelinen abgeschlossen ist, ist die Version der Artefakte eine der auslösenden Pipelines. Die Werte der version
, branch
und tags
Eigenschaften 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 Verzweigungen abgeschlossen hat. |
tags |
Eine neue Ausführung der aktuellen Pipeline wird ausgelöst, wenn die Ressourcenpipeline erfolgreich eine Ausführung abgeschlossen hat, die mit allen angegebenen Tags markiert ist. |
stages |
Eine neue Ausführung der aktuellen Pipeline wird ausgelöst, wenn die Ressourcenpipeline erfolgreich die angegebene Ausführung ausgeführt hat. stages |
branches , tags und stages |
Eine neue Ausführung der aktuellen Pipeline wird ausgelöst, wenn die Ressourcenpipeline alle Verzweigungen, Tags und Stufen 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 ausgeführt, wenn die SmartHotel
Pipelines auf einer der releases
Verzweigungen oder auf der main
Verzweigung ausgeführt werden, mit beiden Verified
und , und Signed
sie wird sowohl mit als auch mit den Production
PreProduction
Phasen markiert.
download
für Pipelines
Alle Artefakte aus der aktuellen Pipeline und aus allen pipeline
Ressourcen werden automatisch heruntergeladen und am Anfang jedes deployment
Auftrags zur Verfügung gestellt. Sie können dieses Verhalten außer Kraft setzen. Weitere Informationen finden Sie unter Pipeline Artifacts. Reguläre "Job"-Artefakte werden nicht automatisch heruntergeladen. Verwenden Sie download
bei Bedarf explizit.
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
Artifacts aus der pipeline
Ressource wird in $(PIPELINE.WORKSPACE)/<pipeline-identifier>/<artifact-identifier>
den Ordner heruntergeladen.
Pipelineressourcenvariablen
In jeder Ausführung sind die Metadaten für eine Pipelineressource für alle Aufträge in Form vordefinierter Variablen verfügbar. Dies <Alias>
ist der Bezeichner, den Sie für Ihre Pipelineressource angegeben haben. Pipelineressourcenvariablen sind zur Laufzeit nur 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
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 beliebige externe CI-Systeme 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 aus Ihrem Builds-Dienst zu nutzen und einen neuen Diensttyp als Teil von builds
. Jenkins ist eine Art von Ressource in builds
.
Wichtig
Trigger werden nur für gehostete Jenkins unterstützt, bei denen Azure DevOps eine Anzeigelinie mit Jenkins-Server aufweist.
downloadBuild
Aufgabe für Builds
Sie können Artefakte aus der Ressource als Teil Ihrer Aufträge mithilfe der build
downloadBuild
Aufgabe nutzen. Basierend auf dem typ der build
definierten Ressource wird dieser Vorgang automatisch in den entsprechenden Downloadvorgang für den Dienst während der Laufzeit aufgelöst.
Artifacts aus der build
Ressource wird in $(PIPELINE.WORKSPACE)/<build-identifier>/
den Ordner heruntergeladen.
Wichtig
build
Ressourcenartefakte werden in Ihren Aufträgen/Bereitstellungsaufträgen nicht automatisch heruntergeladen. Sie müssen die downloadBuild
Aufgabe explizit hinzufügen, um die Artefakte zu verwenden.
- 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 Vorlagen in einem anderen Repository enthält oder wenn Sie die Multi-Repo-Auscheckung 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 # identifier (A-Z, a-z, 0-9, and underscore)
type: enum # see the following "Type" topic
name: string # repository name (format depends on `type`)
ref: string # ref name to use; defaults to 'refs/heads/main'
endpoint: string # name of the service connection to use (for types that aren't Azure Repos)
trigger: # CI trigger for this repository, no CI trigger if skipped (only works for Azure Repos)
branches:
include: [ string ] # branch names which trigger a build
exclude: [ string ] # branch names which won't
tags:
include: [ string ] # tag names which trigger a build
exclude: [ string ] # tag names which won't
paths:
include: [ string ] # file paths which must match to trigger a build
exclude: [ string ] # file paths which won't trigger a build
type
Pipelines unterstützen die folgenden Werte für den Repositorytyp: git
, github
, , githubenterprise
und bitbucket
.
Der git
Typ bezieht sich auf Azure Repos Git-Repos.
Angegebener Typ | Ergebnis | Beispiel |
---|---|---|
type: git |
Der name Wert bezieht sich auf ein anderes Repository im selben Projekt. |
name: otherRepo Um auf ein Repository in einem anderen Projekt innerhalb derselben Organisation zu verweisen, präfixieren Sie den Namen mit dem Namen dieses Projekts. z. B. name: OtherProject/otherRepo . |
type: github |
Der name Wert ist der vollständige Name des GitHub-Repositorys und umfasst den Benutzer oder die Organisation. |
name: Microsoft/vscode |
type: githubenterprise |
der name Wert ist der vollständige Name des GitHub Enterprise-Repositorys und umfasst den Benutzer oder die Organisation. |
name: Microsoft/vscode |
type: bitbucket |
Der name Wert ist der vollständige Name des Bitbucket Cloud-Repositorys und umfasst den Benutzer oder die Organisation. |
name: MyBitbucket/vscode |
GitHub Enterprise Repos erfordert eine GitHub Enterprise Dienstverbindung für die Autorisierung.
Bitbucket Cloud repos erfordert eine Bitbucket Cloud Service-Verbindung für die Autorisierung.
Verwenden checkout
des Repositorys
Verwenden Sie checkout
das Schlüsselwort, um Ihre Als Teil der repository
Ressource definierten Repos zu nutzen.
Schema
steps:
- checkout: string # identifier for your repository resource
clean: boolean # if true, execute `execute git clean -ffdx && git reset --hard HEAD` before fetching
fetchDepth: number # the depth of commits to ask Git to fetch; defaults to no limit
lfs: boolean # whether to download Git-LFS files; defaults to false
submodules: true | recursive # set to 'true' for a single level of submodules or 'recursive' to get submodules of submodules; defaults to not checking out submodules
path: string # path to check out source code, relative to the agent's build directory (e.g. \_work\1); defaults to a directory called `s`
persistCredentials: boolean # if 'true', leave the OAuth token in the Git config after the initial fetch; defaults to false
Repos aus der repository
Ressource werden nicht automatisch in Ihren Aufträgen synchronisiert. Verwenden Sie die Verwendung checkout
, um Ihre Repos als Teil Ihrer Aufträge abzurufen.
Weitere Informationen finden Sie unter "Auschecken mehrerer Repositorys in Ihrer Pipeline".
Definieren einer containers
Ressource
Wenn Sie ein Containerimage als Teil Ihrer kontinuierlichen Integrations-/Kontinuierlichen Übermittlungspipeline (CI/CD) nutzen müssen, können Sie es mithilfe containers
von . Eine Containerressource kann eine öffentliche oder private Docker-Registrierung oder Azure Container Registry sein.
Wenn Sie Bilder aus der Docker-Registrierung als Teil Ihrer Pipeline verwenden müssen, können Sie eine generische Containerressource (nicht type
schlüsselwort erforderlich) definieren.
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 verwendet wird, oder sie kann auch für Containeraufträge verwendet werden. Wenn Ihre Pipeline die Unterstützung eines oder mehrerer Dienste erfordert, möchten Sie Servicecontainer erstellen und verbinden. Sie können Volumes verwenden, um Daten zwischen Diensten zu teilen.
Sie können einen erstklassigen Containerressourcentyp für Azure Container Registry (ACR) verwenden, um Ihre ACR-Bilder zu nutzen. Dieser Ressourcentyp kann als Teil Ihrer Aufträge und auch zum Aktivieren von automatischen Pipelinetriggern verwendet werden.
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 Bildtags (enabled: 'true'
) verwendet wird, unterscheidet sich von der Syntax, die für andere Ressourcentrigger verwendet wird. Achten Sie darauf, die richtige Syntax für eine bestimmte Ressource zu verwenden.
Containerressourcenvariablen
Sobald Sie einen Container als Ressource definieren, werden Containerimagemetadaten in Form von Variablen an die Pipeline übergeben. Informationen wie Image, Registrierung und Verbindungsdetails sind für alle Aufträge zugänglich, die in Ihrem Container bereitgestellt werden sollen.
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 ACR
den Typ der Containerressourcen.
Definieren einer packages
Ressource
Sie können NuGet und npm GitHub Pakete als Ressource in YAML-Pipelines nutzen.
Wenn Sie Ressourcen angebenpackage
, legen Sie das Paket als NuGet oder npm fest. Sie können auch automatisierte Pipelinetrigger aktivieren, wenn eine neue Paketversion veröffentlicht wird.
Um GitHub Pakete zu verwenden, verwenden Sie die pat-basierte Authentifizierung (Personal Access Token), und erstellen Sie eine GitHub Dienstverbindung, die PATs verwendet.
Standardmäßig werden Pakete nicht automatisch in Aufträge heruntergeladen. Verwenden Sie getPackage
zum Herunterladen .
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
Mit anderen Ressourcen (z. B. Pipelines, Container, Build und Pakete) können Sie Artefakte nutzen und automatisierte Trigger aktivieren. Sie können Ihren Bereitstellungsprozess jedoch nicht basierend auf anderen externen Ereignissen oder Diensten automatisieren. Mit der webhooks
Ressource können Sie Ihre Pipeline mit jedem externen Dienst integrieren und den Workflow automatisieren. Sie können alle externen Ereignisse über ihre Webhooks (GitHub, GitHub Enterprise, Nexus, Artefakte usw.) abonnieren und Ihre Pipelines auslösen.
Führen Sie die folgenden Schritte aus, um die Webhook-Trigger 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
- Geheimer Schlüssel – Optional. Wenn Sie Ihre JSON-Nutzlast sichern müssen, geben Sie den Geheimen Wert an.
- Anforderungs-URL –
Erstellen Sie eine neue "Eingehende Webhook"-Dienstverbindung. Diese Verbindung ist ein neu eingeführter Dienstverbindungstyp, mit dem Sie die folgenden wichtigen Informationen definieren können:
- Webhook-Name: Der Name des Webhooks sollte mit dem Webhook übereinstimmen, der in Ihrem externen Dienst erstellt wurde.
- HTTP-Header – Der Name des HTTP-Headers in der Anforderung, die den HMAC-SHA1-Hashwert der Nutzlast für die Anforderungsüberprüfung enthält. Beispielsweise lautet der Anforderungsheader für GitHub "X-Hub-Signature".
- Geheimer Schlüssel – Der geheime Schlüssel wird verwendet, um den HMAC-SHA1-Hash der Nutzlast zu überprüfen, der zur Überprüfung der eingehenden Anforderung (optional) verwendet wird. Wenn Sie beim Erstellen Ihres Webhooks einen Geheimschlüssel verwendet haben, müssen Sie denselben geheimen Schlüssel angeben.
Ein neuer Ressourcentyp, der in YAML-Pipelines aufgerufen
webhooks
wird, wird eingeführt. Wenn Sie ein Webhook-Ereignis abonnieren möchten, definieren Sie eine Webhook-Ressource in Ihrer Pipeline, und zeigen Sie sie auf die Verbindung des eingehenden Webhook-Diensts. Sie können auch weitere Filter für die Webhook-Ressource definieren, basierend auf den JSON-Nutzlastdaten, um die Trigger für jede Pipeline anzupassen. Nutzen Sie die Nutzlastdaten in Form von Variablen in Ihren Aufträgen.Wenn die Eingehende Webhook-Dienstverbindung ein Webhook-Ereignis empfängt, wird eine neue Ausführung für alle Pipelines ausgelöst, die das Webhook-Ereignis abonniert haben. Sie können die JSON-Nutzlastdaten in Ihren Aufträgen mithilfe des Formats nutzen.
${{ 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
Webhooks automatisieren Ihren Workflow basierend auf einem externen Webhook-Ereignis, das nicht von Ressourcen der ersten Klasse unterstützt wird. Ressourcen wie Pipelines, Builds, Container und Pakete. Außerdem können Sie für lokale Dienste, bei denen Azure DevOps keinen Einblick in den Prozess hat, Webhooks für den Dienst konfigurieren und Ihre Pipelines automatisch auslösen.
Manuelle Versionsauswahl für Ressourcen im Dialog "Ausführen erstellen"
Wenn Sie eine CD-YAML-Pipeline manuell auslösen, bewerten wir automatisch die Standardversion für die ressourcen, die in der Pipeline definiert sind, basierend auf den bereitgestellten Eingaben. Sie können jedoch beim Erstellen einer Ausführung eine andere Version aus der Ressourcenversionsauswahl auswählen.
Wählen Sie im Bereich "Ausführen erstellen"die Option "Ressourcen" aus. In dieser Pipeline wird eine Liste der in dieser Pipeline verbrauchten Ressourcen angezeigt.
Wählen Sie eine Ressource aus, und wählen Sie 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 können Sie alle verfügbaren Ausführungen in allen Verzweigungen anzeigen. Suchen Sie sie basierend auf der Pipelinenummer oder Verzweigung. Wählen Sie eine Ausführung aus, die erfolgreich, fehlgeschlagen oder in der Bearbeitung ist. Diese Flexibilität stellt sicher, dass Sie Ihre CD-Pipeline ausführen können, wenn Sie sicher sind, dass alle Artefakte erstellt wurden, die Sie benötigen. Sie müssen nicht warten, bis die CI-Ausführung abgeschlossen oder erneut ausgeführt werden kann, da es sich um einen nicht verbundenen Phasenfehler in der CI-Ausführung handelt. Wir berücksichtigen jedoch nur die erfolgreich abgeschlossene CI-Ausführung, wenn wir die Standardversion für geplante Trigger auswerten oder wenn Sie die manuelle Versionsauswahl nicht verwenden.
Für Ressourcen, in denen Sie keine verfügbaren Versionen abrufen können, wie GitHub Pakete, werden ein Textfeld als Teil der Versionsauswahl angezeigt, damit Sie die Version für die Auswahl bereitstellen können.
Autorisieren einer YAML-Pipeline
Ressourcen müssen autorisiert werden, bevor sie verwendet werden können. Ein Ressourcenbesitzer steuert die Benutzer und Pipelines, die auf diese Ressource zugreifen können. Die Pipeline muss berechtigt sein, die Ressource zu verwenden. Sehen Sie sich die folgenden Möglichkeiten an, wie Sie eine YAML-Pipeline autorisieren können.
Wechseln Sie zur Verwaltungsumgebung der Ressource. Beispielsweise werden variable Gruppen und sichere Dateien auf der Bibliotheksseite unter Pipelines verwaltet. Agentpools und Dienstverbindungen werden in Project Einstellungen verwaltet. Hier können Sie alle Pipelines autorisieren, auf diese Ressource zuzugreifen. Diese Autorisierung ist praktisch, wenn Sie keinen Zugriff auf eine Ressource einschränken müssen , z. B. Testressourcen.
Wenn Sie eine Pipeline zum ersten Mal erstellen, erhalten 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, schlägt der Build mit einem Fehler wie dem folgenden Fehler fehl:
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 fehlgeschlagenen Build angezeigt. Wenn Sie 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.
Stellen Sie sicher, dass die Sicherheitsrollen des Agentpools für Ihr Projekt korrekt sind.
Festlegen von Genehmigungsprüfungen für Ressourcen
Sie können manuell steuern, wann eine Ressource mit Genehmigungsprüfungen und Vorlagen ausgeführt wird. Mit der erforderlichen Genehmigungsprüfung der Vorlage können Sie eine beliebige Pipeline mithilfe einer Ressource oder Umgebung auch aus einer bestimmten YAML-Vorlage benötigen. Durch Festlegen einer erforderlichen Vorlagengenehmigung wird die Sicherheit verbessert. 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 können.
Nachverfolgbarkeit
Wir bieten vollständige Ablaufverfolgung für alle Ressourcen, die auf Pipeline- oder Bereitstellungsauftragsebene verbraucht werden.
Ablaufverfolgung der Pipeline
Für jede Pipelineausführung zeigen wir die folgenden Informationen an.
Die Ressource, die die Pipeline ausgelöst hat, wenn sie von einer Ressource ausgelöst wird.
Version der Ressource und der Artefakte, die verbraucht werden.
Commits, die jeder Ressource zugeordnet sind.
Arbeitselemente, die jeder Ressource zugeordnet sind.
Nachverfolgbarkeit von Umgebungen
Wenn eine Pipeline in einer Umgebung bereitgestellt wird, können Sie eine Liste der Ressourcen anzeigen, die verbraucht werden. Die folgende Ansicht enthält Ressourcen, die als Teil der Bereitstellungsaufträge und deren zugeordneten Commits und Arbeitselemente verwendet werden.
Anzeigen zugeordneter CD-Pipelines in CI-Pipelines
Um die End-to-End-Ablaufverfolgung bereitzustellen, können Sie nachverfolgen, welche CD-Pipelines eine ci-Pipeline verwenden. Sie können die Liste der CD YAML-Pipelines sehen, in denen eine CI-Pipeline über die pipeline
Ressource verbraucht wird. Wenn andere Pipelines Ihre CI-Pipeline nutzen, wird in der Ausführungsansicht eine Registerkarte "Zugeordnete Pipelines" angezeigt. Hier finden Sie alle Pipelineläufe, die Ihre Pipeline und Artefakte davon nutzen.
YAML-Ressourcenauslöserprobleme unterstützung und Ablaufverfolgung
Es kann verwirrend sein, wenn Pipelineauslöser nicht ausgeführt werden können. Wir haben ein neues Menüelement auf der Pipelinedefinitionsseite namens Triggerprobleme hinzugefügt, wo Sie erfahren können, warum Trigger nicht ausgeführt werden. Um auf diese Seite zuzugreifen, öffnen Sie den Pipelineverlauf. Triggerprobleme sind nur für Nicht-Repository-Ressourcen verfügbar.
Ressourcenauslöser können aus folgenden Gründen nicht ausgeführt werden.
Wenn die Quelle der bereitgestellten Dienstverbindung ungültig ist oder syntaxfehler im Trigger vorhanden sind, ist der Trigger nicht konfiguriert, was zu einem Fehler führt.
Wenn die Triggerbedingungen nicht übereinstimmen, wird der Trigger nicht ausgeführt. Eine Warnung wird angezeigt, damit Sie verstehen können, warum die Bedingungen nicht übereinstimmen.
Nächste Schritte
Häufig gestellte Fragen
Warum sollte ich Pipelines resources
anstelle der download
Verknüpfung 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 Sichtbarkeit im Prozess, indem Sie die verbrauchte Version, Artefakte, Commits und Arbeitselemente anzeigen. Wenn Sie eine Pipelineressource definieren, werden die zugeordneten Artefakte automatisch in Bereitstellungsaufträgen heruntergeladen.
Sie können die Artefakte in Buildaufträgen herunterladen oder das Downloadverhalten in Bereitstellungsaufträgen download
außer Kraft setzen. Die download
Aufgabe verwendet intern die Downloadpipeline Artifacts Aufgabe.
Warum sollte ich anstelle der Downloadpipeline Artifacts Aufgabe verwendenresources
?
Wenn Sie die Downloadpipeline Artifacts Aufgabe direkt verwenden, verpassen Sie die Ablaufverfolgung und Trigger. Manchmal ist es sinnvoll, die Downloadpipeline Artifacts Aufgabe direkt zu verwenden. Beispielsweise haben Sie möglicherweise eine Skriptaufgabe, die in einer anderen Vorlage gespeichert ist, und die Skriptaufgabe erfordert Artefakte aus einem Build, das heruntergeladen werden soll. 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 Downloadpipeline Artifacts Aufgabe verwenden, um alle Buildinformationen an einen Vorgang zu übergeben.
Wie kann ich eine Pipeline ausführen, wenn mein Docker Hub Image aktualisiert wird?
Sie müssen eine klassische Releasepipeline einrichten, da der Containerressourcenauslöser 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 Artefakte 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 fortlaufenden Bereitstellungsauslöser auf "Aktivieren" aus. Sie erstellen jedes Mal eine Version, wenn ein Docker-Push im ausgewählten 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 protokolliert Sie in Docker Hub.Die Bash-Aufgabe wird ausgeführt
docker pull <hub-user>/<repo-name>[:<tag>]
. Ersetzenhub-user
Sie , ,repo-name
undtag
mit Ihren Werten.