Artefakte in Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

Hinweis

Es wird empfohlen, ein Upgrade von Buildartefakten (PublishBuildArtifacts@1 und DownloadBuildArtifacts@0) auf Pipelineartefakte (PublishPipelineArtifact@1 und DownloadPipelineArtifact@2) für eine schnellere Leistung zu durchführen.

Azure Artifacts ist ein Dienst, mit dem Teams Feeds und Upstreamquellen verwenden können, 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 zu nutzen.

Wie veröffent ich Artefakte?

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.

Veröffentlichen einer Textdatei

- 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 ein relativer Pfad sein. Platzhalter werden nicht unterstützt.
  • artifactName: der Name Ihres Artefaktes.

Hinweis

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

YAML wird in TFS nicht unterstützt.

Veröffentlichen von zwei Arten von Artefakten

- 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 ein relativer Pfad sein. Platzhalter werden nicht unterstützt.
  • artifactName: der Name Ihres Artefaktes.

YAML wird in TFS nicht unterstützt.

Beispiel: Zusammenstellen von C++-Artefakten an einem Ort und Veröffentlichen als Artefakte

- 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 diesen Wert leer lassen, erfolgt das Kopieren aus dem Stammordner Ihres Repositorys ($(Build.SourcesDirectory)).
  • inhalt: Speicherorte der Datei(n), die in den Zielordner kopiert werden.
  • targetFolder: Zielordner.
  • pathToPublish: der zu veröffentlichende Ordner oder Dateipfad. Es kann sich um einen absoluten oder einen relativen Pfad sein, und Wildcards werden nicht unterstützt.
  • artifactName: Der Name des Artefaktes, das Sie erstellen möchten.

Hinweis

Sie können bin, App_Data und andere Ordnernamen, die von IIS als Artefaktnamen reserviert sind, nicht verwenden, da dieser Inhalt nicht als Reaktion auf Webanforderungen bereitgestellt wird. Weitere Informationen finden Sie unter ASP.NET Web Project Folder Structure .

YAML wird in TFS nicht unterstützt.

Wie kann ich Artefakte nutzen?

Sie können Ihre Artefakte auf unterschiedliche Weise nutzen: Sie können sie in Ihrer Releasepipeline verwenden, zwischen Ihren Pipelineaufträgen übergeben, sie direkt aus Ihrer Pipeline herunterladen und sogar aus Feeds und Upstreamquellen herunterladen.

Nutzen von Artefakten in Releasepipelinen

Sie können Artefakte herunterladen, die entweder von einer Buildpipeline (erstellt in einem klassischen Editor) oder einer YAML-Pipeline (erstellt über eine YAML-Datei) in einer Releasepipeline erstellt und für das Ziel Ihrer Wahl bereitgestellt werden.

Verwenden eines Artefaktes im nächsten Auftrag Ihrer Pipeline

Sie können ein Von einem Auftrag erzeugtes Artefakte in einem nachfolgenden Auftrag der Pipeline nutzen, auch wenn sich dieser Auftrag in einer anderen Phase befindet (YAML-Pipelines). Dies kann hilfreich sein, um Ihr Artefakte zu testen.

Herunterladen zum Debuggen

Sie können ein Artefakte direkt aus einer Pipeline herunterladen, um im Debugging zu verwenden.

- 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 sollen: 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 deployment Aufgabe verwenden, können Sie dann mithilfe einer $(Agent.BuildDirectory) Variablen auf Ihre Buildartefakte verweisen. Weitere Informationen zur Verwendung vordefinierter Variablen finden Sie unter Agentvariablen .

Tipps

  • PublishBuildArtifacts: Mithilfe des publishLocation-Arguments können Sie Artefakte in Azure Pipelines (Container) speichern oder in eine Dateifreigabe (FilePath) kopieren. Auf die Dateifreigabe muss über den Agent zugegriffen werden, der die Pipeline ausführt.

  • Verwenden Sie Schrägstriche in Dateipfadargumenten, damit sie für alle Agents funktionieren. Backslashes funktionieren nicht für macOS- und Linux-Agents.

  • Buildartefakte werden in einem Windows-Dateisystem gespeichert, was dazu führt, dass alle UNIX-Berechtigungen verloren gehen, einschließlich des Ausführungsbits. Möglicherweise müssen Sie die richtigen UNIX-Berechtigungen wiederherstellen, nachdem Sie Ihre Artefakte aus Azure Pipelines oder TFS heruntergeladen haben.

  • In Azure Pipelines und einigen Versionen von TFS zeigen zwei verschiedene Variablen auf das Stagingverzeichnis: Build.ArtifactStagingDirectory und Build.StagingDirectory. Diese sind austauschbar.

  • Das Verzeichnis, auf das verwiesen wird, Build.ArtifactStagingDirectory wird nach jedem Build bereinigt.

  • Das Löschen eines Builds, der Artefakte in einer Dateifreigabe veröffentlicht hat, führt zum Löschen aller Artefakte in diesem UNC-Pfad.

  • Sie können Buildartefakte mithilfe der Azure DevOps-REST-API abrufen.

Verwenden Sie diese Aufgaben, um Artefakte zu veröffentlichen:

Erkunden, Herunterladen und Bereitstellen Ihrer Artefakte

Wenn der Build abgeschlossen ist, wählen Sie die Registerkarte "Zusammenfassung " aus, und sehen Sie ihr Artefakt im veröffentlichten Abschnitt "Buildartefakte" .

Published build artifact

Wenn der Build abgeschlossen ist, wählen Sie den Namen des abgeschlossenen Builds aus, und wählen Sie dann die Registerkarte "Artefakte " aus, um ihr Artefakte anzuzeigen.

Published build artifact TFS

Von hier aus können Sie die Artefakte erkunden oder herunterladen.

Sie können Auch Azure Pipelines verwenden, um Ihre App bereitzustellen, indem Sie die von Ihnen veröffentlichten Artefakte verwenden. Siehe Artefakte in Azure Pipelines-Versionen.

Veröffentlichen von TFS in einer UNC-Dateifreigabe

Wenn Sie einen privaten Windows-Agent verwenden, können Sie die Option zum Veröffentlichen des Artefaktspeicherorts (TFS 2018 RTM und älter: 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äufige Gründe hierfür:

  • 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 für 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).

Veröffentlichen von Artefakten aus TFS 2015 RTM

Wenn Sie TFS 2015 RTM verwenden, sind die Schritte in den vorherigen Beispielen nicht verfügbar. Stattdessen kopieren und veröffentlichen Sie Ihre Artefakte mithilfe einer einzelnen Aufgabe: Build: BuildArtefakte veröffentlichen.