创建第一个管道

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

这是一篇有关使用 Azure Pipelines 生成示例应用程序的分步指南。 本指南使用使用 YAML 管道编辑器配置的 YAML 管道。 如果想要改用经典管道,请参阅 “定义经典管道”。

先决条件 - Azure DevOps

确保具有以下内容:

  • GitHub 帐户,可在其中创建存储库。 免费创建一个

  • Azure DevOps 组织。 免费创建一个。 如果你的团队已创建帐户,请确保你是要使用的 Azure DevOps 项目的管理员。

  • 能够在 Microsoft 托管的代理上运行管道。 可以购买并行作业,也可以请求免费层。

创建第一个管道

获取 Java 示例代码

若要开始,请将以下存储库分叉到 GitHub 帐户中。

https://github.com/MicrosoftDocs/pipelines-java

创建第一个 Java 管道

  1. 登录到 Azure DevOps 组织并转到项目。

  2. 转到“管道”,然后选择“新建管道”。

  3. 完成向导中的各个步骤。首先选择“GitHub”作为源代码位置。

  4. 可能会重定向到 GitHub 进行登录。 如果是这样,请输入 GitHub 凭据。

  5. 看到存储库列表时,请选择你的存储库。

  6. 你可能会被重定向到 GitHub 来安装 Azure Pipelines 应用。 如果是这样,请选择“批准并安装”。

  1. Azure Pipelines 将分析存储库,并推荐 Maven 管道模板。

  2. 显示新管道时,请查看 YAML 以查看其用途。 准备就绪后,选择“保存并运行”。

  3. 系统会提示将新 azure-pipelines.yml 文件提交到存储库。 对消息感到满意后,选择“ 保存”并再次运行

    如果要监视管道的操作,请选择生成作业。

    你刚刚创建并运行了我们为你自动创建的管道,因为你的代码似乎与 Maven 模板是一个很好的匹配项。

    现在,存储库中有一个正在运行的 YAML 管道 (azure-pipelines.yml) ,可供你自定义!

  4. 准备好对管道进行更改时,请在“管道”页中选择它,然后编辑azure-pipelines.yml该文件。

详细了解如何在管道中使用 Java

向存储库添加状态锁屏提醒

许多开发人员喜欢通过在他们的存储库中显示状态徽章来表明他们保持高代码质量。

状态锁屏提醒显示 Azure 管道已成功

将状态锁屏提醒复制到剪贴板:

  1. 在 Azure Pipelines 中,转到 “管道 ”页以查看管道列表。 选择在上一部分中创建的管道。

  2. 选择 ,然后选择 “状态锁屏提醒”。

  3. 选择 “状态锁屏提醒”。

  4. 从“示例 markdown”部分复制示例 Markdown。

现在,在剪贴板中使用锁屏提醒 Markdown,请在 GitHub 中执行以下步骤:

  1. 转到文件列表,然后选择 Readme.md。 选择要编辑的铅笔图标。

  2. 将状态锁屏提醒 Markdown 粘贴到文件开头。

  3. 将更改提交到 main 分支。

  4. 请注意,状态锁屏提醒显示在存储库的说明中。

若要为专用项目配置对锁屏提醒的匿名访问,

  1. 导航到 项目设置

  2. 打开“管道”下的“设置”选项卡

  3. “常规”下切换“禁用匿名访问锁屏提醒”滑块

注意

即使在专用项目中,默认情况下也会启用匿名锁屏提醒访问。 启用匿名锁屏提醒访问后,组织外部的用户可以通过锁屏提醒状态 API 查询项目名称、分支名称、作业名称以及生成状态等信息。

由于刚刚更改 Readme.md 了此存储库中的文件,因此 Azure Pipelines 会根据存储库根目录的文件中的 azure-pipelines.yml 配置自动生成代码。 返回 Azure Pipelines,观察新运行出现。 每次进行编辑时,Azure Pipelines 都会启动新的运行。

注意

在 Microsoft Team Foundation Server (TFS) 2018 和更低版本中,生成和发布管道被称为“定义”,运行被称为“生成”,服务连接被称为“服务终结点”,阶段被称为“环境”,而作业被称为“阶段” 。

我们将介绍如何在 2019 Azure DevOps Server中使用经典编辑器创建打印“Hello world”的生成和发布。

我们将向你展示如何使用 TFS 中的经典编辑器创建生成和打印“Hello world”的版本。

先决条件

初始化存储库

