在上一章,您创建简单的源读取器应用的本地 Git 存储库。 在本章中,会将该代码发布到 GitHub 存储库并构建使用 Azure 管道的 Azure DevOps 服务管道。 管道可使持续生成和部署的应用程序。 GitHub 存储库的任何提交触发生成和部署到 Azure Web 应用的过渡槽。
在本部分中,将完成以下任务:
打开浏览器窗口,并导航到https://github.com
。
单击 + 标头中的下拉列表中,选择新的存储库:
选择你的帐户所有者下拉列表中,并输入简单源阅读器中存储库名称文本框中。
单击创建存储库按钮。
打开本地计算机的命令行界面。 导航到在其中的目录简单源阅读器存储 Git 存储库。
重命名现有原点到远程上游。 请执行以下命令:
git remote rename origin upstream
添加一个新原点远程指向您的 GitHub 上的存储库副本。 请执行以下命令:
git remote add origin https://github.com/<GitHub_username>/simple-feed-reader/
将本地 Git 存储库发布到新创建的 GitHub 存储库。 请执行以下命令:
git push -u origin master
打开浏览器窗口,并导航到https://github.com/<GitHub_username>/simple-feed-reader/
。 验证你的代码会在 GitHub 存储库中。
删除本地 Git 部署通过执行以下步骤。 Azure 管道 (Azure DevOps 服务) 都将替换和增强该功能。
打开Azure 门户,并导航到暂存 (mywebapp<unique_number>/暂存) Web 应用。 可以通过输入快速位于 Web 应用暂存门户的搜索框中:
单击部署中心。 将显示新面板。 单击断开连接来删除已添加在上一章中的本地 Git 源控件配置。 通过单击确认删除操作是按钮。
导航到mywebapp < unique_number > 应用服务。 请注意,可以使用门户的搜索框中快速找到应用服务。
单击部署中心。 将显示新面板。 单击断开连接来删除已添加在上一章中的本地 Git 源控件配置。 通过单击确认删除操作是按钮。
打开浏览器并导航到Azure DevOps 的组织创建页。
键入唯一名称选取一个易记名称文本框中以形成用于访问你的 Azure DevOps 组织的 URL。
选择Git单选按钮,因为代码托管在 GitHub 存储库。
单击“继续”按钮。 稍等片刻、 帐户和团队项目之后, 名为MyFirstProject,创建。
打开指示 Azure DevOps 的组织和项目可供使用的确认电子邮件。 单击开始你的项目按钮:
浏览器将打开 <account_name>。 visualstudio.com。 单击MyFirstProject链接以开始配置项目的 DevOps 管道。
有三个不同的步骤才能完成。 完成操作的 DevOps 管道中的以下三个部分结果中的步骤。
展开或从外部存储库的代码生成accordion。 单击安装程序生成按钮:
选择GitHub选项从选择一个源部分:
授权是必需的 Azure DevOps 可以访问 GitHub 存储库之前。 输入 < GitHub_username > GitHub 连接中连接名称文本框中。 例如:
如果你的 GitHub 帐户启用双因素身份验证,则需要个人访问令牌。 在这种情况下,单击使用 GitHub 个人访问令牌的授权链接。 请参阅正式 GitHub 个人访问令牌创建说明有关的帮助。 仅存储库所需权限的作用域。 否则,请单击使用 OAuth 授权按钮。
出现提示时,登录到你的 GitHub 帐户。 然后,选择授权授予对你的 Azure DevOps 组织访问权限。 如果成功,会创建新的服务终结点。
单击省略号按钮旁边存储库按钮。 选择 < GitHub_username > / 简单源阅读器从列表中的存储库。 单击选择按钮。
选择主从分支手动和计划生成的默认分支下拉列表。 单击“继续”按钮。 模板选择页会显示。
从模板选择页中,输入ASP.NET Core在搜索框中:
显示模板搜索结果。 将鼠标悬停ASP.NET Core模板,然后单击应用按钮。
任务显示的生成定义选项卡。 单击“触发器” 选项卡。
检查启用持续集成框。 下的分支筛选器部分中,确认类型下拉列表设置为Include。 设置分支规范下拉列表master。
这些设置会导致要进行任何更改推送到时触发的生成主GitHub 存储库分支。 在中测试持续集成更改提交到 GitHub 并自动部署到 Azure部分。
单击保存并排队按钮,然后选择保存选项:
下面的模式对话框会显示:
使用的默认文件夹 \,然后单击保存按钮。
单击版本你的团队项目的选项卡。 单击新的管道按钮。
模板选择窗格会显示。
从模板选择页中,输入应用服务在搜索框中:
显示模板搜索结果。 将鼠标悬停Azure 应用服务部署槽模板,然后单击应用按钮。 管道发布管道的选项卡将出现。
单击外按钮项目框。 添加项目面板将显示:
选择构建磁贴源类型部分。 此类型,用于对生成定义发布管道的链接。
选择MyFirstProject从项目下拉列表。
选择生成定义名称, MyFirstProject ASP.NET Core CI,从源 (生成定义) 下拉列表。
选择最新从默认版本下拉列表。 此选项可用于构建生成的最后一次运行的生成定义的项目。
替换中的文本源别名具有 textbox Drop。
单击“添加”按钮。 项目部分更新以显示所做的更改。
单击闪电形图标以启用持续部署:
启用此选项,每次新的生成时可执行部署。
一个持续部署触发器面板右侧显示。 单击切换按钮以启用该功能。 但并不需要启用拉取请求触发器。
单击外下拉列表中版本分支筛选器部分。 选择生成定义的默认分支选项。 此筛选器将导致仅对从 GitHub 存储库的生成触发发布主分支。
单击“保存”按钮。 单击确定在随后出现的按钮保存模式对话框。
单击环境 1框。 环境面板右侧显示。 更改环境 1中的文本环境名称的 textbox生产。
单击1 阶段,2 个任务中的链接生产框:
任务环境的选项卡将出现。
单击将 Azure 应用服务部署槽任务。 在右侧面板中显示其设置。
选择与中的应用服务相关联的 Azure 订阅Azure 订阅下拉列表。 选择后,单击Authorize按钮。
选择Web 应用从应用类型下拉列表。
选择mywebapp / < unique_number / > 从应用服务名称下拉列表。
选择AzureTutorial从资源组下拉列表。
选择暂存从槽下拉列表。
单击“保存”按钮。
将鼠标悬停默认发布管道名称。 单击铅笔图标以对其进行编辑。 使用MyFirstProject ASP.NET Core CD作为名称。
单击“保存”按钮。
打开SimpleFeedReader.sln Visual Studio 中。
在解决方案资源管理器中打开Pages\Index.cshtml。 更改<h2>Simple Feed Reader - V3</h2>
到<h2>Simple Feed Reader - V4</h2>
。
按Ctrl+Shift+B生成的应用。
将文件提交到 GitHub 存储库。 可以使用两种更改Visual Studio 中的页团队资源管理器选项卡上,或执行以下命令使用本地计算机的命令行界面:
git commit -a -m "upgraded to V4"
将更改推入主到分支原点远程的 GitHub 存储库:
git push origin master
GitHub 存储库中将显示提交主分支:
触发生成,因为在生成定义中启用持续集成触发器选项卡:
导航到排队选项卡Azure 管道 > 生成Azure DevOps 服务中的页。 已排队的生成显示分支和提交触发生成:
生成成功后,会发生到 Azure 的部署。 导航到在浏览器中的应用。 请注意,显示在标题中的"V4"文本:
生成定义已创建了同名MyFirstProject ASP.NET Core CI。 完成后,生成过程将产生 .zip文件包括要发布的资产。 发布管道将这些资产部署到 Azure。
生成定义任务选项卡列出了正在使用的各个步骤。 有五个生成任务。
还原—执行dotnet restore
命令还原应用程序的 NuGet 包。 默认包使用的源是 nuget.org。
构建—执行dotnet build --configuration release
命令以编译应用程序的代码。 这--configuration
选项用于生成代码,这是适用于部署到生产环境中的优化的版本。 修改BuildConfiguration在生成定义的变量变量选项卡上,如果需要调试配置,例如。
测试—执行dotnet test --configuration release --logger trx --results-directory <local_path_on_build_agent>
命令以运行应用的单元测试。 在 C# 项目匹配的任何执行单元测试的**/*Tests/*.csproj
glob 模式。 在保存测试结果 .trx文件在指定的位置--results-directory
选项。 如果任何测试失败,生成将失败,并且未部署。
备注
若要验证的单元测试工作,请修改SimpleFeedReader.Tests\Services\NewsServiceTests.cs特意中断的测试之一。 例如,更改Assert.True(result.Count > 0);
到Assert.False(result.Count > 0);
中Returns_News_Stories_Given_Valid_Uri
方法。 提交并推送到 GitHub 的更改。 生成被触发,但失败。 生成管道状态将变为失败。 再次还原更改、 提交并推送。 生成成功。
将发布—执行dotnet publish --configuration release --output <local_path_on_build_agent>
命令,生成 .zip要部署的项目文件。 --output
选项指定的发布位置 .zip文件。 表示通过指定位置预定义的变量名为$(build.artifactstagingdirectory)
。 该变量将扩展到本地路径,如c:\agent_work\1\a,生成代理上。
发布项目 — Publishes .zip生成文件发布任务。 该任务接受 .zip文件作为参数,这是预定义的变量的位置$(build.artifactstagingdirectory)
。 .Zip文件发布为一个名为文件夹drop。
单击生成定义摘要链接以查看与定义的生成历史记录:
在结果页上,单击与唯一的内部版本号对应的链接:
显示此特定生成的摘要。 单击项目选项卡,并请注意drop列出由生成内容生成的文件夹:
使用下载并浏览检查已发布的项目的链接。
发布管道已创建了同名MyFirstProject ASP.NET Core CD:
发布管道的两个主要组件是项目并环境。 单击框中的项目部分会显示以下窗格:
源 (生成定义) 值表示此发布管道链接到生成定义。 .Zip成功运行的生成定义所生成文件提供给生产环境以部署到 Azure。 单击1 阶段,2 个任务中的链接生产环境,若要查看发布管道任务:
发布管道包括两个任务:将 Azure 应用服务部署到槽并管理 Azure 应用服务-槽交换。 单击第一个任务将显示下面的任务配置:
Azure 订阅、 服务类型、 web 应用名称、 资源组和部署槽部署任务中定义。 包或文件夹文本框中保留 .zip要提取并部署到的文件路径暂存槽mywebapp<唯一数目 (_n)> web 应用。
单击该槽交换任务将显示下面的任务配置:
提供订阅、 资源组、 服务类型、 web 应用名称和部署槽详细信息。 与生成交换选中复选框。 因此,将位部署到暂存槽交换到生产环境。