持续集成和部署

持续集成和部署

在上一章,您创建简单的源读取器应用的本地 Git 存储库。 在本章中,会将该代码发布到 GitHub 存储库并构建使用 Azure 管道的 Azure DevOps 服务管道。 管道可使持续生成和部署的应用程序。 GitHub 存储库的任何提交触发生成和部署到 Azure Web 应用的过渡槽。

在本部分中,将完成以下任务:

  • 将应用程序的代码发布到 GitHub
  • 断开连接本地 Git 部署
  • 创建 Azure DevOps 组织
  • 在 Azure DevOps 服务中创建团队项目
  • 创建生成定义
  • 创建发布管道
  • 将更改提交到 GitHub 并自动部署到 Azure
  • 检查 Azure 管道管道

将应用程序的代码发布到 GitHub

  1. 打开浏览器窗口,并导航到https://github.com

  2. 单击 + 标头中的下拉列表中,选择新的存储库:

    新的 GitHub 存储库选项

  3. 选择你的帐户所有者下拉列表中,并输入简单源阅读器存储库名称文本框中。

  4. 单击创建存储库按钮。

  5. 打开本地计算机的命令行界面。 导航到在其中的目录简单源阅读器存储 Git 存储库。

  6. 重命名现有原点到远程上游 请执行以下命令:

    git remote rename origin upstream
    
  7. 添加一个新原点远程指向您的 GitHub 上的存储库副本。 请执行以下命令:

    git remote add origin https://github.com/<GitHub_username>/simple-feed-reader/
    
  8. 将本地 Git 存储库发布到新创建的 GitHub 存储库。 请执行以下命令:

    git push -u origin master
    
  9. 打开浏览器窗口,并导航到https://github.com/<GitHub_username>/simple-feed-reader/ 验证你的代码会在 GitHub 存储库中。

断开连接本地 Git 部署

删除本地 Git 部署通过执行以下步骤。 Azure 管道 (Azure DevOps 服务) 都将替换和增强该功能。

  1. 打开Azure 门户,并导航到暂存 (mywebapp<unique_number>/暂存) Web 应用。 可以通过输入快速位于 Web 应用暂存门户的搜索框中:

    过渡 Web 应用搜索词

  2. 单击部署中心 将显示新面板。 单击断开连接来删除已添加在上一章中的本地 Git 源控件配置。 通过单击确认删除操作按钮。

  3. 导航到mywebapp < unique_number > 应用服务。 请注意,可以使用门户的搜索框中快速找到应用服务。

  4. 单击部署中心 将显示新面板。 单击断开连接来删除已添加在上一章中的本地 Git 源控件配置。 通过单击确认删除操作按钮。

创建 Azure DevOps 组织

  1. 打开浏览器并导航到Azure DevOps 的组织创建页

  2. 键入唯一名称选取一个易记名称文本框中以形成用于访问你的 Azure DevOps 组织的 URL。

  3. 选择Git单选按钮,因为代码托管在 GitHub 存储库。

  4. 单击“继续”按钮。 稍等片刻、 帐户和团队项目之后, 名为MyFirstProject,创建。

    Azure DevOps 的组织创建页

  5. 打开指示 Azure DevOps 的组织和项目可供使用的确认电子邮件。 单击开始你的项目按钮:

    启动项目按钮

  6. 浏览器将打开 <account_name>。 visualstudio.com 单击MyFirstProject链接以开始配置项目的 DevOps 管道。

配置 Azure 管道管道

有三个不同的步骤才能完成。 完成操作的 DevOps 管道中的以下三个部分结果中的步骤。

授予 Azure DevOps 到 GitHub 存储库的访问权限

  1. 展开或从外部存储库的代码生成accordion。 单击安装程序生成按钮:

    安装程序生成按钮

  2. 选择GitHub选项从选择一个源部分:

    选择源-GitHub

  3. 授权是必需的 Azure DevOps 可以访问 GitHub 存储库之前。 输入 < GitHub_username > GitHub 连接连接名称文本框中。 例如:

    GitHub 的连接名称

  4. 如果你的 GitHub 帐户启用双因素身份验证,则需要个人访问令牌。 在这种情况下,单击使用 GitHub 个人访问令牌的授权链接。 请参阅正式 GitHub 个人访问令牌创建说明有关的帮助。 存储库所需权限的作用域。 否则,请单击使用 OAuth 授权按钮。

  5. 出现提示时,登录到你的 GitHub 帐户。 然后,选择授权授予对你的 Azure DevOps 组织访问权限。 如果成功,会创建新的服务终结点。

  6. 单击省略号按钮旁边存储库按钮。 选择 < GitHub_username > / 简单源阅读器从列表中的存储库。 单击选择按钮。

  7. 选择从分支手动和计划生成的默认分支下拉列表。 单击“继续”按钮。 模板选择页会显示。

创建生成定义

  1. 从模板选择页中,输入ASP.NET Core在搜索框中:

    ASP.NET Core 模板页上的搜索

  2. 显示模板搜索结果。 将鼠标悬停ASP.NET Core模板,然后单击应用按钮。

  3. 任务显示的生成定义选项卡。 单击“触发器” 选项卡。

  4. 检查启用持续集成框。 的分支筛选器部分中,确认类型下拉列表设置为Include 设置分支规范下拉列表master

    启用持续集成设置

    这些设置会导致要进行任何更改推送到时触发的生成GitHub 存储库分支。 在中测试持续集成更改提交到 GitHub 并自动部署到 Azure部分。

  5. 单击保存并排队按钮,然后选择保存选项:

    保存按钮

  6. 下面的模式对话框会显示:

    保存生成定义的模式对话框

    使用的默认文件夹 \,然后单击保存按钮。

