Publish and download universal packages
With universal packages, users are able to store different types of packages other than the widely used ones like NuGet, npm, Maven, or Python packages. Uploaded packages can vary in size (tested up to 4 TB) but should always have a name and a version number. You can publish and download universal packages from the command line using the Azure CLI.
This quickstart will walk you through the steps to publish and download your first universal package to/from your feed using the command line.
Prerequisites
- Download and install the latest Azure CLI version.
- If you're using Linux, make sure you have the appropriate .NET on Linux version.
To check the version of Azure CLI modules and extensions that you currently have, run the following command:
az --version
You can install the Azure DevOps extension using the following command:
az extension add --name azure-devops
If you already have the Azure DevOps extension but you want to update to the latest version, run the following command:
az extension update --name azure-devops
Create a feed
A feed is an organizational construct that allows you to store and manage your packages and control who can access them.
From within your project, navigate to Azure Artifacts.

Select Create Feed.

Give your feed a Name and choose its visibility, upstream sources, and scope settings.

Select Create when you are done.
Azure Artifacts is installed by default for TFS 2017 customers. You must upgrade to TFS 2017 in order to use Azure Artifacts. If this is the first time using your feed, you might be asked to assign a license
Go to Build & Release and select Packages.

Select + New feed.

Give your feed a Name, a Description, and set up who can read, who can contribute and if you want to Include external packages.

Select Create when you are done.
Log in to Azure DevOps
After you've installed the Azure CLI, run the following command in an elevated command prompt window to log in to Azure. Replace the text in the square brackets [] with the appropriate names.
az login
Tip
To access tenants without subscriptions, run az login --allow-no-subscription.
Next, set your project and organization as the CLI's default.
az devops configure --defaults organization=https://dev.azure.com/[your-organization] project=[your-project-name]
Publish a universal package
Now we can use the az artifacts universal command to manage our universal packages. In the following example we will publish my-first-package, version 1.0.0 to FabrikamFiber feed in the Fabrikam organization. FibrikamFiber is an organization-scoped feed.
Package names must be lowercase and can only use letters, numbers, and dashes. Package versions must be lowercase without build metadata (+ suffix). See SemVer to learn more about semantic versioning.
az artifacts universal publish --organization https://dev.azure.com/Fabrikam --feed FabrikamFiber --name my-first-package --version 1.0.0 --description "My first universal package" --path .
View the package in your feed
To view the package that you just published, go to your organization, select your project, select Artifacts, then select your feed from the drop-down menu.

Download a universal package
Now that you've published your first universal package, let's try to download it using Azure CLI. The following example will download the package that we published earlier.
az artifacts universal download --organization https://dev.azure.com/Fabrikam --feed FabrikamFiber --name my-first-package --version 1.0.0 --path .
Note
Azure DevOps doesn't support direct HTTP/HTTPS download links.
Download specific files
If you don't need the entire Universal Package and only need specific files, you can use the --file-filter parameter to download a subset of files.
The following example *logs/*.log would match any file ending with logs and with the extension .log. Example: build123_logs.log
See File matching patterns reference for more details.
az artifacts universal download --organization https://dev.azure.com/fabrikam --feed FabrikamFiber --name my-first-package --version 1.0.0 --path . --file-filter *logs/*.log
Downloading the latest version
You can use wildcards to download the latest version of your Universal Packages.
Syntax:
--version -v: Package version, e.g. '2.1.0'.
Examples:
--version *: the latest version.--version 1.*: the latest version with major 1.--version 1.2.*: the latest patch release with major 1 and minor 2.
Note
Wildcards are not supported in pre-release.