Veröffentlichen und Herunterladen von Pipelineartefakten
Azure DevOps Services
Mithilfe von Azure-Pipelines können Sie Artefakte aus früheren Phasen in Ihrer Pipeline oder aus einer anderen Pipeline herunterladen. Sie können Ihr Artefakte auch in einer Dateifreigabe veröffentlichen oder als Pipelineartefakt verfügbar machen.
Veröffentlichen von Artefakten
Sie können Ihre Artefakte mithilfe von YAML, dem klassischen Editor oder Azure CLI veröffentlichen:
Hinweis
Veröffentlichungspipelineartefakte werden in Releasepipelinen nicht unterstützt.
steps:
- publish: $(System.DefaultWorkingDirectory)/bin/WebApp
artifact: WebApp
Hinweis
Das publish
Schlüsselwort ist eine Verknüpfung für die Aufgabe "Pipelineartefakt veröffentlichen ".
Obwohl der Name des Artefaktes optional ist, empfiehlt es sich, einen Namen anzugeben, der den Inhalt Ihres Artefaktes genau widerspiegelt. Wenn Sie beabsichtigen, das Artefakte aus einem Auftrag zu nutzen, der auf einem anderen Betriebssystem ausgeführt wird, müssen Sie sicherstellen, dass alle Dateipfade für die Zielumgebung gültig sind. Ein Dateiname, der das Zeichen \
enthält, kann *
beispielsweise nicht unter Windows heruntergeladen werden.
Der Pfad der Datei/des Ordners, den Sie veröffentlichen möchten, ist erforderlich. Dies kann ein absoluter oder ein relativer Pfad zu $(System.DefaultWorkingDirectory)
.
Pakete in Azure-Artefakten sind unveränderlich. Sobald Sie ein Paket veröffentlichen, wird seine Version dauerhaft reserviert. Fehler beim erneuten Ausführen von Aufträgen, wenn das Paket veröffentlicht wurde. Eine gute Möglichkeit zur Vorgehensweise, wenn Sie fehlgeschlagene Aufträge erneut ausführen möchten, ohne dass ein Fehlerpaket bereits vorhanden ist, besteht darin, bedingungen nur auszuführen, wenn der vorherige Auftrag erfolgreich war.
jobs:
- job: Job1
steps:
- script: echo Hello Job1!
- job: Job2
steps:
- script: echo Hello Job2!
dependsOn: Job1
Hinweis
Sie werden nicht für das Speichern von Pipelineartefakten in Rechnung gestellt. Das Zwischenspeichern von Pipelines ist auch von der Speicherabrechnung ausgenommen. Sehen Sie , welche Artefakte zu meinem gesamten berechneten Speicher zählen.
Achtung
Das Löschen einer Pipelineausführung führt zum Löschen aller Artefakte, die dieser Ausführung zugeordnet sind.
Verwenden von .artifactignore
.artifactignore
verwendet eine ähnliche Syntax wie .gitignore
(mit wenigen Einschränkungen), um anzugeben, welche Dateien beim Veröffentlichen von Artefakten ignoriert werden sollen. Weitere Details finden Sie in der Datei "Artefakteignore" .
Hinweis
Das Pluszeichenzeichen +
wird in URL-Pfaden und einigen Builds-Metadaten für Pakettypen wie Maven nicht unterstützt.
Beispiel: Ignorieren aller Dateien außer .exe Dateien:
**/*
!*.exe
Wichtig
Azure-Artefakte ignorieren automatisch den Git-Ordnerpfad, wenn Sie keine ARTEFAKTE-Datei haben. Sie können dies umgehen, indem Sie eine leere Artefaktignore-Datei erstellen.
Herunterladen von Artefakten
Sie können Artefakte mithilfe von YAML, dem klassischen Editor oder azure CLI herunterladen.
steps:
- download: current
artifact: WebApp
- aktuell: Laden Sie Artefakte herunter, die von der aktuellen Pipeline ausgeführt werden. Optionen: aktuell, spezifisch.
Hinweis
Die Liste der veröffentlichten Artefakte ist nur in folgenden abhängigen Aufträgen verfügbar. Verwenden Sie current
daher option nur in separaten Aufträgen, die abhängigkeit von Aufträgen mit Veröffentlichungsartefaktaufgaben haben.
Tipp
Sie können Pipelineressourcen verwenden, um Ihre Quelle an einer zentralen Stelle zu definieren und sie an einer beliebigen Stelle in Ihrer Pipeline zu verwenden.
Hinweis
Das download
Schlüsselwort ist eine Verknüpfung für die Aufgabe "Pipeline-Artefakte herunterladen" .
Standardmäßig werden Dateien auf $(Pipeline.Workspace) heruntergeladen. Wenn kein Artefaktname angegeben wurde, wird für jedes heruntergeladene Artefakte ein Unterverzeichnis erstellt. Sie können übereinstimmende Muster verwenden, um zu beschränken, welche Dateien heruntergeladen werden. Weitere Details finden Sie unter Dateiabgleichsmuster .
steps:
- download: current
artifact: WebApp
patterns: |
**/*.js
**/*.zip
Auswahl von Artefakten
Ein einzelner Downloadschritt kann ein oder mehrere Artefakte herunterladen. Um mehrere Artefakte herunterzuladen, lassen Sie das Artefaktnamenfeld leer, und verwenden Sie Dateiabgleichsmuster, um zu begrenzen, welche Dateien heruntergeladen werden. **
ist das Standarddateiabgleichsmuster (alle Dateien in allen Artefakten).
Einzelnes Artefakt
Wenn ein Artefaktname angegeben wird:
Nur Dateien für dieses bestimmte Artefakt werden heruntergeladen. Wenn das Artefakte nicht vorhanden ist, schlägt die Aufgabe fehl.
Dateiabgleichsmuster werden relativ zum Stamm des Artefaktes ausgewertet. Das Muster
*.jar
entspricht beispielsweise allen Dateien mit einer.jar
Erweiterung am Stamm des Artefaktes.
Im folgenden Beispiel wird veranschaulicht, wie Sie alle *.js
aus einem Artefakte WebApp
herunterladen:
steps:
- download: current
artifact: WebApp
patterns: '**/*.js'
Mehrere Artefakte
Wenn kein Artefaktename angegeben wird:
Mehrere Artefakte können heruntergeladen werden, und die Aufgabe schlägt nicht fehl, wenn keine Dateien gefunden werden.
Ein Unterverzeichnis wird für jedes Artefakte erstellt.
Dateiabgleichsmuster sollten davon ausgehen, dass das erste Segment des Musters (oder übereinstimmungen) ein Artefaktename ist. Entspricht beispielsweise
WebApp/**
allen Dateien aus demWebApp
Artefakte. Das Muster*/*.dll
entspricht allen Dateien mit einer.dll
Erweiterung im Stamm jedes Artefaktes.
Im folgenden Beispiel wird veranschaulicht, wie alle Dateien aus allen .zip
Artefakten heruntergeladen werden:
steps:
- download: current
patterns: '**/*.zip'
Artefakte in Release- und Bereitstellungsaufträgen
Artefakte werden nur automatisch in Bereitstellungsaufträgen heruntergeladen. Standardmäßig werden Artefakte in System.ArtifactsDirectory
. Die Downloadartefaktaufgabe wird nur dann automatisch eingefügt, wenn Sie den deploy
Lebenszyklus-Hook in Ihrer Bereitstellung verwenden. Um Artefakte automatisch herunterzuladen, fügen Sie einen download
Schritt hinzu, und legen Sie den Wert auf keine fest.
In einem regulären Buildauftrag müssen Sie das Schrittschlüsselwort oder die Aufgabe "download
Pipeline-Artefakte herunterladen" explizit verwenden. Weitere Informationen zu den anderen Arten von Hooks finden Sie unter Lebenszyklus-Hooks .
steps:
- download: none
Verwenden von Artefakten in Phasen
Wenn Sie in der Lage sein möchten, auf Ihr Artefakte in verschiedenen Phasen in Ihrer Pipeline zuzugreifen, können Sie ihr Artefakte jetzt in einer Phase veröffentlichen und dann in der nächsten Phase mithilfe von Abhängigkeiten herunterladen. Weitere Details finden Sie unter "Phase" zu Phasenabhängigkeiten .
Beispiel
Im folgenden Beispiel werden wir einen Skriptordner aus unserem Repo in das $(Build.ArtifactStagingDirectory)
Dokument kopieren und veröffentlichen. In der zweiten Phase laden wir unser Skript herunter und führen das Skript aus.
trigger:
- main
stages:
- stage: build
jobs:
- job: run_build
pool:
vmImage: 'windows-latest'
steps:
- task: VSBuild@1
inputs:
solution: '**/*.sln'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
platform: 'Any CPU'
configuration: 'Release'
- task: CopyFiles@2
displayName: 'Copy scripts'
inputs:
contents: 'scripts/**'
targetFolder: '$(Build.ArtifactStagingDirectory)'
- publish: '$(Build.ArtifactStagingDirectory)/scripts'
displayName: 'Publish script'
artifact: drop
- stage: test
dependsOn: build
jobs:
- job: run_test
pool:
vmImage: 'windows-latest'
steps:
- download: current
artifact: drop
- task: PowerShell@2
inputs:
filePath: '$(Pipeline.Workspace)\drop\test.ps1'
Migrieren von Buildartefakten
Pipeline-Artefakte sind die nächste Generation von Buildartefakten und sind die empfohlene Möglichkeit, mit Artefakten zu arbeiten. Artefakte, die mithilfe der Aufgabe "Veröffentlichen von Buildartefakten veröffentlichen" veröffentlicht wurden, können weiterhin mithilfe von Download-Build-Artefakten heruntergeladen werden, es wird jedoch empfohlen, stattdessen die neueste Download-Pipeline-Artefakteaufgabe zu verwenden.
Beim Migrieren von Buildartefakten zu Pipelineartefakten:
Standardmäßig lädt die Aufgabe "Pipeline-Artefakte herunterladen " Dateien auf
$(Pipeline.Workspace)
. Dies ist der Standard- und empfohlene Pfad für alle Arten von Artefakten.Dateiabgleichsmuster für die Aufgabe "Build-Artefakte herunterladen " werden erwartet, dass der Artefaktname (oder die Übereinstimmung) des Artefaktes beginnt, unabhängig davon, ob ein bestimmtes Artefakte angegeben wurde oder nicht. In der Aufgabe "Pipeline-Artefakte herunterladen " sollten Muster den Artefaktnamen nicht einschließen, wenn bereits ein Artefaktename angegeben wurde. Weitere Informationen finden Sie unter einzelner Artefakteauswahl.
Beispiel
- task: PublishPipelineArtifact@1
displayName: 'Publish'
inputs:
targetPath: $(Build.ArtifactStagingDirectory)/**
${{ if eq(variables['Build.SourceBranchName'], 'main') }}:
artifactName: 'prod'
${{ else }}:
artifactName: 'dev'
artifactType: 'pipeline'
Häufig gestellte Fragen
F: Was sind Buildartefakte?
A: Build-Artefakte sind die Dateien, die von Ihrem Build generiert werden. Weitere Informationen zum Veröffentlichen und Nutzen Ihrer Buildartefakte finden Sie unter "Build-Artefakte ".
F: Unterstützen Sie die Veröffentlichung von Artefakten in einem freigegebenen Ordner?
A: Derzeit nicht, aber dieses Feature ist geplant.
F: Kann ich Pipeline-Artefakte löschen, wenn Fehleraufträge erneut ausgeführt werden?
A: Pipeline-Artefakte sind nicht deletable oder überschreibbar. Wenn Sie Artefakte neu generieren möchten, wenn Sie einen fehlgeschlagenen Auftrag erneut ausführen, können Sie die Auftrags-ID im Artefaktnamen einschließen. $(system.JobId)
ist die entsprechende Variable für diesen Zweck. Weitere Informationen zu vordefinierten Variablen finden Sie unter Systemvariablen .