在 Azure Artifacts 中发布和下载通用包

Azure DevOps Services

通用包使开发人员能够将各种包类型存储在传统包类型(如 NuGet、npm、Python 包等)之外。使用 Azure CLI,可以直接从命令行发布和下载通用包。 虽然已发布包的大小可能会有所不同,但达到 4 TB,但它们必须始终保留包括名称和版本号的基本要求。 本文将指导你完成从 Azure Artifacts 源发布和下载通用包的步骤。

先决条件

创建源

如果已有源,可以转到下一部分。 否则,请按照以下步骤创建新的 Azure Artifacts 源:

  1. 登录到 Azure DevOps 组织,并导航到你的项目。

  2. 选择“项目”,然后选择“创建源”

  3. 为源提供描述性 名称 并设置其 可见性 (谁可以查看源中的包)。 定义源的范围,如果要包含公共注册表中的包,请选择上游源检查框。

  4. 完成操作后,选择“创建”

    显示如何创建新源的屏幕截图。

注意

新建的源默认将项目的生成服务角色指定为源和上游读取者(协作者)。

安装 Azure DevOps 扩展

使用 CLI 有助于简化任务。 在继续之前,请确保已安装 Azure CLI(版本 2.10.1 或更高版本)。 此外,还需要安装 Azure DevOps 扩展,以便从命令行管理 Azure DevOps 服务。

  1. 运行以下命令以安装 Azure DevOps 扩展:

    az extension add --name azure-devops
    
  2. 如果已安装 Azure DevOps 扩展并想要将其更新到最新扩展,请运行以下命令:

    az extension update --name azure-devops
    

连接到源

  1. 登录到 Azure DevOps 组织,并导航到你的项目。

  2. 选择“ 项目”,然后从下拉菜单中选择源。

  3. 选择连接源,然后从左侧导航窗格中选择“通用包”。

  4. 按照“项目设置”部分中的说明连接到源。

  1. 运行以下命令以登录到 Azure CLI:

    az login
    
  2. 运行以下命令,将项目和组织设置为 CLI 的默认配置:

    az devops configure --defaults project=<YOUR_PROJECT_NAME> organization=https://dev.azure.com/<YOUR_ORGANIZATION_NAME> 
    

发布通用包

若要将通用包发布到源,需要提供包名称和版本号。

包名称应采用小写形式、以字母或数字开头和结尾,并且仅包含字母、数字和非连续短划线、下划线和句点。 包版本还应采用小写形式,不应包含生成元数据(+ 后缀)。 有关更多详细信息,请参阅 语义版本控制

  1. 运行以下命令,将通用包发布到源:

    • 组织作用域的源:

      az artifacts universal publish --organization https://dev.azure.com/<YOUR_ORGANIZATION> --feed <FEED_NAME> --name <PACKAGE_NAME> --version <PACKAGE_VERSION> --path <PACKAGE_DIRECTORY> --description <PACKAGE_DESCRIPTION>
      
    • 项目作用域的源:

      az artifacts universal publish --organization https://dev.azure.com/<YOUR_ORGANIZATION> --project <PROJECT_NAME> --scope project --feed <FEED_NAME> --name <PACKAGE_NAME> --version <PACKAGE_VERSION> --path <PACKAGE_DIRECTORY> --description <PACKAGE_DESCRIPTION>
      

注意

如果你的组织使用防火墙或代理服务器,请确保允许 Azure Artifacts 域 URL 和 IP 地址

查看已发布的包

  1. 登录到 Azure DevOps 组织,并导航到你的项目。

  2. 选择 “项目”,然后从下拉菜单中选择源。 成功完成发布过程后,你的包应该在源中可用。

    显示新发布的通用包的屏幕截图。

下载通用包

运行以下命令,使用 Azure CLI 从源下载特定通用包:

  • 组织作用域的源:

    az artifacts universal download --organization https://dev.azure.com/<YOUR_ORGANIZATION_NAME> --feed <FEED_NAME> --name <PACKAGE_NAME> --version <PACKAGE_VERSION> --path <DOWNLOAD_PATH>
    
  • 项目作用域的源:

    az artifacts universal download --organization https://dev.azure.com/<YOUR_ORGANIZATION_NAME> --project <PROJECT_NAME> --scope project --feed <FEED_NAME> --name <PACKAGE_NAME> --version <PACKAGE_VERSION> --path <DOWNLOAD_PATH>
    

下载特定的文件

如果只想下载特定文件,请使用 --file-filter 参数提取文件子集。 有关更多详细信息,请参阅 文件匹配模式参考

  • 组织作用域的源:

    az artifacts universal download --organization https://dev.azure.com/<YOUR_ORGANIZATION_NAME> --feed <FEED_NAME> --name <PACKAGE_NAME> --version <PACKAGE_VERSION> --path <DOWNLOAD_PATH> --file-filter <MATCH_PATTERN>
    
  • 项目作用域的源:

    az artifacts universal download --organization https://dev.azure.com/<YOUR_ORGANIZATION_NAME> --project <PROJECT_NAME> --scope project --feed <FEED_NAME> --name <PACKAGE_NAME> --version <PACKAGE_VERSION> --path <DOWNLOAD_PATH> --file-filter <MATCH_PATTERN>
    

例如: 使用 --file-filter logs/.log 会将包含“logs”的文件名与文件名匹配,以扩展名“.log”(例如,build_logs.log)结尾。

下载最新版本

可以使用 wild卡 * 下载最新版本的通用包。

示例:

  • --version '*':下载最新版本。

  • --version '1.*':下载主版本 1 的最新版本。

  • --version '1.2.*':下载具有主要 1 和次要 2 的最新修补程序版本。

注意

预发行版本不支持野生卡模式(其版本号中包含短划线的包)。