ADO Artifacts
With Azure Artifacts you can create and share Maven, npm, and NuGet package feeds from public and private sources with teams of any size. (docs)
- Easy integration with other ADO products like pipelines
- Supports many package managers Maven, NuGet, NPM
- Enterprise-level access control
- Scoped feeds at org- or project-level
- Allows for interaction with AzureCLI
What is an artifact?¶
An artifact is a finished product after a build process. This can be an HTML report, a test result, or a deployable package. In continuous delivery, we are concerned about creating, storing, and deploying artifacts.
Artifacts are the items that get deployed to environments.
- Java
.jar
,.war
,.ear
- .NET
.exe
,.dll
,.nupkg
- NPM packages
- Docker images
- Packaged objects
- Manifests
- Zip files
Versioned artifact in ADO Artifacts
Do not store artifacts in source control; they should be stored in an artifact repository.
ADO Artifact Feeds¶
An artifact needs to be stored in an artifact feed or repository for future use. With the ADO suite, teams can leverage the Artifact tool and place artifacts in a Feed (docs).
- Provides one place for artifacts to be stored
- Deduplicates where applications need to be downloaded from
- Secured and owned by the company - no outside packages are uploaded
- Features to manage artifact storage and automatic maintenance.
ADO Artifact Feeds
Artifacts should be published only through an automated build pipeline. Avoid manual publishing, which would decrease the quality of the artifact. A pipeline will have proper testing and quality gates before publishing an artifact.
Immutable artifacts¶
Once you publish a particular version of a package to a feed, that version number is permanently reserved. You cannot upload a newer revision package with that same version number, or delete it and upload a new package at the same version.
Build once, deploy anywhere.
- Principals from 12 Factor App
An artifact is more reliable when it cannot be changed since it will be verified thoroughly. Immutability increases reliability due to testing the artifact at a known state. Artifacts should not be altered after going through build process. Immutable artifacts are versioned:
- Necessary for dependency management to work
- Versions should never change
- Never re-publish versions
- Do not alter already public artifacts
- If something is wrong then it should be fixed in code and rebuilt as a new version