练习 - 为包创建管道
在这里,你将获取该团队针对 Tailspin.SpaceGame.Web.Models 项目的新代码,该项目现在独立于 Tailspin.SpaceGame.Web 项目。 为“Models”项目创建 Azure Pipelines 项目后,可以在 Azure Artifacts 的 feed 中查看版本号为 1.0.0 的构件。
对项目进行了哪些更改?
回想一下, Space Game 网站是一个 ASP.NET 核心应用。 它使用 Model-View-Controller (MVC) 模式将数据与用户界面中数据的显示方式分开。 Andy 和 Mara 希望将模型类移动到单独的库,以便多个项目可以使用这些类。
为此,他们创建了一个名为 Tailspin.SpaceGame.Web.Models 的新 C# 项目,该项目仅包含模型类。 同时,从现有项目 Tailspin.SpaceGame.Web 中删除模型类。 他们将现有项目中的模型类替换为对 Tailspin.SpaceGame.Web.Models 项目的引用。
若要构建这些项目,Andy 和 Mara 使用两个管道,每个项目各用一个管道。 您已经拥有第一个项目及其关联的 Azure Pipelines 配置。 在这里,你将在 GitHub 上分叉第二个项目,并创建一个 Azure Pipelines 配置来生成它。 将生成的包发布到 Azure Artifacts。
准备 Visual Studio Code
之前,你将 Visual Studio Code 设置为使用“Tailspin.SpaceGame.Web”项目。 在这里,打开 Visual Studio Code 的第二个实例,以便可以使用 Tailspin.SpaceGame.Web.Models 项目。
打开Visual Studio Code的第二个实例。
在 Visual Studio Code 中打开集成终端。
导航到 mslearn-tailspin-spacegame-web 项目所在的父目录。 下面是移动到主目录的示例:
cd ~
获取源代码
从 GitHub 获取 Tailspin.SpaceGame.Web.Models 项目的源代码,并设置 Visual Studio Code,以便处理文件。
创建分支
第一步是分叉 mslearn-tailspin-spacegame-web-models 存储库,以便可以处理和修改源文件。 回想一下,Mara 将 Models 目录放入新项目中,并将其从 Web 项目中删除。
若要在 GitHub 帐户创建“mslearn-tailspin-spacegame-web-models”项目分支:
- 在 Web 浏览器中,转到 GitHub 并登录。
- 转到 mslearn-tailspin-spacegame-web-models 项目。
- 选择创建分支。
- 按照说明在帐户中创建存储库分支。
在本地克隆分支
将“mslearn-tailspin-spacegame-web-models”项目克隆到计算机:
在 GitHub 上,转到“mslearn-tailspin-spacegame-web-models”项目的分支。
选择 Code。 然后,从 “HTTPS ”选项卡中,选择 URL 旁边的按钮,将 URL 复制到剪贴板。
从 Visual Studio Code 转到终端窗口,然后运行以下命令
git clone
。 将 URL 替换为剪贴板中的内容。git clone https://github.com/your-name/mslearn-tailspin-spacegame-web-models.git
移动到“mslearn-tailspin-spacegame-web-models”目录。 此位置是存储库的根目录。
cd mslearn-tailspin-spacegame-web-models
打开项目并检查配置
在 Visual Studio Code 中,终端窗口指向 mslearn-tailspin-spacegame-web-models 项目的根目录。 从文件资源管理器打开项目,以便可以查看其结构和处理文件。
打开项目最简单的方法是在当前目录中重新打开 Visual Studio Code。 为此,可在集成终端中运行以下命令:
code -r .
可以在文件资源管理器中查看目录和文件树。
重新打开集成终端。 终端会将你带至 Web 项目的根目录。
打开“azure pipelines.yml”文件。
可以看到生成包、设置版本以及将包添加到 Azure Artifacts 的步骤。
此
DotNetCoreCLI@2
任务生成项目:- task: DotNetCoreCLI@2 displayName: 'Build the project - $(buildConfiguration)' inputs: command: 'build' arguments: '--no-restore --configuration $(buildConfiguration)' projects: '**/*.csproj'
此
DotNetCoreCLI@2
任务将项目打包为 1.0.0 版:- task: DotNetCoreCLI@2 displayName: 'Pack the project - $(buildConfiguration)' inputs: command: 'pack' projects: '**/*.csproj' arguments: '--no-build --configuration $(buildConfiguration)' versioningScheme: byPrereleaseNumber majorVersion: '1' minorVersion: '0' patchVersion: '0'
开发包时,通常使用
byPrereleaseNumber
版本控制方案。 此方法在版本号的末尾追加一个唯一的预发行后缀,例如-CI-20190621-042647
。 在此示例中,完整版本号将为1.0.0-CI-20190621-042647
。此
NuGetCommand@2
任务将包推送到“Tailspin.SpaceGame.Web.Models”Azure Artifacts 源:- task: NuGetCommand@2 displayName: 'Publish NuGet package' inputs: command: push feedPublish: '$(System.TeamProject)/Tailspin.SpaceGame.Web.Models' allowPackageConflicts: true condition: succeeded()
feedPublish
指定要发布到的源的名称。 名称的格式为<projectName>/<feedName>
,其中:$(System.TeamProject)
是一个预定义的变量,用于指代您的项目名称,例如 “Space Game - web - Dependencies”。Tailspin.SpaceGame.Web.Models
是您在上一练习中提供的 feed 名称。
设置权限
在设置和运行管道之前,需要为生成服务提供正确的权限。
- 在 Azure DevOps 中转到你的项目。
- 从左侧菜单中选择 “项目 ”。
- 选择屏幕右上角的 “设置” 图标,然后选择“ 权限 ”选项卡。
- 选择“ 添加用户/组 ”按钮。
- 在 “用户/组” 字段中,输入 Space Game - Web - 依赖项生成服务,选择 “参与者 ”角色,然后选择“ 保存”。
在 Azure Pipelines 中创建管道
你已了解如何在前面的模块中设置 Azure Pipelines。 如果需要回顾,请转到 使用 Azure Pipelines 创建构建管道。
下面介绍如何设置第二个管道来生成包,并将该包上传到 Azure Artifacts。
从 Azure DevOps 转到 Space Game - Web - 依赖项 项目。
从左侧菜单中,选择 “管道”。
选择“新建管道”。
在 “连接 ”选项卡中,选择 “GitHub”。
在“选择”选项卡中,选择“mslearn-tailspin-spacegame-web-models”
如果出现提示,请输入 GitHub 凭据。 从显示的页面中,滚动到底部,然后选择 “批准并安装”。
在“ 审阅 ”选项卡中,可以看到新管道的 azure-pipelines.yml 文件。
选择 运行。
监视管道运行。
转到“ 项目 ”选项卡。
从顶部的下拉列表中,选择 Tailspin.SpaceGame.Web.Models。
Azure Artifacts 中看到生成的包 Tailspin.SpaceGame.Web.Models。
选择包裹以进入详情页。 然后,将版本号复制到稍后可以访问的位置。
在下一单元中使用此版本号。