In Azure DevOps, we have Download/Publish Build Artifact tasks and Download/Publish Pipeline Artifact tasks.
What is the difference between the build artifact tasks and the pipeline artifact tasks and when would we choose one over the other?
Artifacts are files that are produced by a step. Once you've defined them in your pipeline configuration, you can share them with a following step or export them to keep the artifacts after a step completes. For example, you might want to use reports or JAR files generated by a build step in a later deployment step.
Build artifacts are files produced by a build. Typically, these include distribution packages, WAR files, reports, log files, and so on. When creating a build configuration, you specify the paths to the artifacts of your build on the Configuring General Settings page.
A Build Pipeline is used to generate Artifacts out of Source Code. A Release Pipeline consumes the Artifacts and conducts follow-up actions within a multi-staging system. It is best practice to establish a link between a Build Pipeline and the corresponding Release Pipeline.
There is an issue about it in Azure DevOps GitHub and Microsoft answered:
Hey everyone - I'm from the Azure Artifacts team and we built the Pipeline Artifacts feature that you've discovered in Azure Pipelines.
I'll address the most important comment around documentation - we've got a whole new page coming out around Artifacts in Azure Pipelines which lists out each artifact type that we support and what they are for along with links to specific documentation. We think that should answer most of your questions.
Because that is still being edited before we publish it I thought I would give you the 30,000 foot view on the difference between Pipeline Artifacts and Build Artifacts and also mention how Pipeline Artifacts relate to Universal Packages.
Build Artifacts (published via the Publish Build Artifacts task) have been in Azure DevOps for a long time and are the built-in artifact storage mechanism for Azure Pipelines. Most builds that store non-package artifacts today would likely use this task. The task can push the content up to the server/cloud but can also copy the files to a local file share.
Pipeline Artifacts (published using the Publish Pipeline Artifact task are intended as the replacement for Build Artifacts. They are in preview right now and there are a few more things we need to do to reach parity. The benefit of Pipeline Artifacts is that they can dramatically reduce the time it takes to upload and download large artifacts. We do this be first checking whether the content that is being uploaded exists in the service. We do this not just at the per-file level but also at the sub-file level (in up to 128K chunks). It can lead to really dramatic performance improvements.
Universal Packages - also in preview use the same storage/transfer technology as Pipeline Artifacts. You would use Universal Packages when you want to create an artifact with a life time independent of the pipeline that created it. You can download Pipeline Artifacts after a pipeline has completed via the artifacts UX - but if you want something that really exists independent of pipeline you would go for Universal Packages. There should be no performance difference between the two.
Hopefully this helps. Feel free to ask any more questions and I'll follow-up with answers.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With