Team Services的打包管理
概述
Package Management (打包管理)是一种扩展,可以更容易地发现、安装和发布包。
它与Team Services中心如构建功能深度集成,这样打包管理就可以与现有工作流无缝对接。
当产品已成功,组织正在成长,这时就该扩大代码库来与之匹配。当在一个单一产品的单一代码库中扩展到过去的2-3个团队时,你可能会发现以下问题:
- 团队如何有效地共享可重用组件?
- 如何让特性团队快速迭代,而不影响其他团队的工作?
- 如何让团队自主地以适应他们的速度进行迭代?
这些问题不仅仅适用于刚刚成长的团队。如果是一个拥有历史代码库的成熟团队,可能也会面临这些相同的问题,因为团队被要求交付更多的价值,更快交付。无论情况如何,组件化可以帮助构建一个代码库,它可以扩展到团队的规模并匹配当前开发速率。
在该模块中,我们将探索如何通过打包管理实现二进制组件,从而帮助管理和共享外部依赖项、OSS和隔离的共享组件。
前置条件
要完成这个实验室需要:
- Visual Studio Team Services 账户.如果没有,需要创建一个。
- Visual Studio 2017 或更高版本
- 可以使用Visual Studio team Services Demo Data generator Visual Studio team Services帐户提供预先定义的项目数据。在本动手实验请使用My Health Clinic模板。
如果没有使用VSTS Demo Data Generator,可以从GitHub仓库中复制代码。
任务1:安装打包管理器扩展
1.要开始使用Visual Studio Team Services的打包管理,必须首先从Visual Studio市场安装打包管理扩展,可以在这里找到扩展。
2.点击Start Trial(开始试验)安装扩展,选择VSTS帐户安装并点击confirm(确认)。
已经在帐户上安装了扩展。打包订阅是NuGet打包订阅,可以为自己的依赖项使用,甚至与其他团队共享依赖关系。Nuget.org 是一个公共订阅,可以为其他开发人员发布包。
3.安装后点击Proceed to the account。可以在Build & Release(构建和发布部分)的Team Projects(团队项目)中看到Package(打包)菜单选项。
任务2:创建订阅
从团队项目中删除未使用的repo,以组织项目的源代码。
1.登录Visual Studio Team Services账户。
2.在帐户概述页面,选择团队项目,也可以搜索项目。
3.现在应该在Build & Release选项卡下看到一个新的菜单选项Package,点击它。
4.单击+ New feed创建一个新订阅,设置名称并单击create。
5.单击Connect to feed,注意Package source URL。
我们需要这个订阅的Url,这样就能够将开发人员连接到该订阅,并配置项目在自动化构建期间使用它。
任务3:发布打包
我们将从先之前建和配置的打包开始。在当前示例中,创建打包的第一步是定义nuspec文件,它只是一个带有一些自定义帮助项的简单类库。
该文件定义了打包将在清单中显示的属性。
在07_Demos_PackageManagement 解决方案中,我们创建了一个带有nuspec文件定义的类库. 关于如何创建和使用该文件的说明可以在NuGet.org文档中找到.
打包版本的控制也很重要,这样开发人员才知道包的哪个版本是最新的、上一个版本,以及这两个版本之间的区别。
我们将以自动构建的方式将包发布到订阅中。因此,将创建一个新的构建定义(关于更多细节,请查看持续集成实验。
1.我们将从Visual Studio构建模板开始。通过创建新的构建定义,选择Visual Studio build模板。
2.删除Publish symbols(发布符号)、Copy files(复制文件)和Publish Artifact(发布工件)任务。并配置Nuget Restore和Build(构建)步骤来构建我们的Nuget打包解决方案。
3.从Package部分添加NuGet Packager任务。
4.从Package部分添加Nuget Publisher任务。
5.配置Nuget Packager任务。为此,将选择包含NuGet打包项目的csproj文件。这必须与nuspec文件名相同,但是使用csproj扩展。
这非常关键:此时指定csproj文件,并与csproj文件nuspec文件名称相同,这样该打包才会正确生成。
6.在Nuget publisher任务中,需要指定我们想要发布目标的订阅。选择内部Feed type并为内部订阅引入URL(之前提到的URL)。完成构建定义后Save and Queue 。
另外,Path/Pattern to nupkg该默认的过滤器只包含刚刚构建的包,将排除引用包含: * /packages/* /.nupkg的包,以及包含-😗*/.symbols.nupkg的包,目前不支持。
7.构建完成后,可以看到包已经发布到订阅并准备好被使用。进入Packages选项卡并检查。
任务4:配置Visual Studio
1.打开Visual Studio进入Tools | NuGet Package Manager |Package Manager Settings。
需要配置Visual Studio以使打包管理器可供开发人员使用。
2.打开Package Sources
在此屏幕中,将管理自己的包订阅,以便在项目中添加NuGet包时可用。
3.单击+图标,一行新的打包源代码已经添加了默认值。将Name更改为所需的名称(即“HealthClinic Feed”),并在URL中粘贴我们之前提到的订阅的URL值。单击Ok。
我们只是将新订阅添加到Visual Studio中。为了获取到包,团队的所有成员必须在自己的Visual Studio中执行相同的操作。
4.创建一个空项目,或者打开一个现有项目,右键单击,选择Manage Nuget Packages,进入Browse,在package source选择器中,选择最近添加的订阅。应该能够找到最近添加的包。
所有的团队成员,都要在Visual Studio中配置订阅,之后能够访问该订阅并将包安装到他们的项目中,这样就可以更好地在项目中重用公共库的代码。
任务5:打包从构建到使用
当创建构建时,第一步是Nuget package restore,但是默认情况下,只会在nuget.org订阅中查找包。所以需要通过nuget.config文件来说明Team Build。
1.在解决方案同层级中,创建一个名为nuget.config的空文件。将创建Team Build并粘贴以下代码:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
<add key="HealthClinic Repo" value="YOUR_PACKAGE_URL" />
</packageSources>
</configuration>
需要第一个打包源代码来表示Nuget公开Nuget包的原始Nuget订阅。第二个是自定义订阅的url。
2.将文件提交到存储库。
3.现在,在团队构建中,使用的是内部Nuget打包的项目,在包恢复步骤,指向刚刚添加到存储库中的配置文件nuget.config。
4.在构建期间,可以看到控制台的输出,同时构建引用内部Nuget订阅的项目。
Feeds used:
C:\Users\buildguest\AppData\Local\NuGet\Cache
https://api.nuget.org/v3/index.json
YOUR_PACKAGE_URL