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

Azure DevOps Services

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

先决条件

创建源

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

  1. 登录到 Azure DevOps 组织,然后导航到项目。

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

  3. 为您的订阅源提供描述性名称,并设置其可见性(谁能够查看您提供的订阅源中的包)。 定义你的 Feed 的范围,然后选中上游源复选框,若想要包含公共注册表中的软件包。

  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. 选择连接到源,然后从左侧导航窗格中选择 Universal Packages

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

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

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

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

注意

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

发布通用包

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

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

  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>
      

注意

包含大量文件(100K+)的通用包可能无法发布。 在这种情况下,我们建议将文件捆绑到 ZIPTAR 存档,以减少文件计数。

查看已发布的包

  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)。

下载最新版本

可以使用通配符 * 来下载您的通用包的最新版本。

示例

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

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

  • --version '1.2.*':下载主版本号为 1,次版本号为 2 的最新修补程序发布版。

注意

预发行版本(即版本号中包含短划线的包)不支持通配符模式。