如果项目中已有存储库,可以跳到下一步: 跳到将脚本添加到存储库

  1. 转到Azure Repos。 (上一个导航) 中的 代码 中心

    存储库文件

  2. 如果项目为空,你将在屏幕中受到问候,以帮助将代码添加到存储库。 选择底部选项以使用readme文件初始化存储库:

    初始化存储库

  1. 单击顶部导航中的 “代码 ”导航到存储库。

  2. 如果项目为空,你将在屏幕中受到问候,以帮助将代码添加到存储库。 选择底部选项以使用readme文件初始化存储库:

    初始化存储库

将脚本添加到存储库

创建打印的 Hello worldPowerShell 脚本。

  1. 转到Azure Repos

  2. 添加文件。

    在“文件”选项卡上的存储库节点上,选择“新建文件”选项

  3. 在对话框中,为新文件命名并创建它。

    HelloWorld.ps1
    
  4. 复制并粘贴此脚本。

    Write-Host "Hello world"
    
  5. 提交 (保存文件) 。

  1. 转到 代码 中心。

  2. 添加文件。

  1. 在对话框中,为新文件命名并创建它。

    HelloWorld.ps1
    
  2. 复制并粘贴此脚本。

    Write-Host "Hello world"
    
  3. 提交 (保存文件) 。

在本教程中,我们的重点是 CI/CD,因此我们将代码部件保持简单。 我们在 Web 浏览器中直接在 Azure Repos Git 存储库中工作。

准备好开始生成和部署真实应用时,可以将各种版本控制客户端和服务与 Azure Pipelines CI 生成配合使用。 了解详细信息

创建生成管道

创建打印“Hello world”的生成管道。

  1. 选择 Azure Pipelines,它应会自动导航到 “生成 ”页。

    转到“生成”选项卡

  2. 创建新管道。

    选择“生成”选项卡按钮

    对于新的 Azure DevOps 用户,这会自动将你带到 YAML 管道创建体验。 若要访问经典编辑器并完成本指南,必须关闭新的 YAML 管道创建体验预览功能

    单击屏幕右上角的设置,然后单击预览功能

    单击切换以关闭 yaml 预览功能

  3. 确保 项目存储库和默认 分支 与创建脚本的位置匹配。

  4. 空作业开始。

  5. 在左侧,选择 “管道 ”并指定要使用的任何 名称 。 对于 代理池,请选择 “托管 VS2017”。

  6. 在左侧,选择加号 ( + ) 将任务添加到 作业 1。 在右侧,选择 “实用工具 ”类别,从列表中选择 PowerShell 任务,然后选择“ 添加”。

    将生成任务添加到作业

  7. 在左侧,选择新的 PowerShell 脚本任务。

  8. 对于 脚本路径 参数,选择 用于浏览存储库的按钮,然后选择创建的脚本。

    选择脚本

  9. 选择“保存并排队”,然后选择“保存”。

  1. 选择 “生成”和“发布”,然后选择“ 生成”。

    选择“生成”选项卡

  2. 创建新管道。

    创建新管道

  3. 空管道开始

  4. 选择 “管道 ”并指定要使用的任何 名称 。 对于 代理池,请选择 “默认值”。

  5. 在左侧,选择 “+ 添加任务 ”以将任务添加到作业,然后在右侧选择 “实用工具 ”类别,选择 PowerShell 任务,然后选择“ 添加”。

    将任务添加到作业

  6. 在左侧,选择新的 PowerShell 脚本任务。

  7. 对于 脚本路径 参数,选择 用于浏览存储库的按钮,然后选择创建的脚本。

    选择 PowerShell 任务

  8. 选择“保存并排队”,然后选择“保存”。

生成管道是定义自动化生成管道的实体。 在生成管道中,将编写一组任务,每个任务在生成中执行一个步骤。 任务目录提供了一组丰富的任务,可供你开始使用。 还可以将 PowerShell 或 shell 脚本添加到生成管道。

从生成发布项目

典型的生成生成生成一个项目,然后可以部署到发布的各个阶段。 为了以简单方式演示该功能,我们只需将脚本发布为项目即可。

  1. “任务 ”选项卡上,选择加号 ( + ) 将任务添加到 作业 1

  2. 选择 “实用工具 ”类别,选择“ 发布生成项目 ”任务,然后选择“ 添加”。

    添加发布项目任务

    发布路径:选择要 浏览的按钮,然后选择创建的脚本。

    项目名称:输入 drop

    项目发布位置:选择 Azure Artifacts/TFS

  1. “任务 ”选项卡上,选择“ 添加任务”。

  2. 选择 “实用工具 ”类别,选择“ 发布生成项目 ”任务,然后选择“ 添加”。

    选择“添加”以添加发布项目任务

    发布路径:选择要 浏览的按钮,然后选择创建的脚本。

    项目名称:输入 drop

    项目类型:选择 服务器

