概述
许多团队更喜欢使用YAML(另一种标记语言)定义他们的 CI/CD Pipelines,这使得我们与不使用YAML却可以使用相同的功能来实现CI/CD。如果我们想和管理其他源码文件一样管理YAML脚本文件,只需将它们的源文件添加到存储库的根目录中,就可以将YAML构建定义添加到项目中。Azure DevOps还为流行的项目类型提供默认模板,以及一个YAML设计器,以简化定义构建和发布任务的过程。
先决条件
- 完成 prerequisite instructions中的任务1。
练习1:在Azure DevOps中使用 YAML 将 CI/ CD Pipelines配置为代码
任务1:创建 Azure 资源
-
此实验需要将Parts Unlimited项目部署到 Azure app service. 因此,您需要一些必要的基础资源。从这里登陆 Azure: https://portal.azure.com.
-
点击 Create a resource 搜索 “web sql”.
-
选择 Web App + SQL 服务.
-
点击 Create.
-
为此 app service输入一个唯一名称,比如 “pul-yaml-yourname”. 选择 create a new 并命名为 “partsunlimited”.
-
选择 SQL Database. 点击 Create a new database 并命名为 “partsunlimited”.
-
选择 Target server 并点击 Create a new server. 输入一个唯一的名称,比如 “pul-yaml-youname” 并提供管理员凭据. 点击 Select 配置服务器配置
-
点击 Select 配置数据库.
-
点击 Create 创建资源,如果没有App Service Plan,会先创建一个。
-
创建需要挺长时间,我们这里先继续 下一步。
任务 2: 配置 Parts Unlimited 项目
-
在新的浏览器选项卡中导航到Azure DevOps上的团队项目。
-
导航到 Pipelines.
-
选择 现有的 PartsUnlimitedE2E pipeline.
-
从下拉 框中选择 Pause pipeline.
任务3:添加YAML构建定义
-
导航到 Pipelines hub.
-
点击 New pipeline,我们会创建一个基于YAML的管道。
-
选择 Azure Repos Git 为代码来源。
-
选择 PartsUnlimited 存储库.
-
选择 ASP.NET 模板。
-
检查一下YAML定义的内容。它将被保存为一个名为azure-pipelines.yml 的新文件,此文件位于存储库的根目录中,包含构建和测试典型 的ASP.Net项目 所需的所有内容。在这里,需要更新 pool 以指定构建应该使用Visual Studio 2017 Build VM。
name: Hosted VS2017 demands: - msbuild - visualstudio - vstest
-
点击 Save and run.
-
点击 Save and run 确认提交.
-
跟踪构建直到完成。 点击 Job 查看日志.
-
YAML文件中的每个任务都可供查看,包括任何警告和错误
-
关闭任务视图。
-
选择 Tests.
-
测试正如果我们预期的一样执行成功
任务4:向YAML定义添加持续交付
-
现在构建和测试已经成功,我们现在可以将部署添加到YAML定义中 。下等下拉框 Edit pipeline.
-
在 trigger 部分后面添加下面的代码,以定义YAML管道中的 Build 阶段。您可以定义您需要的任何阶段,以便更好地组织和跟踪管道进度。
stages: - stage: Build jobs: - job: Build
-
突出显示YAML文件的其余部分,并缩进四个空格(两个制表符)。这将简单地使用现有的构建定义,并将其重新定位为jobs节点的子节点。
-
在文件的底部,添加下面的配置以定义第二个阶段。
- stage: Deploy jobs: - job: Deploy steps:
-
将光标设置在YAML定义末尾的新行上,这将是添加新任务的位置。
-
选择 Azure App Service Deploy 任务.
-
选择Azure订阅,这是在前面创建的 Azure App Service。点击 Authorize 完成授权。
-
填写 App Service name ,值为前面创建的名称. 更新 Package or folder 为 ”$(System.ArtifactsDirectory)/drop/*.zip”. 点击 Add.
-
新添加的任务将添加到文件末尾的光标处
-
在编辑器中选择添加的任务时,将其缩进四个空格(两个选项卡),以便使其为 steps 的子任务。
-
需要注意的是,这两个阶段将独立运行。因此,如果没有特别考虑,第一个阶段的构建输出将不能用于第二个阶段。为此,我们将使用一个任务在构建阶段结束时发布构建输出,另一个任务在部署阶段开始时下载。将光标放在构建阶段末尾的空白行上。
-
搜索任务 “publish build” 并从搜索结果中选择Publish Build Artifacts。
-
点击 Add,按默认配置即可 这将把工件命名为 drop 并发布到一个位置.
-
将发布任务缩进四个空格(两个制表符)。您可能还想在前后添加空行,以便更容易阅读。
-
将光标放在部署阶段 steps 节点下的第一行。
-
搜索任务 “download build” 并选择 Download Build Artifacts 任务.
-
设置 Artifact name 为 “drop” 然后添加 Add.
-
将发布任务缩进四个空格(两个制表符)。您可能还想在前后添加空行,以便更容易阅读。
-
点击 Save 以保存更改。
-
确认 Save. 这将触发一个新的构建 。
-
返回 Pipelines 视图.
-
从 Runs 选项卡,点击新运行的构建打开它。注意,根据前面的YAML定义编辑,现在显示了多个阶段。
-
当 Build 完成时, 点击 Deploy 阶段.
-
展开 AzureRmWebAppDeployment 任务,查看在Azure部署期间执行的步骤。一旦任务完成,您的应用程序将运行在Azure上。
任务5:查看已部署的站点
-
返回Azure门户浏览器选项卡。
-
导航到之前创建的 app service。
-
选择 Configuration.
-
点击 defaultConnection .
-
将 Name 更新为 “DefaultConnectionString”, 这将用于连接Sql Database. 点击 Update.
-
点击 Save 应用更改.
-
返回 Overview tab.
-
点击 URL 打开你的应用程序
-
部署好的站 点应该能正常打开。