什么是 Azure Artifacts?

已完成

在本单元中,你将大致了解如何使用 Azure Artifacts 安全地创建和管理应用可以使用的包。

在确定 Azure Artifacts 是否是托管 .NET 包的适当方法时,请与团队重新联系。

玛拉: 在我看来,在 Azure Artifacts 中托管新模型包是有意义的。 我们都是Microsoft Azure DevOps 组织的一部分,因此身份验证比尝试在不同的包管理器上设置身份验证要容易得多。

安迪: 我在会前研究过这个,对我来说似乎很简单。 我同意马拉。

Amita: 什么是 Azure Artifacts?

安 迪: Azure Artifacts 是 Azure DevOps 组织中的存储库,可在其中管理代码库的依赖项。 Azure Artifacts 可以存储你的工件和二进制文件。 它为依赖项组提供了一个名为源的容器。 有权访问源的开发人员可以轻松获取或发布软件包。

如何创建软件包并将其用于工作流程?

提姆: 因此,如果理解正确,应用代码已使用 NuGet 中的包。 我们将创建自己的包并将其托管在 Azure Artifacts 中。 你能画出组成部分,并且说明它们如何协同工作吗? 我很难想象整个过程。

安 迪: 确定。 让我们来了解创建包并在 Azure DevOps 管道中使用包的过程。

Andy 移动到白板

显示创建和使用包的步骤的白板图的插图。

创建包

首先,在 Azure Artifacts 中创建项目。 我们可以从 Azure DevOps 创建项目。

然后,在 Azure Pipelines 中创建一个管道,用于连接到包代码的 GitHub 存储库。 管道生成代码、打包代码,并将包推送到 Azure Artifacts。

你需要更新使用此包的应用,以指向我们创建的 Azure Artifacts 源。

之后,更新创建应用的管道。 更新后,我们可以使用 Azure Artifacts 源提取新的包依赖项并正常生成。

更新包

提姆: 如果有人更新包,该怎么办?

Andy:使用新功能或 bug 修补程序更新包,并运行测试以确保其正常工作时,请提升包的版本号。 然后,提交更改。 包管道看到提交后,在 Azure Artifacts 中用新的版本号创建新的工件。 别担心,对于依赖于该版本的应用,具有较低版本号的旧包仍然存在。 这就是通常不会取消列出包的原因。

我们的应用可能想要使用此较新版本的包。 在这种情况下,我们将更新应用以引用较新版本,并在本地运行测试,以确保此新版本适用于我们的应用。 确保一切顺利后,将应用更改提交给管道。 它使用新版本的包依赖项进行生成。

Amita: 这听起来像是一个很好的计划,它也会帮助其他团队。 它还会阻止代码 偏移,正如你所说。 这也将帮助质量保证。

在生成管道中包含版本控制策略

当您使用生成管道时,包需要有版本才能被使用和测试。 但是,只有在测试包后,才能知道其质量。 由于不应更改包版本,因此事先选择特定版本会变得困难。

Azure Artifacts 将质量级别与其源中的每个包相关联,并区分预发行版和发布版本。 Azure Artifacts 在包列表及其版本上提供了不同的视图,这些视图根据包的质量级别将它们分开。 此方法适用于语义版本控制,这对于预测特定版本的意图非常有用。 Azure Artifacts 还使用描述符来包含来自 Azure Artifacts 源的更多元数据。 视图的一个常见用途是共享已测试、验证或部署的包版本,但保留仍在开发中的包,并且尚未准备好供公众使用。

默认情况下,Azure Artifacts 中的源具有三个不同的视图。 创建新的源时,将添加这些视图。 这三个视图是:

  • 发布:该 @release 视图包含所有被视为官方版本的包。
  • 预发行版:@prerelease 视图包含其版本号中包含标签的所有包。
  • 本地:该 @local 视图包含所有发布和预发行版包以及从上游源下载的包。

可以使用视图帮助包源使用者在已发布和未发布的包版本之间进行筛选。 视图允许使用者有意识地做出决定,从已发布的包中进行选择,或者选择使用某个质量级别的预发行版。

Azure Artifacts 中的包安全性

确保包的安全性与确保代码其余部分的安全性一样重要。 包安全性的一个方面是保护对包源的访问。 在 Azure Artifacts 中,源是存储包的位置。 通过设置对源的权限,可以根据场景的需要,与尽可能多的人或尽可能少的人共享包。

源权限

源具有四个级别的访问权限:所有者参与者协作者和读者。 每个级别的访问权限都有一组特定的权限。 例如,所有者可以将任何类型的标识(个人、团队和组)添加到任何访问级别。 默认情况下,项目集合生成服务是协作者,项目团队是读者。

配置管道以访问安全和许可证分级

第三方提供了多种工具,可帮助你评估所用软件包的安全性和许可证分级。

其中一些工具会扫描包,因为它们包含在生成或 CD 管道中。 在生成过程中,该工具会扫描包并提供即时反馈。 在 CD 过程中,该工具使用生成项目并执行扫描。 此类工具的两个示例是 Mend BoltBlack Duck。 使用 Azure DevOps,可以使用生成任务将扫描合并到管道中。