使用 Azure Pipelines 启用持续集成
实验室要求
-
本实验室需要使用 Microsoft Edge 或支持 Azure DevOps 的浏览器。
-
设置 Azure DevOps 组织:如果还没有可用于本实验室的 Azure DevOps 组织,请按照创建组织或项目集合中的说明创建一个。
实验室概述
在本实验室中,可了解如何使用 YAML 在 Azure DevOps 中定义生成管道。 这些管道用于以下两种方案:
- 作为拉取请求验证过程的一部分。
- 作为持续集成实现的一部分。
目标
完成本实验室后,你将能够:
- 将生成验证包含在拉取请求中。
- 使用 YAML 将 CI 管道配置为代码。
预计用时:30 分钟
说明
练习 0:(如已完成,则跳过)配置实验室先决条件
在本练习中,你将设置实验室先决条件,其中包括设置新的 Azure DevOps 项目,该项目的存储库基于 eShopOnWeb。
任务 1:(如果已完成,请跳过此任务)创建和配置团队项目
在此任务中,你将创建一个 eShopOnWeb Azure DevOps 项目,供多个实验室使用。
- 在实验室计算机上,在浏览器窗口中打开 Azure DevOps 组织。 单击“新建项目”。 将项目命名为 eShopOnWeb,并将其他字段保留默认值。 单击“创建”。
任务 2:(如果已完成,请跳过此任务)导入 eShopOnWeb Git 存储库
在此任务中,你将导入将由多个实验室使用的 eShopOnWeb Git 存储库。
-
在实验室计算机上,在浏览器窗口中打开 Azure DevOps 组织和以前创建的 eShopOnWeb 项目。 单击“Repos > 文件”、“导入存储库”。 选择“导入”。 在“导入 Git 存储库”窗口中,粘贴以下 URL https://github.com/MicrosoftLearning/eShopOnWeb.git 并单击“导入”:
-
存储库按以下方式组织:
- .ado 文件夹包含 Azure DevOps YAML 管道。
- 设置 .devcontainer 文件夹容器,使用容器(在 VS Code 或 GitHub Codespaces 中本地进行)开发。
- infra 文件夹包含某些实验室方案中使用的 Bicep 和 ARM 基础结构即代码模板。**
- .github 文件夹容器 YAML GitHub 工作流定义。
- src 文件夹包含实验室方案中使用的 .NET 网站。
任务 3:(如果已完成,请跳过此任务)将主分支设置为默认分支
- 转到“Repos”>“分支”**。
- 将鼠标指针悬停在主分支上,然后单击列右侧的省略号。
- 单击“设置为默认分支”。
练习 1:将生成验证包含在拉取请求中
在本练习中,你将包括用于验证拉取请求的生成验证。
任务 1:导入 YAML 生成定义
在此任务中,你将导入 YAML 生成定义,将它用作分支策略来验证拉取请求。
我们首先导入名为 eshoponweb-ci-pr.yml 的生成管道。
- 转到“管道 > 管道”
- 单击“创建管道”或“新建管道”按钮
- 选择“Azure Repos Git (YAML)”
- 选择 eShopOnWeb 存储库
- 选择“现有 Azure Pipelines YAML 文件”
-
选择主分支和 /.ado/eshoponweb-ci-pr.yml 文件,然后单击“继续”****
生成定义由以下任务构成:
- DotNet 还原:使用 NuGet 包还原,可以安装项目的所有依赖项,而无需将其存储在源代码管理中。
- DotNet 生成:生成项目及其所有依赖项。
- DotNet 测试:用于执行单元测试的 .Net 测试驱动程序。
- DotNet 发布:将应用程序及其依赖项发布到文件夹以部署到托管系统。 在本例中,它是 Build.ArtifactStagingDirectory。
- 在“查看管道 YAML”窗格上,单击“保存”按钮旁边方向朝下的插入符号,单击“保存”。
- 管道将采用基于项目名称的名称。 让我们重命名它,以便更好地识别管道。 转到“管道 > 管道”,然后单击最近创建的管道。 单击省略号和“重命名/移动”选项**。 将其命名为 eshoponweb-ci-pr,然后单击“保存”。
任务 2:分支策略
在此任务中,你要将策略添加到主分支,并且仅允许使用符合定义的策略的拉取请求进行更改。 你想确保分支中的更改在合并之前经过了检查。
- 转到“Repos > 分支”部分。
- 在“分支”窗格的“我的”选项卡上,将鼠标指针悬停在主分支条目上方,以显示右侧的省略号。
- 单击弹出菜单中的省略号,选择“分支策略”。
- 在存储库设置的 main 选项卡上,启用“要求最小审阅者数”选项。 添加 1 个审阅者并选中“允许请求者批准其自己的更改”框(因为你是实验室项目中的唯一用户)
- 在存储库设置的主选项卡上的“生成验证”部分中,单击“+”(添加新生成策略),然后在“生成管道”列表中选择“eshoponweb-ci-pr”,然后单击“保存”。
任务 3:使用拉取请求
在此任务中,你将使用 Azure DevOps 门户创建拉取请求,并使用新分支将更改合并到受保护的主分支中。
- 导航到 eShopOnWeb 导航中的“Repos”部分,然后单击“分支”。
- 基于主分支创建名为“Feature01”的新分支。
- 单击“Feature01”,导航到作为 Feature01 分支的一部分的 /eShopOnWeb/src/Web/Program.cs 文件
- 单击右上角的“编辑”按钮
-
在第一行进行以下更改:
// Testing my PR - 单击“提交>提交”(保留默认提交消息)。
- 此时会弹出一条消息,建议创建拉取请求(因为 Feature01 分支现在的改动比主分支要多)。 单击“创建拉取请求”。
- 在“新建拉取请求”选项卡中,保留默认值并单击“创建”。
- 拉取请求将根据应用于目标主分支的策略显示一些挂起的要求。
- 至少 1 个用户应查看并批准更改。
- 生成验证,你将看到生成 eshoponweb-ci-pr 已自动触发
- 在所有验证都成功后,单击右上角的“批准”。 现在,从“设置自动完成”下拉列表中,可以单击“完成”。
- 在“完成拉取请求”选项卡上,单击“完成合并”
练习 2:使用 YAML 将 CI 管道配置为代码
在本练习中,你将使用 YAML 将 CI 管道配置为代码。
任务 1:为 CI 导入 YAML 生成定义
在此任务中,你将添加用于实现持续集成的 YAML 生成定义。
让我们首先导入名为 eshoponweb-ci.yml 的 CI 管道。
- 转到“管道 > 管道”。
- 单击“新建管道”按钮。
- 选择“Azure Repos Git (YAML)”。
- 选择“eShopOnWeb”存储库。
- 选择“现有 Azure Pipelines YAML 文件”。
-
选择主分支和 /.ado/eshoponweb-ci.yml 文件,然后单击“继续”。****
CI 定义由以下任务构成:
- DotNet 还原:使用 NuGet 包还原,可以安装项目的所有依赖项,而无需将其存储在源代码管理中。
- DotNet 生成:生成项目及其所有依赖项。
- DotNet 测试:用于执行单元测试的 .Net 测试驱动程序。
- DotNet 发布:将应用程序及其依赖项发布到文件夹以部署到托管系统。 在本例中,它是 Build.ArtifactStagingDirectory。
- 发布项目 - 网站:发布(在上一步中创建的)应用项目,并将其作为管道项目提供。
- 发布项目 - Bicep:发布基础结构项目(Bicep 文件),并将其作为管道项目提供。
- 单击“运行”,等待管道成功执行。
任务 2:启用持续集成
默认生成管道定义不启用持续集成。
- 单击右上角“运行新管道”按钮附近的省略号菜单下的“编辑管道”选项****
-
现在,需要将 # trigger: 和 # - main 行替换为以下代码:
trigger: branches: include: - main paths: include: - src/web/*如果对主分支和 Web 应用程序代码(src/web 文件夹)进行了任何更改,此操作就会自动触发生成管道。
由于你启用了分支策略,需要通过拉取请求传递才能更新代码。
- 单击“验证并保存”按钮,以验证并保存管道定义。
- 选择“为此提交创建新分支”。**
- 保留默认分支名称并选中“启动拉取请求”。
- 单击“保存” 。
- 管道将采用基于项目名称的名称。 让我们重命名它,以便更好地识别管道。 转到“管道 > 管道”,然后单击最近创建的管道。 单击省略号和“重命名/移动”选项**。 将其命名为 eshoponweb-ci,然后单击“保存”。
- 转到“Repos”>“拉取请求”。**
- 单击“更新 Azure Pipelines 的 eshoponweb-ci.yml”拉取请求。**
- 在所有验证都成功后,单击右上角的“批准”。 现在,可以单击“完成”。
- 在“完成拉取请求”选项卡上,单击“完成合并”
任务 3:测试 CI 管道
在此任务中,你将创建一个拉取请求,使用新分支将更改合并到受保护的主分支,并自动触发 CI 管道。
- 导航到“Repos”部分,然后单击“分支”。
- 基于主分支创建名为“Feature02”的新分支。****
- 单击新的“Feature02”分支。**
- 导航到 /eShopOnWeb/src/Web/Program.cs 文件,然后单击右上角的“编辑”。****
-
删除第一行:
// Testing my PR - 单击“提交>提交”(保留默认提交消息)。
- 此时会弹出一条消息,建议创建拉取请求(因为 Feature02 分支现在的改动比主分支要多)。
- 单击“创建拉取请求”。
- 在“新建拉取请求”选项卡中,保留默认值并单击“创建”。
- 拉取请求将根据应用于目标主分支的策略显示一些挂起的要求。
- 在所有验证都成功后,单击右上角的“批准”。 现在,从“设置自动完成”下拉列表中,可以单击“完成”。
- 在“完成拉取请求”选项卡上,单击“完成合并”
- 返回“管道 > 管道”,你会注意到在代码合并后,自动触发了生成 eshoponweb-ci。
- 单击“eshoponweb-ci”生成,然后选择最后的运行。
- 成功执行后,单击“相关”>“已发布”,检查已发布的项目:
- Bicep:基础结构项目。
- 网站:应用项目。
审阅
在本实验室中,你启用了使用生成定义的拉取请求验证,并已在 Azure DevOps 中使用 YAML 将 CI 管道配置为代码。