概述

许多团队更喜欢使用YAML(另一种标记语言)定义他们的 CI/CD Pipelines,这使得我们与不使用YAML却可以使用相同的功能来实现CI/CD。如果我们想和管理其他源码文件一样管理YAML脚本文件,只需将它们的源文件添加到存储库的根目录中,就可以将YAML构建定义添加到项目中。Azure DevOps还为流行的项目类型提供默认模板,以及一个YAML设计器,以简化定义构建和发布任务的过程。

先决条件

练习1:在Azure DevOps中使用 YAML 将 CI/ CD Pipelines配置为代码

任务1:创建 Azure 资源

  1. 此实验需要将Parts Unlimited项目部署到 Azure app service. 因此,您需要一些必要的基础资源。从这里登陆 Azure: https://portal.azure.com.

  2. 点击 Create a resource 搜索 “web sql”.

  3. 选择 Web App + SQL 服务.

  4. 点击 Create.

  5. 为此 app service输入一个唯一名称,比如 “pul-yaml-yourname”. 选择 create a new 并命名为 “partsunlimited”.

  6. 选择 SQL Database. 点击 Create a new database 并命名为 “partsunlimited”.

  7. 选择 Target server 并点击 Create a new server. 输入一个唯一的名称,比如 “pul-yaml-youname” 并提供管理员凭据. 点击 Select 配置服务器配置

  8. 点击 Select 配置数据库.

  9. 点击 Create 创建资源,如果没有App Service Plan,会先创建一个。

  10. 创建需要挺长时间,我们这里先继续 下一步。

任务 2: 配置 Parts Unlimited 项目

  1. 在新的浏览器选项卡中导航到Azure DevOps上的团队项目。

  2. 导航到 Pipelines.

  3. 选择 现有的 PartsUnlimitedE2E pipeline.

  4. 从下拉 框中选择 Pause pipeline.

任务3:添加YAML构建定义

  1. 导航到 Pipelines hub.

  2. 点击 New pipeline,我们会创建一个基于YAML的管道。

  3. 选择 Azure Repos Git 为代码来源。

  4. 选择 PartsUnlimited 存储库.

  5. 选择 ASP.NET 模板。

  6. 检查一下YAML定义的内容。它将被保存为一个名为azure-pipelines.yml 的新文件,此文件位于存储库的根目录中,包含构建和测试典型 的ASP.Net项目 所需的所有内容。在这里,需要更新 pool 以指定构建应该使用Visual Studio 2017 Build VM。

     name: Hosted VS2017
     demands:
     - msbuild
     - visualstudio
     - vstest
    

  7. 点击 Save and run.

  8. 点击 Save and run 确认提交.

  9. 跟踪构建直到完成。 点击 Job 查看日志.

  10. YAML文件中的每个任务都可供查看,包括任何警告和错误

  11. 关闭任务视图。

  12. 选择 Tests.

  13. 测试正如果我们预期的一样执行成功

任务4:向YAML定义添加持续交付

  1. 现在构建和测试已经成功,我们现在可以将部署添加到YAML定义中 。下等下拉框 Edit pipeline.

  2. trigger 部分后面添加下面的代码,以定义YAML管道中的 Build 阶段。您可以定义您需要的任何阶段,以便更好地组织和跟踪管道进度。

     stages:
     - stage: Build
       jobs:
       - job: Build
    

  3. 突出显示YAML文件的其余部分,并缩进四个空格(两个制表符)。这将简单地使用现有的构建定义,并将其重新定位为jobs节点的子节点。

  4. 在文件的底部,添加下面的配置以定义第二个阶段。

     - stage: Deploy
       jobs:
       - job: Deploy
         steps:
    

  5. 将光标设置在YAML定义末尾的新行上,这将是添加新任务的位置。

  6. 选择 Azure App Service Deploy 任务.

  7. 选择Azure订阅,这是在前面创建的 Azure App Service。点击 Authorize 完成授权。

  8. 填写 App Service name ,值为前面创建的名称. 更新 Package or folder”$(System.ArtifactsDirectory)/drop/*.zip”. 点击 Add.

  9. 新添加的任务将添加到文件末尾的光标处

  10. 在编辑器中选择添加的任务时,将其缩进四个空格(两个选项卡),以便使其为 steps 的子任务。

  11. 需要注意的是,这两个阶段将独立运行。因此,如果没有特别考虑,第一个阶段的构建输出将不能用于第二个阶段。为此,我们将使用一个任务在构建阶段结束时发布构建输出,另一个任务在部署阶段开始时下载。将光标放在构建阶段末尾的空白行上。

  12. 搜索任务 “publish build” 并从搜索结果中选择Publish Build Artifacts

  13. 点击 Add,按默认配置即可 这将把工件命名为 drop 并发布到一个位置.

  14. 将发布任务缩进四个空格(两个制表符)。您可能还想在前后添加空行,以便更容易阅读。

  15. 将光标放在部署阶段 steps 节点下的第一行。

  16. 搜索任务 “download build” 并选择 Download Build Artifacts 任务.

  17. 设置 Artifact name 为 “drop” 然后添加 Add.

  18. 将发布任务缩进四个空格(两个制表符)。您可能还想在前后添加空行,以便更容易阅读。

  19. 点击 Save 以保存更改。

  20. 确认 Save. 这将触发一个新的构建 。

  21. 返回 Pipelines 视图.

  22. Runs 选项卡,点击新运行的构建打开它。注意,根据前面的YAML定义编辑,现在显示了多个阶段。

  23. Build 完成时, 点击 Deploy 阶段.

  24. 展开 AzureRmWebAppDeployment 任务,查看在Azure部署期间执行的步骤。一旦任务完成,您的应用程序将运行在Azure上。

任务5:查看已部署的站点

  1. 返回Azure门户浏览器选项卡。

  2. 导航到之前创建的 app service。

  3. 选择 Configuration.

  4. 点击 defaultConnection .

  5. Name 更新为 “DefaultConnectionString”, 这将用于连接Sql Database. 点击 Update.

  6. 点击 Save 应用更改.

  7. 返回 Overview tab.

  8. 点击 URL 打开你的应用程序

  9. 部署好的站 点应该能正常打开。