Veröffentlichen und Herunterladen von Pipeline-Artefakten
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öffentlichungspipeline-Artefakte 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 "Pipeline-Artefakte veröffentlichen".
Obwohl der Name des Artefaktes optional ist, empfiehlt es sich, einen Namen anzugeben, der den Inhalt Ihres Artefaktes genau widerspiegelt. Wenn Sie das Artefakte aus einem Auftrag nutzen möchten, der auf einem anderen Betriebssystem ausgeführt wird, müssen Sie sicherstellen, dass alle Dateipfade für die Zielumgebung gültig sind. Beispielsweise kann ein Dateiname, der das Zeichen \
enthält, nicht auf Windows heruntergeladen werden.*
Der Pfad der Datei/des Ordners, den Sie veröffentlichen möchten, ist erforderlich. Dies kann ein absoluter oder relativer Pfad zu $(System.DefaultWorkingDirectory)
sein.
Pakete in Azure-Artefakten sind unveränderlich. Sobald Sie ein Paket veröffentlichen, wird die Version dauerhaft reserviert. Fehler beim Erneuten Ausführen von Aufträgen tritt auf, wenn das Paket veröffentlicht wurde. Eine gute Möglichkeit, dies zu verfolgen, wenn Sie fehlgeschlagene Aufträge erneut ausführen können, ohne dass ein Fehlerpaket bereits vorhanden ist, ist es, 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 Pipeline-Artefakten berechnet. Die Pipelinespeicherung ist auch von der Speicherabrechnung ausgenommen. Siehe Welche Artefakte zu meinem gesamtrechnungsierten Speicher zählen.
Achtung
Das Löschen einer Pipelineausführung führt dazu, dass alle Artefakte gelöscht werden, die dieser Ausführung zugeordnet sind.
Verwenden von .artifactignore
.artifactignore
verwendet eine ähnliche Syntax ( .gitignore
mit wenigen Einschränkungen), um anzugeben, welche Dateien beim Veröffentlichen von Artefakten ignoriert werden sollen. Weitere Details finden Sie in der Datei ".artifactignore" .
Hinweis
Das Pluszeichen +
wird in URL-Pfaden und einige Builds-Metadaten für Pakettypen wie Maven nicht unterstützt.
Beispiel: Ignorieren aller Dateien mit Ausnahme von .exe Dateien:
**/*
!*.exe
Wichtig
Azure-Artefakte ignorieren automatisch den Ordnerpfad .git , wenn Sie keine .artefakteignore-Datei haben. Sie können dies umgehen, indem Sie eine leere Artefakteignore-Datei erstellen.
Herunterladen von Artefakten
Sie können Artefakte mithilfe von YAML, dem klassischen Editor oder der Azure CLI herunterladen.
steps:
- download: current
artifact: WebApp
- aktuell: Laden Sie Artefakte herunter, die von der aktuellen Pipeline ausgeführt werden. Optionen: aktuelle, spezifische.
Hinweis
Die Liste der veröffentlichten Artefakte ist nur in folgenden abhängigen Aufträgen verfügbar. Verwenden Sie current
daher nur die Option in separaten Aufträgen, die Abhängigkeit von Aufträgen mit veröffentlichen von Artefaktenaufgaben haben.
Tipp
Sie können Pipelineressourcen verwenden, um Ihre Quelle an einem Ort zu definieren und überall 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 in $(Pipeline.Workspace) heruntergeladen. Wenn kein Artefaktename 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 mindestens ein Artefakte herunterladen. Um mehrere Artefakte herunterzuladen, lassen Sie das Feld des Artefaktenamens leer und verwenden Sie Dateiabgleichsmuster, um zu beschränken, welche Dateien heruntergeladen werden. **
ist das Standarddateiabgleichsmuster (alle Dateien in allen Artefakten).
Einzelnes Artefakte
Wenn ein Artefaktename angegeben wird:
Nur Dateien für dieses bestimmte Artefakte werden heruntergeladen. Wenn das Artefakte nicht vorhanden ist, schlägt der Vorgang fehl.
Dateiabgleichsmuster werden relativ zum Stamm des Artefaktes ausgewertet. Das Muster
*.jar
entspricht beispielsweise allen Dateien mit einer.jar
Erweiterung im Stamm des Artefaktes.
Im folgenden Beispiel wird veranschaulicht, wie Alle *.js
aus einem Artefakte WebApp
heruntergeladen werden:
steps:
- download: current
artifact: WebApp
patterns: '**/*.js'
Mehrere Artefakte
Wenn kein Artefaktname angegeben wird:
Mehrere Artefakte können heruntergeladen werden, und die Aufgabe schlägt nicht fehl, wenn keine Dateien gefunden werden.
Für jedes Artefakt wird ein Unterverzeichnis erstellt.
Dateiabgleichsmuster sollten davon ausgehen, dass das erste Segment des Musters (oder Übereinstimmungen) ein Artefaktname ist. Entspricht beispielsweise
WebApp/**
allen Dateien aus demWebApp
Artefakt. Das Muster*/*.dll
entspricht allen Dateien mit einer.dll
Erweiterung am Stamm jedes Artefaktes.
Im folgenden Beispiel wird veranschaulicht, wie alle .zip
Dateien aus allen 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 heruntergeladen.System.ArtifactsDirectory
Die Downloadartefaktaufgabe wird nur automatisch eingefügt, wenn Sie den deploy
Lifecycle-Hook in Ihrer Bereitstellung verwenden. Um zu verhindern, dass Artefakte automatisch heruntergeladen werden, fügen Sie einen download
Schritt hinzu, und legen Sie den Wert auf keine fest.
In einem regulären Buildauftrag müssen Sie das download
Schrittschlüsselwort oder die Aufgabe "Pipelineartefakt herunterladen " explizit verwenden. Sehen Sie sich Lebenszyklus-Hooks an, um mehr über die anderen Arten von Hooks zu erfahren.
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 herunterladen, indem Sie Abhängigkeiten nutzen. Weitere Details finden Sie unter "Phase", um Abhängigkeiten zu stufen .
Beispiel
Im folgenden Beispiel kopieren und veröffentlichen wir einen Skriptordner aus unserem Repository in das $(Build.ArtifactStagingDirectory)
. In der zweiten Phase laden wir unser Skript herunter und führen es 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
Pipelineartefakte sind die nächste Generation von Buildartefakten und sind die empfohlene Möglichkeit, mit Artefakten zu arbeiten. Artefakte, die mithilfe der Aufgabe "Buildartefakte veröffentlichen" veröffentlicht wurden, können weiterhin mithilfe von Download-Buildartefakten heruntergeladen werden, wir empfehlen jedoch stattdessen die Verwendung der neuesten Downloadpipelineartefaktaufgabe .
Beim Migrieren von Buildartefakten zu Pipelineartefakten:
Standardmäßig lädt die Aufgabe "Pipelineartefakt herunterladen" Dateien auf
$(Pipeline.Workspace)
. Dies ist der Standard- und empfohlene Pfad für alle Arten von Artefakten.Dateiabgleichsmuster für die Aufgabe "Buildartefakte herunterladen " werden voraussichtlich mit dem Artefaktnamen (oder der Übereinstimmung) beginnen, unabhängig davon, ob ein bestimmtes Artefakte angegeben wurde oder nicht. In der Aufgabe "Downloadpipelineartefakt " sollten Muster nicht den Artefaktnamen enthalten, wenn bereits ein Artefaktname angegeben wurde. Weitere Informationen finden Sie in der Auswahl einzelner Artefakte.
Häufig gestellte Fragen
F: Was sind Buildartefakte?
A: Buildartefakte sind die Dateien, die von Ihrem Build generiert werden. Weitere Informationen zum Veröffentlichen und Nutzen Ihrer Buildartefakte finden Sie unter Buildartefakte .
F: Unterstützen Sie die Veröffentlichung von Artefakten in einem freigegebenen Ordner?
A: Derzeit nicht, aber dieses Feature ist geplant.
F: Kann ich Pipelineartefakte löschen, wenn fehlgeschlagene Aufträge erneut ausgeführt werden?
A: Pipelineartefakte sind nicht deletable oder überschreibbar. Wenn Sie Artefakte neu erstellen möchten, wenn Sie einen fehlgeschlagenen Auftrag erneut ausführen, können Sie die Auftrags-ID in den Artefaktnamen einschließen. $(system.JobId)
ist die entsprechende Variable für diesen Zweck. Weitere Informationen zu vordefinierten Variablen finden Sie unter Systemvariablen .