65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 GIT、Team City 和 Octopus 实现 CI & CD

2014 年 12 月 9 日

CPOL

22分钟阅读

viewsIcon

50468

使用 Team City、Octopus、Visual Studio 和 GIT 进行持续集成和交付。

引言

本文将讨论如何使用 Team City、Octopus、Visual Studio 和 GIT 设置 CI(持续集成)和 CD(持续交付)环境。本文不会

  • 讨论 CI/CD 背后的理论——尽管会进行简要介绍,

  • 提供关于 Team City/Octopus/GIT 如何工作的详细信息——因为它们有自己的网站、文档和 Wiki。

本文的目的是使用 Team City 和 Octopus 配置 CI 和 CD 流程。

理论:持续集成和交付

我的简单看法如下。

在每个项目中都会有一些“白噪音”——你需要一遍又一遍地做,只有极小的改动。这些步骤会随着时间的推移变得越来越复杂,当有新人加入进行改动时,容易导致错误。举一个高层次的例子,考虑

  • 构建项目——这超级容易,打开项目并右键构建。但是当你添加更多项目时,可能跨越不同的语言,它们之间的依赖关系会改变——它变得越来越复杂。作为一个衡量标准,计算在新机器上构建项目解决方案所需的时间。

  • 集成变更——面对现实吧,我们开发人员喜欢做忍者,制造破坏性变更。在每个项目中,相当一部分时间会花在集成变更上。你等待集成的时间越长,痛苦就越长。一些痛苦可能包括

    • 修复 VSS,因为开发人员可能覆盖了彼此的更改

    • 修复代码,因为它可能会破坏其他功能部分

  • 部署——每个项目都需要部署。部署可以到测试、预生产、生产环境。即使你采用瀑布式开发方法,部署到测试环境可能会延迟,但你可能希望将更改部署到开发测试箱。

好消息是,所有这些“白噪音”都可以在一定程度上自动化,它真的变成了背景噪音。设置起来并非易事,但一旦设置得当,遵循起来就会变得微不足道。所以当需要部署一个编码和测试需要 1 天的小改动时,总的部署时间不再是 3 天,因为有 2 天将用于构建、集成和部署!

如果您对整个 CI & CD 流程不熟悉,建议阅读以下内容以获得更好的理解。

https://martinfowler.com.cn/articles/continuousIntegration.html

软件

那么,让我们开始吧。所需的软件包括

  1. Windows 环境(首选 Windows 8,因为那是我的测试机器)

  2. GIT - 用作源代码控制

  3. Visual Studio - 用于构建

  4. Team City - 用于自动化构建、运行测试和打包

  5. Octopus - 用于部署

以上所有软件都有免费版本可供下载和试用。我强烈建议使用带有 Visual Studio 的全新虚拟机,因为它允许您设置检查点并在需要时回滚。

进程

总体步骤如下

  • 将 Git 设置为源代码控制管理器。

  • 创建一个带单元测试的默认 Asp.net MVC 项目。

  • 配置 Team City,使其在任何签入(更改)时构建项目并运行单元测试。

  • 构建成功后,将使用 Octopus 将发布部署到测试环境。

GIT

