Artefakte in Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019 | TFS 2018

Hinweis

Wir empfehlen die Verwendung von Download-Pipeline-Artefakten und Veröffentlichen von Pipelineartefakten für eine schnellere Leistung.

Azure-Artefakte ermöglichen Es Teams, Feeds und Upstreamquellen zu verwenden, um ihre Abhängigkeiten zu verwalten. Sie können Azure-Pipelines verwenden, um verschiedene Arten von Artefakten als Teil Ihres CI/CD-Workflows zu veröffentlichen und herunterzuladen.

Veröffentlichen von Artefakten

Artefakte können in jeder Phase Ihrer Pipeline veröffentlicht werden. Sie können YAML oder den klassischen Azure DevOps-Editor verwenden, um Ihre Pakete zu veröffentlichen.

- powershell: gci env:* | sort-object name | Format-Table -AutoSize | Out-File $env:BUILD_ARTIFACTSTAGINGDIRECTORY/environment-variables.txt

- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop
  • pathToPublish: Der Pfad Ihres Artefaktes. Dies kann ein absoluter oder relativer Pfad sein. Platzhalter werden nicht unterstützt.
  • artefakteName: der Name Ihres Artefaktes.

Hinweis

Stellen Sie sicher, dass Sie beim Veröffentlichen Ihres Artefaktes keine der reservierten Ordnernamen verwenden. Weitere Details finden Sie unter Anwendungsordner .

YAML wird in TFS nicht unterstützt.

Beispiel: Verwenden mehrerer Aufgaben

- powershell: gci env:* | sort-object name | Format-Table -AutoSize | Out-File $env:BUILD_ARTIFACTSTAGINGDIRECTORY/environment-variables.txt

- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop1
- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop2
  • pathToPublish: Der Pfad Ihres Artefaktes. Dies kann ein absoluter oder relativer Pfad sein. Platzhalter werden nicht unterstützt.
  • artefakteName: der Name Ihres Artefaktes.

YAML wird in TFS nicht unterstützt.

Beispiel: Kopieren und Veröffentlichen von Binärdateien

- powershell: gci env:* | sort-object name | Format-Table -AutoSize | Out-File $env:BUILD_ARTIFACTSTAGINGDIRECTORY/environment-variables.txt

- task: CopyFiles@2
  inputs:
    sourceFolder: '$(Build.SourcesDirectory)'
    contents: '**/$(BuildConfiguration)/**/?(*.exe|*.dll|*.pdb)'
    targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: '$(Build.ArtifactStagingDirectory)'
    artifactName: drop
  • sourceFolder: Der Ordner, der die Dateien enthält, die Sie kopieren möchten. Wenn Sie dies leer lassen, wird das Kopieren von $(Build.SourcesDirectory) ausgeführt.
  • Inhalt: Dateipfade, die als Teil der Kopie eingeschlossen werden sollen.
  • targetFolder: Zielordner.
  • pathToPublish: der Ordner oder Dateipfad, der veröffentlicht werden soll. Es kann sich um einen absoluten oder relativen Pfad handelt. Platzhalter werden nicht unterstützt.
  • artifactName: Der Name des Artefaktes, das Sie erstellen möchten.

Hinweis

Stellen Sie sicher, dass Sie keinen reservierten Namen für ArtefakteName wie Bin oder App_Data verwenden. Weitere Details finden Sie unter ASP.NET Web Project Folder Structure .

YAML wird in TFS nicht unterstützt.

Herunterladen von Artefakten

- powershell: gci env:* | sort-object name | Format-Table -AutoSize | Out-File $env:BUILD_ARTIFACTSTAGINGDIRECTORY/environment-variables.txt

- task: DownloadBuildArtifacts@0
  inputs:
    buildType: 'current'
    downloadType: 'single'
    artifactName: 'drop'
    downloadPath: '$(System.ArtifactsDirectory)'
  • buildType: Geben Sie an, welche Buildartefakte heruntergeladen werden: current (der Standardwert) oder aus einem bestimmten Build.
  • downloadType: Wählen Sie aus, ob sie ein einzelnes Artefakte oder alle Artefakte eines bestimmten Builds herunterladen möchten.
  • artifactName: Der Name des Artefaktes, das heruntergeladen wird.
  • downloadPath: Pfad auf dem Agentcomputer, auf dem die Artefakte heruntergeladen werden.

YAML wird in TFS nicht unterstützt.

Hinweis

Wenn Sie eine Bereitstellungsaufgabe verwenden, können Sie mithilfe von $(Agent.BuildDirectory) auf Ihre Buildartefakte verweisen. Weitere Details finden Sie unter Agentvariablen .

Wenn die Pipelineausführung abgeschlossen ist, navigieren Sie zu "Zusammenfassung ", um Ihr Artefakte zu erkunden oder herunterzuladen.

Veröffentlichte Buildartefakte

Wenn die Pipeline ausgeführt wird, wählen Sie "Artefakte " aus, um das Artefakte herunterzuladen.

Veröffentlichte Buildart-TFS

Veröffentlichen von TFS in eine UNC-Dateifreigabe

Wenn Sie einen privaten Windows-Agent verwenden, können Sie die Option zum Veröffentlichen des Artefaktes (TFS 2018 RTM und ältere: Artefakttyp) festlegen, um Ihre Dateien in einer UNC-Dateifreigabe zu veröffentlichen.

Hinweis

Verwenden Sie einen Windows-Build-Agent. Diese Option funktioniert nicht für macOS- und Linux-Agents.

Wählen Sie die Dateifreigabe aus, um das Artefakte in eine Dateifreigabe zu kopieren. Häufig gestellte Gründe für folgendes:

  • Die Größe Ihres Drops ist groß und verbraucht zu viel Zeit und Bandbreite, um zu kopieren.

  • Sie müssen einige benutzerdefinierte Skripts oder andere Tools gegen das Artefakte ausführen.

Wenn Sie eine Dateifreigabe verwenden, geben Sie den UNC-Dateipfad zum Ordner an. Sie können steuern, wie der Ordner für jeden Build mithilfe von Variablen erstellt wird. Beispiel: \\my\share\$(Build.DefinitionName)\$(Build.BuildNumber).

Tipps

  • Verwenden Sie Schrägstriche in Dateipfadargumenten. Backslashes funktionieren nicht in macOS/Linux-Agents.

  • Buildartefakte werden in einem Windows-Dateisystem gespeichert, wodurch alle UNIX-Berechtigungen verloren gehen, einschließlich des Ausführungsbits. Möglicherweise müssen Sie die richtigen UNIX-Berechtigungen nach dem Herunterladen Ihrer Artefakte aus Azure Pipelines oder TFS wiederherstellen.

  • Build.ArtifactStagingDirectory und Build.StagingDirectory sind austauschbar.

  • Build.ArtifactStagingDirectory Pfad wird nach jedem Build bereinigt.

  • Das Löschen eines Builds, der mit Paketen verknüpft ist, die in einer Dateifreigabe veröffentlicht wurden, führt dazu, dass alle Artefakte in diesem UNC-Pfad gelöscht werden.

  • Wenn Sie Ihre Pakete in einer Dateifreigabe veröffentlichen, stellen Sie sicher, dass Sie Zugriff auf den Build-Agent bereitstellen.

  • Stellen Sie sicher, dass Sie Azure Artifacts Domain-URLs und IP-Adressen zulassen, wenn Ihre Organisation eine Firewall verwendet.