创建发布管道

  1. 单击版本你的团队项目的选项卡。 单击新的管道按钮。

    版本选项卡的定义新建按钮

    模板选择窗格会显示。

  2. 从模板选择页中,输入应用服务在搜索框中:

    发布管道模板搜索框

  3. 显示模板搜索结果。 将鼠标悬停Azure 应用服务部署槽模板,然后单击应用按钮。 管道发布管道的选项卡将出现。

    发布管道管道选项卡

  4. 单击按钮项目框。 添加项目面板将显示:

    发布管道-添加项目面板

  5. 选择构建磁贴源类型部分。 此类型,用于对生成定义发布管道的链接。

  6. 选择MyFirstProject项目下拉列表。

  7. 选择生成定义名称, MyFirstProject ASP.NET Core CI,从源 (生成定义) 下拉列表。

  8. 选择最新默认版本下拉列表。 此选项可用于构建生成的最后一次运行的生成定义的项目。

  9. 替换中的文本源别名具有 textbox Drop

  10. 单击“添加”按钮。 项目部分更新以显示所做的更改。

  11. 单击闪电形图标以启用持续部署:

    发布管道项目的闪电形图标

    启用此选项,每次新的生成时可执行部署。

  12. 一个持续部署触发器面板右侧显示。 单击切换按钮以启用该功能。 但并不需要启用拉取请求触发器

  13. 单击下拉列表中版本分支筛选器部分。 选择生成定义的默认分支选项。 此筛选器将导致仅对从 GitHub 存储库的生成触发发布分支。

  14. 单击“保存”按钮。 单击确定在随后出现的按钮保存模式对话框。

  15. 单击环境 1框。 环境面板右侧显示。 更改环境 1中的文本环境名称的 textbox生产

    发布管道的环境名称文本框

  16. 单击1 阶段,2 个任务中的链接生产框:

    发布管道的生产环境 link.png

    任务环境的选项卡将出现。

  17. 单击将 Azure 应用服务部署槽任务。 在右侧面板中显示其设置。

  18. 选择与中的应用服务相关联的 Azure 订阅Azure 订阅下拉列表。 选择后,单击Authorize按钮。

  19. 选择Web 应用应用类型下拉列表。

  20. 选择mywebapp / < unique_number / >应用服务名称下拉列表。

  21. 选择AzureTutorial资源组下拉列表。

  22. 选择暂存下拉列表。

  23. 单击“保存”按钮。

  24. 将鼠标悬停默认发布管道名称。 单击铅笔图标以对其进行编辑。 使用MyFirstProject ASP.NET Core CD作为名称。

    发布管道名称

  25. 单击“保存”按钮。

将更改提交到 GitHub 并自动部署到 Azure

  1. 打开SimpleFeedReader.sln Visual Studio 中。

  2. 在解决方案资源管理器中打开Pages\Index.cshtml 更改<h2>Simple Feed Reader - V3</h2><h2>Simple Feed Reader - V4</h2>

  3. Ctrl+Shift+B生成的应用。

  4. 将文件提交到 GitHub 存储库。 可以使用两种更改Visual Studio 中的页团队资源管理器选项卡上,或执行以下命令使用本地计算机的命令行界面:

    git commit -a -m "upgraded to V4"
    
  5. 将更改推入到分支原点远程的 GitHub 存储库:

    git push origin master
    

    GitHub 存储库中将显示提交分支:

    主分支中的 GitHub 提交

    触发生成,因为在生成定义中启用持续集成触发器选项卡:

    启用持续集成

  6. 导航到排队选项卡Azure 管道 > 生成Azure DevOps 服务中的页。 已排队的生成显示分支和提交触发生成:

    排队的生成

  7. 生成成功后,会发生到 Azure 的部署。 导航到在浏览器中的应用。 请注意,显示在标题中的"V4"文本:

    更新的应用程序

检查 Azure 管道管道

生成定义

生成定义已创建了同名MyFirstProject ASP.NET Core CI 完成后,生成过程将产生 .zip文件包括要发布的资产。 发布管道将这些资产部署到 Azure。

生成定义任务选项卡列出了正在使用的各个步骤。 有五个生成任务。

生成定义任务

  1. 还原—执行dotnet restore命令还原应用程序的 NuGet 包。 默认包使用的源是 nuget.org。

  2. 构建—执行dotnet build --configuration release命令以编译应用程序的代码。 --configuration选项用于生成代码,这是适用于部署到生产环境中的优化的版本。 修改BuildConfiguration在生成定义的变量变量选项卡上,如果需要调试配置,例如。

  3. 测试—执行dotnet test --configuration release --logger trx --results-directory <local_path_on_build_agent>命令以运行应用的单元测试。 在 C# 项目匹配的任何执行单元测试的**/*Tests/*.csprojglob 模式。 在保存测试结果 .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 的更改。 生成被触发,但失败。 生成管道状态将变为失败 再次还原更改、 提交并推送。 生成成功。

  4. 将发布—执行dotnet publish --configuration release --output <local_path_on_build_agent>命令,生成 .zip要部署的项目文件。 --output选项指定的发布位置 .zip文件。 表示通过指定位置预定义的变量名为$(build.artifactstagingdirectory) 该变量将扩展到本地路径,如c:\agent_work\1\a,生成代理上。

  5. 发布项目 — 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 应用名称和部署槽详细信息。 与生成交换选中复选框。 因此,将位部署到暂存槽交换到生产环境。

其他阅读材料