项目是要生成的文件。 项目几乎可以是团队测试或部署应用所需的任何内容。 例如,你有一个.DLL和.EXE可执行文件和 。C# 或 C++ .NET Windows 应用的 PDB 符号文件。

为了让你能够生成项目,我们提供工具,例如使用模式匹配进行复制,以及一个暂存目录,你可以在其中收集项目,然后再发布它们。 请参阅 Azure Pipelines 中的项目

启用持续集成 (CI)

  1. 选择“触发器”选项卡。

  2. 启用 持续集成

生成管道上的持续集成触发器指示每当提交代码更改时,系统都应自动对新生成进行排队。 你可以使触发器更常规或更具体,还可以按夜间) 计划生成 (。 请参阅 生成触发器

保存并排队生成

手动保存并排队生成并测试生成管道。

  1. 选择 “保存 & 队列”,然后选择“ 保存 & 队列”。

  2. 在对话框中,再次选择 “保存 & 队列 ”。

    这会在 Microsoft 托管的代理上对新生成进行排队。

  3. 你会看到指向页面顶部新生成的链接。

    生成控制台

    选择链接可监视新生成,因为它发生。 分配代理后,你将开始看到生成的实时日志。 请注意,PowerShell 脚本作为生成一部分运行,并将“Hello world”打印到控制台。

    在生成控制台中观看

  4. 转到生成摘要。 在生成的 “项目 ”选项卡上,请注意脚本作为项目发布。

    打开生成控制台以查看项目

  1. 选择 “保存 & 队列”,然后选择“ 保存 & 队列”。

  2. 在对话框中,再次选择 “保存 & 队列 ”。

    这会在 Microsoft 托管的代理上对新生成进行排队。

  3. 你会看到指向页面顶部新生成的链接。

    转到生成控制台

    选择链接可监视新生成,因为它发生。 分配代理后,你将开始看到生成的实时日志。 请注意,PowerShell 脚本作为生成一部分运行,并将“Hello world”打印到控制台。


  1. 转到生成摘要。

    生成控制台链接以生成摘要

  2. 在生成的 “项目 ”选项卡上,请注意脚本作为项目发布。

    项目资源管理器

可以通过导航到 Azure Pipelines 中的“生成”选项卡,随时查看所有生成摘要或钻取每个生成的日志。 对于每个生成,还可以查看生成的提交列表以及与每个提交关联的工作项。 还可以在每个生成中运行测试并分析测试失败。

添加一些变量并将更改提交到脚本

我们将一些生成变量传递给脚本,使管道更有趣。 然后,我们将提交对脚本的更改,并监视 CI 管道自动运行以验证更改。

  1. 编辑生成管道。

  2. “任务 ”选项卡上,选择 PowerShell 脚本任务。

  3. 添加这些参数。

在生成控制台中打开 PowerShell 任务

参数

-greeter "$(Build.RequestedFor)" -trigger "$(Build.Reason)"

最后,保存生成管道。

接下来,将参数添加到脚本中。

  1. 转到Azure Repos中的文件 (上一个导航和 TFS) 中的代码中心。

  2. 选择 HelloWorld.ps1 文件,然后 编辑 该文件。

  3. 按如下所示更改脚本:

    Param(
    [string]$greeter,
    [string]$trigger
    )
    Write-Host "Hello world" from $greeter
    Write-Host Trigger: $trigger
    
  4. 提交 (保存脚本) 。

现在可以看到更改的结果。 转到 Azure Pipelines 并选择 “排队”。 请注意,在 “排队”或“正在运行 ”部分下,生成由提交的更改自动触发。

现在可以看到更改的结果。 转到 “生成和发布 ”页,然后选择“ 排队”。 请注意,在 “排队”或“正在运行 ”部分下,生成由提交的更改自动触发。

  1. 选择已创建的新生成并查看其日志。

  2. 请注意,更改代码的人员在问候语消息中打印了其姓名。 此外,还会看到这是 CI 内部版本。

生成摘要 PowerShell 脚本日志

生成摘要 powershell 脚本日志

我们只是在这些步骤中引入了生成变量的概念。 我们打印了由系统自动预定义和初始化的变量的值。 还可以定义自定义变量,并在任务的参数中使用它们,也可以在脚本中用作环境变量。 若要了解有关变量的详细信息,请参阅 生成变量

你有一个生成管道。 后续步骤

你已创建一个生成管道,该管道会自动生成并验证团队签入的任何代码。 此时,可以继续学习下一部分,了解发布管道。 或者,如果需要,可以 跳到 为应用创建生成管道。

创建发布管道

定义两个阶段运行脚本的过程。

  1. 转到 “管道 ”选项卡,然后选择“ 发布”。

  2. 选择用于 创建新管道的操作。 如果已创建发布管道,请选择加号 ( + ) ,然后选择 “创建发布管道”。

  3. 选择要从 空作业开始的操作。

  4. 将阶段 QA 命名。

  5. 在“项目”面板中,选择 “+ 添加 ”并指定 源 (生成管道) 。 选择 添加

  6. 选择 “闪电” 以触发连续部署,然后在右侧启用 连续部署触发器

    选择闪电以触发持续部署

  7. 选择 “任务 ”选项卡并选择 QA 阶段。

  8. 为作业选择加号 ( + ) ,将任务添加到作业。

  9. 在“ 添加任务 ”对话框中,选择“ 实用工具”,找到 PowerShell 任务,然后选择“ 添加” 按钮。

  10. 在左侧,选择新的 PowerShell 脚本任务。

  11. 对于 脚本路径 参数,选择 用于浏览项目并选择创建的脚本的按钮。

  12. 添加以下 参数

    -greeter "$(Release.RequestedFor)" -trigger "$(Build.DefinitionName)"
    
  13. “管道 ”选项卡上,选择 QA 阶段,然后选择“ 克隆”。

    在 QA 中克隆发布环境

  14. 重命名克隆的阶段 生产

  15. 重命名发布管道 Hello world

    重命名发布管道 hello world

  16. 保存发布管道。

  1. 转到“ 生成和发布 ”选项卡,然后选择“ 发布”。

  2. 选择用于 创建新管道的操作。 如果已创建发布管道,请选择加号 ( + ) ,然后选择“ 创建发布定义”。

  3. 选择要以 空定义开头的操作。

  4. 将阶段 QA 命名。

  5. 在“项目”面板中,选择 “+ 添加 ”并指定 源 (生成管道) 。 选择 添加

  6. 选择 “闪电” 以触发连续部署,然后在右侧启用 连续部署触发器


  1. 选择 “任务 ”选项卡并选择 QA 阶段。

  2. 为作业选择加号 ( + ) ,将任务添加到作业。

  3. 在“ 添加任务 ”对话框中,选择“ 实用工具”,找到 PowerShell 任务,然后选择“ 添加” 按钮。

  4. 在左侧,选择新的 PowerShell 脚本任务。

  5. 对于 脚本路径 参数,选择 用于浏览项目并选择创建的脚本的按钮。

  6. 添加以下 参数

    -greeter "$(Release.RequestedFor)" -trigger "$(Build.DefinitionName)"
    
  7. “管道 ”选项卡上,选择 QA 阶段,然后选择“ 克隆”。

    克隆发布环境

  8. 重命名克隆的阶段 生产

  9. 重命名发布管道 Hello world

    重命名发布管道

  10. 保存发布管道。

发布管道是部署应用程序生成项目的阶段的集合。 它还定义了每个阶段的实际部署管道,以及如何将项目从一个阶段提升到另一个阶段。

另请注意,我们在脚本参数中使用了一些变量。 在本例中,我们使用 发布变量 ,而不是用于生成管道的生成变量。

部署发布

在每个阶段运行脚本。

  1. 创建新版本。

    创建版本 - DevOps 2019 和 2020

    出现“ 创建新版本 ”时,选择“ 创建”。

  2. 打开创建的版本。

    已创建版本 - DevOps 2019 和 2020

  3. 查看日志以获取有关发布的实时数据。

    发布日志 - DevOps 2019 和 2020

  1. 创建新版本。

    create release - TFS 2018

    出现 “创建新版本 ”时,选择“ 创建 (TFS 2018.2) ”或 “队列 ” (TFS 2018 RTM) 。

  2. 打开创建的版本。

    已创建版本 - TFS 2018

  3. 查看日志以获取有关发布的实时数据。

    发布日志 - TFS 2018

可以跟踪每个版本的进度,以查看是否已将其部署到所有阶段。 可以跟踪属于每个版本的提交、关联的工作项以及已添加到发布管道的任何测试运行的结果。

更改代码并观看它自动部署到生产环境

我们将对脚本进行更多更改。 这一次,它将自动生成,然后一路部署到生产阶段。

  1. 转到 “代码 中心” “文件 ”选项卡,编辑 HelloWorld.ps1 文件,并按如下所示对其进行更改:

    Param(
    [string]$greeter,
    [string]$trigger
    )
    Write-Host "Hello world" from $greeter
    Write-Host Trigger: $trigger
    Write-Host "Now that you've got CI/CD, you can automatically deploy your app every time your team checks in code."
    
  2. 提交 (保存脚本) 。

  3. 选择“ 生成 ”选项卡以查看生成排队并运行。

  4. 生成完成后,选择“ 发布 ”选项卡,打开新版本,然后转到 “日志”。

新代码会自动部署在 QA 阶段,然后在 生产 阶段部署。

发布脚本步骤最终日志 - DevOps 2019 和 2020

发布脚本步骤最终日志 - - TFS 2018

在许多情况下,你可能想要编辑发布管道,以便生产部署仅在某些测试和批准到位后进行。 请参阅 审批和入口概述

后续步骤

你刚刚了解了如何在 Azure 中创建第一个管道。 详细了解如何使用所选语言配置管道:

或者,可以继续自定义刚刚创建的 管道

若要在容器中运行管道,请参阅 容器作业

有关生成 GitHub 存储库的详细信息,请参阅 生成 GitHub 存储库

若要了解如何发布管道项目,请参阅 发布管道项目

若要了解可在 YAML 管道中执行的其他操作,请参阅 YAML 架构参考

清理

如果创建了任何测试管道,则使用它们后很容易删除它们。

若要删除管道,请导航到该管道的摘要页,并从页面右上角的 ...菜单中选择“删除”。 键入要确认的管道的名称,然后选择 “删除”。

删除管道

你已了解创建和运行管道的基础知识。 现在,你已准备好为正在使用的编程语言配置生成管道。 继续创建新的生成管道,这一次,请使用以下模板之一。

语言 要使用的模板
.NET ASP.NET
.NET Core ASP.NET Core
C++ .NET 桌面
Go Go
Java Gradle
JavaScript Node.js
Xcode Xcode

常见问题解答

在哪里可以阅读有关 DevOps 和 CI/CD 的文章?

什么是持续集成?

什么是持续交付?

什么是 DevOps?

可以使用哪个版本控制系统?

准备好为应用使用 CI/CD 时,可以使用所选的版本控制系统:

如何实现复制管道?

如果管道具有要在其他管道中复制的模式,请克隆、导出或将其另存为模板。

all-definitions-build-action-menu-replicate-actions

显示如何复制管道的屏幕截图。

克隆管道后,可以进行更改,然后将其保存。

导出管道后,可以从“ 所有管道 ”选项卡导入它。

创建模板后,团队成员可以使用该模板来遵循新管道中的模式。

提示

如果使用 “新建生成编辑器”,则自定义模板将显示在列表底部。

如何实现处理草稿?

如果要编辑生成管道,并且想要测试尚未准备好进行生产的某些更改,则可以将其保存为草稿。

另存为草稿

显示另存为草稿的屏幕截图。

可以根据需要编辑和测试草稿。

编辑草稿 - DevOps 2019 和 2020

准备就绪后,可以发布草稿以将更改合并到生成管道中。

发布草稿 - DevOps 2019 和 2020

发布草稿 - TFS 2018

或者,如果你决定放弃草稿,可以从上面显示的 “所有管道 ”选项卡中将其删除。

如何删除管道?

若要删除管道,请导航到该管道的摘要页,并从页面右上角的 ...菜单中选择“删除”。 键入要确认的管道的名称,然后选择 “删除”。

对生成进行排队时,我还能执行哪些操作?

可以 自动 或手动排队生成。

手动对生成进行排队时,可以针对单个生成运行:

可以 自动 或手动排队生成。

手动对生成进行排队时,可以针对单个生成运行:

在哪里可以了解有关管道设置的详细信息?

若要了解有关生成管道设置的详细信息,请参阅:

若要了解有关管道设置的详细信息,请参阅:

如何实现以编程方式创建生成管道?

REST API 参考:创建生成管道

注意

还可以使用 Azure Pipelines CLI 从命令行或脚本管理生成和生成管道。