Skip to content

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

Artifact
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 Artifacts
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