什么是 Azure Artifacts?
本单元简要概述了如何使用 Azure Artifacts 安全创建并管理可供应用使用的包。
当团队决定 Azure Artifacts 是否是托管 .NET 包的适当方法时,让我们再次与团队核实。
Mara:在我看来,在 Azure Artifacts 中托管新的模型包是有意义的。 我们已全部是 Microsoft Azure DevOps 组织的成员,因此身份验证比尝试在不同的包管理器上设置更容易。
Andy:我在会议开始前对此进行了研究,这对我来说似乎很简单。 我同意 Mara。
Amita:什么是 Azure Artifacts?
Andy:Azure Artifacts 是 Azure DevOps 组织中的一个存储库,可在其中管理代码库的依赖项。 Azure Artifacts 可以存储你的项目和二进制文件。 它为依赖项组提供了一个名为源的容器。 有权访问源的开发人员可以轻松使用或发布包。
如何创建包并在管道中使用它?
Tim:因此,如果我理解正确,应用代码已经使用了 NuGet 中的包。 我们将创建自己的包并将其托管在 Azure Artifacts 中。 你能想象出各个部分吗?它们将如何协同工作? 我很难想象整个过程。
Andy:当然。 让我们回顾一下创建包并在 Azure DevOps 管道中使用它的过程。
Andy 走到白板前。
创建包
首先,我们需要在 Azure Artifacts 中创建一个项目。 我们可以在 Azure DevOps 中执行此操作。
然后,我们在 Azure Pipelines 中创建一个管道,连接到包代码的 GitHub 存储库。 然后,管道生成代码,将其打包并将包推送到 Azure Artifacts。
我们需要更新使用此包的应用,以指向我们创建的 Azure Artifacts 源。
之后,我们将更新创建应用的管道。 更新后,我们可以使用 Azure Artifacts 源提取新的包依赖项并正常生成。
更新包
Tim:如果有人更新包怎么办?
Andy:使用新功能或 bug 修补程序更新包,并运行测试以确保其正常工作时,请提升包的版本号。 然后提交更改。 包管道会看到提交并在 Azure Artifacts 中使用新版本号创建新项目。 不用担心,具有较低版本号的旧包仍然适用于依赖于该版本的应用。 这就是通常不会取消列出包的原因。
应用可能想要使用此更新版本的包。 在这种情况下,更新应用以引用较新的版本,并在本地运行测试以确保此新版本适用于应用。 确保一切顺利后,将应用更改提交给管道。 管道将使用包依赖项的新版本生成。
Amita:这听起来是个不错的计划,对其他团队也有帮助。 正如你所说,它还可以防止代码出现偏差。 这对 QA 也有帮助。
在生成管道中包含版本控制策略
使用生成管道时,包需要版本才能使用和测试。 不过,只有在测试了包之后,才能知道其质量。 因为包版本决不会更改,所以,预先选择某个版本就变得具有挑战性。
Azure Artifacts 将质量级别与源中的每个包相关联,并区分预发行版和发行版。 Azure Artifacts 在包列表及其版本上提供不同的视图,这些视图根据其质量级别进行分隔。 此方法非常适合用于语义版本控制,这对于预测特定版本的意图非常有用。 Azure Artifacts 还使用描述符来包括来自 Azure Artifacts 源的其他元数据。 视图的常见用途是共享已测试、验证或部署的包版本,但保留仍处于开发阶段并且尚未准备好公开使用的包。
默认情况下,Azure Artifacts 中的源具有三个不同的视图。 创建新的源时,将添加这些视图。 这三个视图是:
- 发布:@release 视图包含被视为正式版本的所有包。
- 预发布:@prerelease 视图包含所有在其版本号中带有标签的包。
- 本地:@local 视图包含所有发布和预发布包以及从上游源下载的包。
可以使用视图来帮助包源的使用者筛选包的已发布版本和未发布版本。 实质上,视图允许使用者有意识地做出决定,从已发布的包中进行选择,或者选择使用某个质量级别的预发行版。
Azure Artifacts 中的包安全性
确保包的安全性与确保代码的其余部分的安全性一样重要。 包安全性的一个方面是保护包源访问安全(在 Azure Artifacts 中,源是存储包的位置)。 通过设置对源的权限,可以根据方案的需要,与尽可能多的人或尽可能少的人共享包。
源权限
源具有四个级别的访问权限:所有者、参与者、协作者和读者。 每个级别的访问权限都具有一组特定的权限。 例如,所有者可以将任何类型的标识(个人、团队和组)添加到任何访问级别。 默认情况下,项目集合生成服务为协作者,项目团队为读者。
配置管道以访问安全性和许可评级
第三方提供了几个工具,可帮助你评估你使用的软件包的安全性和许可评级。
其中一些工具会扫描包,因为它们包含在生成或 CD 管道中。 在生成过程中,该工具将扫描包并提供即时反馈。 在 CD 过程中,该工具使用生成项目并执行扫描。 此类工具的两个示例是 Mend Bolt 和 Black Duck。 通过 Azure DevOps,可以使用生成任务将扫描并入管道中。