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:

  1. Nur Dateien für dieses bestimmte Artefakte werden heruntergeladen. Wenn das Artefakte nicht vorhanden ist, schlägt der Vorgang fehl.

  2. 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 WebAppheruntergeladen werden:

steps:
- download: current
  artifact: WebApp
  patterns: '**/*.js'

Mehrere Artefakte

Wenn kein Artefaktname angegeben wird:

  1. Mehrere Artefakte können heruntergeladen werden, und die Aufgabe schlägt nicht fehl, wenn keine Dateien gefunden werden.

  2. Für jedes Artefakt wird ein Unterverzeichnis erstellt.

  3. Dateiabgleichsmuster sollten davon ausgehen, dass das erste Segment des Musters (oder Übereinstimmungen) ein Artefaktname ist. Entspricht beispielsweise WebApp/** allen Dateien aus dem WebApp 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'

Screenshot showing the PowerShell task output

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:

  1. 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.

  2. 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 .