Git 是首要的开源版本控制系统之一——许多主要的开源项目现在都托管在 Git 上,包括 asp.net (https://github.com/aspnet)。请访问 https://help.github.com/ 阅读并探索 Git。

在 GIT 中创建账户

如果您已经在 Git 中有账户,可以跳过此步骤。否则,请访问 http://github.com 并注册 GitHub,然后按照屏幕提示创建免费账户。

创建新仓库

现在我们将在 Git 中创建一个新的空仓库。点击“+ New Repository”按钮

  • 给仓库起一个名字 - TodoWebApp。我们将在该仓库中存储我们的 Web 项目。

  • 取消勾选“使用 README 初始化此仓库”

  • 不要添加任何 .gitingore 文件。

  • 点击“创建仓库”。

这将创建我们的仓库。URL指向仓库,它将在后续步骤中使用。例如 http://github/username/TodoWebApp - 其中 username 是账户名。

注意:有多种方法可以将我们的 Visual Studio 项目与 Git 连接起来。最简单的方法是创建一个空仓库,然后使用 Visual Studio 管理提交。

Visual Studio

创建新项目

在 Visual Studio 中创建一个新的 Asp.Net Web 应用程序项目。

  1. 在这个例子中,我创建了一个名为 WebApp 的新 Web 项目。

  2. 勾选“为解决方案创建目录”。这将创建一个解决方案文件夹,因为我们将添加单元测试。

  3. 给解决方案命名为 TodoWebApp

  4. 取消勾选“添加到源代码管理”。

  5. 点击“确定”进入下一屏幕。

  6. 选择 MVC

  7. 将身份验证更改为“无身份验证”

  8. 勾选“添加单元测试”复选框

点击“确定”创建项目。构建项目并运行测试,确保一切正常。您应该有一个解决方案文件夹 TodoWebApp 和两个项目 WebApp 和 Webapp.Tests。

将项目添加到 Git 源代码管理

右键单击解决方案文件,选择“将解决方案添加到源代码管理”,并选择 Git 作为源代码管理。

接下来是链接到远程 Git 仓库。为此

  1. 前往团队资源管理器 (Team Explorer),点击“未同步的提交 (Unsynced Commits)”。

  2. 这将显示一个带有“发布到远程仓库 (Publish to Remote repository)”和输入 URL 位置的窗口。在这里,我们将输入在上一部中创建的仓库的 URL。例如:https://github.com/username/TodoWebApp

  3. 点击“发布”以链接到远程仓库

  4. 点击“同步”以与服务器同步更改

  5. 按照以下步骤提交更改。添加注释“First version”。

提交更改

为了将 Visual Studio 中的更改提交到 GIT,请按照以下步骤操作。

  1. 转到解决方案资源管理器视图

  2. 右键单击解决方案并选择“提交”

  3. 在黄色框中输入注释(标签)

  4. 点击“提交”

  5. 点击“同步”,将更改同步到服务器

更改将在在线仓库中刷新。

OctoPack - NuGet 包

我们在这里有点超前了,但是我们的部署软件 Octopus 需要以 NuGet 包的形式输出。为了通过 Team City 创建 NuGet 包,Octopus 创建了一个 OctoPack NuGet 包。所有需要部署的项目都应该安装 OctoPack NuGet 包。

详细信息可以在这里找到 http://docs.octopusdeploy.com/display/OD/Using+OctoPack

要添加 OctoPack,请按照以下步骤操作:

  1. 右键单击解决方案并单击“管理 NuGet 包”

  2. 点击“在线”并搜索 OctoPack

  3. 点击 OctoPack 搜索结果旁的“安装”,并仅为 WebApp 项目安装。WebApp.Tests 不会被部署,因此不需要打包。

  4. 构建解决方案,并使用前面概述的步骤提交更改。记住添加有意义的注释(标签),例如“添加了 OctoPack NuGet 包”,并记住同步更改。

在 Visual Studio 中启用 NuGet 包还原

如果您在线浏览 Git 仓库,您会看到两个文件夹:WebApp 和 WebApp.Tests,而在本地硬盘上会有一个额外的 packages 文件夹。通过 Visual Studio 添加时,包默认不会添加到源代码管理。这通过 .gitignore 文件控制。该文件列出了在签入 (commit) 到 Git 时应排除的文件/文件夹。

这意味着,我们的应用程序在构建时应该能够还原包。在 Visual Studio 中,单击“工具”、“NuGet 包管理器”,并确保以下选项已选中。

  • 允许 NuGet 下载缺失的包

  • 在 Visual Studio 构建期间自动检查缺失的包。

更多信息请访问:http://docs.nuget.org/docs/Reference/Package-Restore

尽管上述步骤应该足够了,但我发现 Team City 并没有还原所有包,直到我在解决方案中启用了 NuGet 包还原,为此,

  1. 右键单击解决方案并选择“启用 NuGet 包还原”。

  2. 更改完成后,使用标签“已启用 NuGet 包还原”进行提交。

  3. 同步更改

Team City

简单来说,Team City 是一个自动化构建和打包工具,可以从 https://www.jetbrains.com/teamcity/ 下载。我们将使用 Team City 进行持续集成——这意味着当 Git 中发生任何更改时,我们的解决方案将被构建,单元测试将被运行,并且解决方案输出(artifacts)将被生成。

设置相当容易,唯一值得记住的是 Team City 服务器端口,因为它将在此端口上创建其网站。请记住您正在使用的端口,我设置了 8886,并保留所有选项为默认值。

登录

Team City 安装完成后,它将启动网站 (https://:8886),或者如果您自行浏览,将显示登录对话框。点击“以超级用户身份登录”,这将显示一个身份验证令牌。该令牌可以从“teamcity-server”日志文件中获取,该文件默认位于 Team City 安装目录下的 logs 子文件夹中 (C:\TeamCity\logs)。打开日志文件并搜索文本“Super user authentication token:”,然后复制该令牌。更多详细信息请访问:https://confluence.jetbrains.com/display/TCD8/Super+User

创建一个项目

下一步是建立一个项目。由于我们想使用 Git 作为源代码控制,我们将使用“从 URL 创建项目”选项并

  1. 将 URL 设置为我们的 Git 仓库 – 例如,https://github.com/username /TodoWebApp

  2. 设置 Git 的用户名和密码,以便 Team City 可以对源代码进行标签(如果已配置)

  3. 点击“确定”,Team City 将连接到 Git 并显示项目名称,保留所有默认设置,然后点击“继续”。

配置构建步骤

Team City 将呈现一系列它认为适合我们项目的构建步骤。由于我们的项目包含 NuGet 包,我们首先需要恢复 NuGet 包,构建项目,然后运行单元测试。这需要三个步骤。

NuGet 安装程序

选择“NuGet Installer”,Team City 将自动从我们的项目填充设置。这将用于还原我们解决方案的 NuGet 包。

Visual Studio (sln)

点击“自动检测构建步骤”并选择“Visual Studio (sln)”。同样,Team City 将从我们的项目填充设置。

MSTest

点击“添加构建步骤”并选择 MSTest。在“列出程序集文件”中,输入 `**\bin\Release\WebApp.Tests.dll`。点击“保存”。我们正在配置单元测试仅对我们的 Webapp.Test.dll 运行。

触发器

接下来,附加一个触发器,以便在签入发生时构建我们的项目。这可以通过进入菜单中的“触发器”并点击“添加新触发器”并选择“VCS 触发器”来完成。这将导致在签入发生时构建我们的解决方案。

设置 NuGet 版本

在此阶段构建项目时,我们将收到错误“runner 参数无效值:nuget.use.restore”。这是因为 NuGet 版本尚未为构建代理配置。为此,

  1. 点击“管理”(右上角)并

  2. 从左侧菜单中选择“NuGet”选项。

  3. 点击“NuGet.exe”选项卡,然后点击“获取 NuGet”版本。

  4. 选择最新的 NuGet 版本,并

  5. 勾选“设为默认”选项

  6. 点击“添加”。

这将把 NuGet 安装到所有构建代理上。

在项目中保存 NuGet 版本

由于某种原因,我不得不回去在项目设置中保存 NuGet 版本,否则构建会失败。为此,

  1. 转到项目设置

    1. 点击“项目”

    2. 点击项目 TodoWebApp

    3. 点击右上角的“编辑项目设置”

  2. 点击“构建配置”的“编辑”

  3. 点击左侧菜单中的“构建步骤”

  4. 点击 NuGet 安装程序中的“编辑”

  5. 点击“显示高级选项”

  6. 确保 NuGet.exe 有一个类似于 Default (2.8.3) 的默认值

  7. 点击“保存”

首次构建

在运行首次构建时,Team City 将

  • 连接 Git 仓库

  • 下载源代码

  • 恢复 NuGet 包

  • 运行构建

  • 运行测试用例

最后您应该会看到“测试通过:3”。

构件

如果你注意到,我们的构建成功了,但没有输出(artifacts)。这是因为我们还没有配置任何东西。尽管我们周期的持续集成部分已经完成,但我们仍然需要与 Octopus 集成以实现持续交付。现在 Octopus 通过 NuGet 包工作,所以我们必须更改构建以输出 NuGet。这将需要额外的步骤。

为 Team City 安装 Octopus 插件

http://docs.octopusdeploy.com/display/OD/TeamCity 下载 Team City 的 Octopus 插件。那里也提供了说明,但重申一下

  1. 下载 TeamCity 插件 ZIP 文件

  2. 停止 TeamCity Server Windows 服务。

  3. 将 ZIP 文件复制到 Team City 插件目录。对于默认安装,该目录是:C:\ProgramData\JetBrains\TeamCity\plugins。ProgramData 是一个隐藏文件夹。

  4. 启动 TeamCity Server Windows 服务

创建 NuGet 包作为输出(artifact)

  1. 浏览到项目并单击“编辑项目设置”。这将显示构建配置列表。

  2. 只有一个名为 Build 的配置(如果未更改),点击“编辑”

  3. 点击左侧菜单中显示的“构建步骤”。它将显示两个构建步骤。

  4. 点击 Visual Studio (sln) 旁边的“编辑”。

  5. 如果 Octopus 插件安装成功,它将显示额外的信息“Octopus Packaging”。

  6. 勾选“运行 OctoPack”。

  7. 将 OctoPack 包版本设置为 %build.number%。这将创建一个带有构建编号的 NuGet 包。

  8. 点击保存。

更改构建编号格式

Octopus 包版本需要多个部分作为其版本号,而 Team City 默认只有一个数字。要解决此问题,请点击“常规设置”(在构建配置中),将构建号格式设置为 1.%build.counter%,然后点击“保存”。

允许访客登录

由于我们没有配置任何用户,我们可以启用访客登录,以便 Octopus 可以与 Team City 通信。

  1. 点击右上角的“管理”

  2. 选择“身份验证”

  3. 勾选“允许作为访客用户登录”

  4. 按“保存”。

配置 NuGet 服务器

我们还需要启用 Team City 发布源,以便在新包部署时将其与 Octopus 连接起来。为此,

  1. 点击右上角的“管理”

  2. 从左侧菜单中选择 NuGet

  3. 选择“NuGet 服务器”选项卡(默认为选中)并点击“启用”。

  4. 我们应该有经过身份验证和公共的 Feed URL。

另一次构建

如果我们再次构建项目,我们应该能在 Artifacts 部分看到我们的 .nupkg 文件。同时访问 https://:8886/guestAuth/app/nuget/v1/FeedService.svc/Packages 应该也能看到我们的 WebApp 包。

章鱼 (Octopus)

Octopus 是一款 .NET 自动化部署工具,可从 https://octopusdeploy.com/downloads 下载。在 Octopus 中,每台部署机器都被称为 Tentacle。下载 Octopus Server 和 Tentacle,因为本文中我们的部署(Tentacle)机器将与 Octopus Server 机器相同。

按照屏幕提示安装和配置 Octopus 服务器。唯一重要的是记住端口,我将其设置为 8887。安装完成后,浏览到 Octopus 网络服务器 (https://:8887/app)。

更多信息请访问 http://docs.octopusdeploy.com/display/OD/Getting+started

添加 Team City NuGet 源

我们需要配置 Octopus 以使用 Team City NuGet 源。这可以按以下步骤完成

  1. 在 Octopus Web 门户中,点击“库”

  2. 从左侧菜单中选择“外部源”。

  3. 点击“添加源”

  4. 输入名称为 Team City feed

  5. 复制在“配置 NuGet 服务器”步骤中配置的 URL。URL 应该是 https://:8886/guestAuth/app/nuget/v1/FeedService.svc,请记住端口号将取决于安装时选择的端口。

  6. 点击“测试”——它将显示一个“测试 Team City 源”屏幕。

  7. 按“搜索”,它应该显示包 ID:WebApp

添加 Octopus IIS 应用程序部署包

默认情况下,Octopus 不支持创建 Web 应用程序——但是可以通过步骤模板轻松添加。为了添加步骤模板,请按照以下步骤操作

  1. 在新标签页中打开以下 URL https://library.octopusdeploy.com/#!/step-template/actiontemplate-iis-application-create

  2. 点击“复制到剪贴板”

  3. 浏览到 Octopus Web 部署 (https://:8887)

  4. 点击导航菜单中的“库”

  5. 点击左侧菜单中的“步骤模板”

  6. 点击右上角的“导入”链接

  7. 将内容粘贴到对话框中

  8. 点击“导入”

  9. 按右上角的“保存”

创建新环境

环境是解决方案将部署到的机器组,例如测试、预生产、生产等。更多信息请访问 http://docs.octopusdeploy.com/display/OD/Environments

要在 Octopus Web 门户中添加新环境,请按照以下步骤操作

  • 点击顶部导航菜单中的“环境”

  • 点击“添加环境”

  • 给它命名,“测试”

  • 点击“保存”

创建新机器

下一步是添加一个将部署我们解决方案的机器。在 Octopus 中,部署机器被称为触手 (Tentacles)。更多信息请访问 http://docs.octopusdeploy.com/display/OD/Installing+Tentacles

添加新机器(触手)需要以下步骤。

  • 浏览到 Octopus Web 门户 (https://:8887)

  • 点击“环境”导航菜单

  • 点击我们新创建的“测试”环境旁边的“添加机器”

  • 复制指纹 (guid)——它将是一系列粗体数字

  • 输入名称为 localhost

不要按“发现”,因为我们首先必须安装和配置一个触角

安装侦听触手 (Listening Tentacle)

我们将添加一个侦听触手,目前它将在同一服务器上。

  1. 安装之前下载的 Tentacle MSI——按照提示,使用默认选项

  2. 将其配置为侦听触手(推荐)选项。

  3. 当您到达要求输入 Octopus 指纹的屏幕时,粘贴我们从 Octopus Web 门户复制的 Guid(添加新机器)

  4. 继续安装

安装完成后,

  1. 返回 Octopus 网页,添加新机器

  2. 按“发现”。

  3. Octopus 将自动找到触角

  4. 在“部署”下添加新角色“web-server”,然后“保存”。

创建新项目

项目用于定义部署步骤。要创建项目

  1. 浏览到 Octopus Web 门户

  2. 展开“项目”导航菜单,点击“所有”

  3. 点击“添加项目”

  4. 给项目起一个名字,TodoWeb

  5. 按“保存”

 

添加部署步骤

部署 NuGet 包

  1. 浏览到新创建的项目 (TodoWeb) 并点击“流程”

  2. 点击“添加步骤”

  3. 选择“部署 NuGet 包”

  4. 命名为 Deploy TodoWeb

  5. 将机器角色设置为 web-server。

  6. 选择 NuGet 源为 Team City 源(如之前在“添加 Team City NuGet 源”中配置)

  7. 将 NuGet 包 ID 设置为 WebApp。这是 Team City 构建的产品包(artifact)。

  8. 选择“配置功能”,勾选“自定义安装目录”,然后点击“应用”。

  9. 将显示一个名为“自定义安装目录”的新部分。将“安装到”设置为 C:\inetpub\wwwroot\TodoWeb 并勾选“安装前清除此目录”复选框。

  10. 按“保存”

创建 Web 应用程序

  1. 浏览到新创建的项目 (TodoWeb) 并点击“流程”

  2. 点击“添加步骤”

  3. 选择 IIS 应用程序 - 创建

  4. 选择机器角色 web-server

  5. 将虚拟路径设置为 TodoWeb

  6. 将物理路径设置为 C:\inetpub\wwwroot\TodoWeb

  7. 将应用程序池设置为 DefaultAppPool

  8. 将父站点设置为 Default Web Site

  9. 按“保存”

注意:这些都是默认值——如果任何值不同,请相应更改。

部署我们的第一个版本

让我们继续检查我们是否可以部署我们的版本。

  1. 浏览到新创建的项目 (TodoWeb)

  2. 从左侧菜单中选择“发布”

  3. 点击“创建发布”

  4. 保留所有默认设置,然后按“保存”

  5. 在下一个屏幕上,点击“部署此发布”

  6. 在“部署到”字段中选择“测试”

  7. 点击“部署发布”

发布部署完成后,浏览到 https:///TodoWeb,您应该能看到我们的应用程序。

注意:需要记住的一件重要事情是,当创建一个发布时,它会获取变量、流程步骤的快照——所以如果我们进行了任何更改并部署该发布,它将不会生效。解决方案是,一旦您对项目进行了更改,就创建一个新的发布。更多信息请访问:http://octopusdeploy.com/blog/releases-and-snapshots

集成 Team City 以部署到 Octopus

到目前为止,我们已经有了 Team City,它可以构建、输出 NuGet 包并发布源。以及 Octopus,它可以部署该 NuGet 包。下一步是触发自动部署以实现持续交付。

在本节中,我们将介绍如何配置 Team City,使其在项目构建完成后自动在 Octopus 中部署(或创建)一个发布。

此阶段涉及几个步骤。首先是创建一个新的构建配置,然后是在此新配置中添加一个构建步骤以部署到 Octopus。最后,我们需要在先前的构建完成后触发此构建配置。

现在,为什么我们需要一个新的构建配置而不是重用以前的配置呢?原因如下:

引用

您的构建创建的 NuGet 包在构建完全完成之前不会出现在 TeamCity NuGet 源中。如果您计划在构建期间触发部署,这会产生一个问题:在构建发布之前,包不会出现在源中,因此您将无法部署它。

解决方案是配置一个辅助构建配置,并使用 TeamCity 中的快照依赖项和构建触发器,在第一个构建配置完成后运行部署构建配置。下面的视频演示了如何做到这一点。

 

参考:http://docs.octopusdeploy.com/display/OD/TeamCity

搞清楚这一点后,让我们继续为我们的项目创建一个新的构建配置。

创建新的构建配置

  1. 浏览到 Team City Web 门户 (https://:8886)

  2. 前往“编辑项目设置”页面(点击项目名称,点击右侧的“编辑项目设置”)

  3. 创建一个新的构建配置(不是构建配置模板)

  4. 输入名称,例如 Octopus Deploy,然后点击“创建”

创建构建步骤

  1. 添加一个新的构建步骤,选择运行器类型为 OctopusDeploy: 创建发布。 如果您看不到此选项,请参阅“为 Team City 安装 Octopus 插件”一节。

  2. 设置 Octopus Web 门户 URL – https://:8887

  3. API 密钥 – 可以从 Octopus 生成 – 参见下面的“生成新的 Octopus API”部分。

  4. 输入项目名称 - TodoWeb

  5. 在发布编号中,输入 %build.number%。

  6. 在“部署到”中,设置我们的环境名称为“测试”。

  7. 点击“显示部署进度”为 true。

  8. 按保存

生成新的 Octopus API

在 Octopus 的 Web 门户中,点击右上角的用户名称,选择“配置文件”,然后选择“API 密钥”选项卡。从那里可以生成一个新的 API 密钥。

http://docs.octopusdeploy.com/display/OD/How+to+create+an+API+key

添加新依赖项

我们需要在构建和部署配置之间建立依赖关系。我们将添加一个快照依赖,因为它会自动共享构建资源。要添加新依赖项

  1. 确保您在 Octopus Deploy 的构建配置设置中

  2. 点击“依赖项”菜单项

  3. 点击“添加新快照依赖项”按钮

  4. 选择 TodoWebApp 下的“构建”

  5. 保留默认设置,然后按“保存”

更多信息请访问 https://confluence.jetbrains.com/display/TCD8/Dependent+Build

添加新触发器

我们还需要添加一个新的触发器,以便此构建配置(部署)在先前的构建步骤成功后执行。

  1. 确保您在 Octopus Deploy 的构建配置设置中

  2. 点击“触发器”

  3. 选择“添加新触发器”

  4. 选择“完成构建触发器”

  5. 选择 TodoWebApp 下的“构建”作为构建配置

  6. 只在构建成功后触发

  7. 按“保存”

更改构建编号

  1. 确保您在 Octopus Deploy 的构建配置设置中

  2. 选择“通用设置”

  3. 将构建号格式设置为:%dep.TodoWebApp_Build.build.number%

  4. 按“保存”

这将链接前一个构建配置的构建号。由于我们还将 Octopus 中的发布号与构建号链接起来,这将为我们在 Team City 和 Octopus 之间提供一个简单的链接方式。

构建项目

如果我们现在进入项目屏幕,应该会看到两个步骤——构建和 Octopus 部署。点击“运行”也将触发部署。通常,部署步骤需要大约一分钟才能显示。如果我们现在进入我们的 Octopus 项目门户,我们可以看到新的发布已部署在那里,其发布号与构建号相同。

整合所有内容

让我们通过在 Visual Studio 中进行更改、签入并部署发布来进行一次全面的测试运行。

成功更改

我们这里的目的是进行任何外观上的更改,并查看它是否成功构建和部署。

  1. 打开 Visual Studio 并加载解决方案 TodoWebApp

  2. 打开 _Layout.cshtml (WebApp\Views\Shared)

  3. 搜索“应用程序名称”并将其更改为 Todo Web app。

  4. 保存文件。

  5. 转到解决方案资源管理器视图

  6. 右键单击解决方案并选择“提交”

  7. 在黄色框中输入注释“已更改应用程序名称”

  8. 点击“提交”

  9. 点击“同步”,将更改同步到服务器

 

浏览到 Git 仓库 (https://github.com/user.name/TodoWebApp),您应该能看到新的标签(已更改应用程序名称)。

打开 Team City Web 门户 (https://:8886),下一次构建将在几分钟内触发,随后 Octopus 将进行部署。步骤成功后,浏览到 https:///TodoWeb 以查看更改。

失败的更改

我们这里的目的是进行一个会导致单元测试失败的更改。为此

  1. 打开 Visual Studio 并加载解决方案 TodoWebApp

  2. 打开 HomeControllerTest.cs (WebApp.Tests\Controllers)

  3. 找到 About 方法,并更改 Assert.AreEqual 以使测试失败。

  4. 保存文件。

  5. 转到解决方案资源管理器视图

  6. 右键单击解决方案并选择“提交”

  7. 在黄色框中输入注释“测试用例应该失败”

  8. 点击“提交”

  9. 点击“同步”,将更改同步到服务器

浏览到 Git 仓库 (https://github.com/user.name/TodoWebApp),您应该能看到新的标签(已更改应用程序名称)。

打开 Team City Web 门户 (https://:8886),下一次构建将在几分钟内触发——构建将不会成功,因为其中一个测试用例失败了。我们可以通过点击“测试失败…”消息查看详细信息。它将显示哪个测试失败了 (HomeControllerTest.About),并通过展开节点显示失败原因。

如果我们在 Octopus https://:8887 中查看,我们可以看到该版本的部署没有发生,因为测试用例失败了。

摘要

本文只是冰山一角,因为它只解释了设置 CI 和 CD 的一个简单流程。还有其他步骤和流程需要处理,但我希望这能给您足够的启发,使探索变得更容易。

 

历史

1. 2014 年 12 月 9 日:第一版

使用 GIT、Team City 和 Octopus 实现 CI & CD - CodeProject - 代码之家
© . All rights reserved.