如何将TeamCity的构件部署到Amazon EC2服务器

3
我们决定使用亚马逊 AWS 云服务来托管我们的主要应用程序和其他工具。基本上,我们有这样一个架构:
- TESTSERVER:部署我们的主要应用程序的 EC2 实例。测试人员可以访问该应用程序。 - SVNSERVER:托管我们的 Subversion 和存储库的 EC2 实例。 - CISERVER:安装和配置 JetBrains TeamCity 的 EC2 实例。
现在,我需要 CISERVER 从 SVNSERVER 检出代码,构建,如果构建成功,则对其进行单元测试,并在所有测试通过后将成功构建的构件部署到 TESTSERVER。
我已经完成了配置 CISERVER 来拉取代码、构建、测试和生成构件。但我无法管理如何将构件部署到 TESTSERVER。
你有什么建议或步骤来完成这个任务吗?谢谢帮忙。
P.S: 我已经阅读了这个问题,但并不满意。

你真的想因为构建完成就将构建推送到测试服务器吗? - Yishai
那么,您对链接问题中的答案有何不满意之处? - Yishai
@Yishai:是的,我需要部署到测试服务器[如果您喜欢,也可以称其为开发服务器],以便测试人员可以查看。 - SadullahCeran
@Yishai:链接的问题并没有给我一个关于如何处理构件的起点。获取构件和部署它的标准流程是什么?我应该使用哪些工具,或者在Teamcity上应该进行哪些配置? - SadullahCeran
我理解您需要部署它,我只是想问什么是合理的部署触发器。当构建完成时自动触发?如果应用程序正在进行测试,那该怎么办?或者运行某种命令是否更有意义?这就是我的问题要点。 - Yishai
2个回答

3

更新:有一个TeamCity部署插件,它允许以多种方式发布构建产物。

旧回答:以下是解决TeamCity没有内置的FTP文件发布功能的方法:

http://youtrack.jetbrains.net/issue/TW-1558#comment=27-1967

  1. 创建一个能够生成构建产物的配置
  2. 创建一个配置,通过FTP发布产物
  3. 在TeamCity中设置来自配置1到配置2的构建产物依赖关系
  4. 使用手动或自动触发来运行配置2,使其使用由配置1生成的产物。这样,您的构建产物将从构建1下载到配置2,并发布到FTP主机。

另一种方法是在TeamCity的配置1中创建额外的构建步骤,以通过FTP发布您的文件。

希望这有所帮助, KIR


不错的发现,但我不明白在Team City中单独创建项目能为你带来什么好处。你可以在主项目的ant脚本中作为构建的一部分完成这个任务。除非你的主构建没有使用ANT,我猜是这个原因吧。 - Yishai
我们正在使用MSBuild而不是ANT。顺便说一句,谢谢Kir,我将首先尝试通过FTP连接我们的服务器,然后再进行此配置。 - SadullahCeran
1
@Yishai... 对于QA部署,我更喜欢使用拉取系统,因此需要一个单独的部署项目。在QA测试时自动部署CI构建会造成干扰。相反,QA会在准备好进行下一次部署时强制进行构建。/jhd - John Dhom

1
我们部署的做法是,QA人员登录系统并运行脚本,根据需要从团队城市存储库中拉取部署。他们可以在团队城市中看到(并收到电子邮件)是否有新版本发布,但无论如何,他们只会在需要时进行部署。构建此类脚本的方法涉及使用团队城市组件检索生成物。这就是为什么我的答案提到通过URL获取生成物 - 任何合理的脚本都可以使用wget(它也有Windows端口)或类似工具执行此操作。
如果您想要自动化部署,可以安排cron作业(或Windows计划程序)定期运行脚本。如果没有变化,那没关系。我对此的智慧提出质疑,因为这可能会通过重新启动涉及的系统来破坏某些测试。
让team city在发生更改时推送更改的解决方案不是团队城市“开箱即用”的功能(就我所知),但是您可以自己实现,例如通过使用团队城市的通知方法之一触发某些操作,例如电子邮件。我只是对其效用提出了疑问。您是否希望您的系统在某些人恰好检查某些内容时以随机间隔进行更改?我认为更好的做法是要求获取新版本。

是的,脚本是一个不错的起点。你建议我从哪里开始编写脚本:只是包含WGET的.bat文件,还是使用PowerShell脚本获取构件?你知道有什么样的文章或指南可以入门吗? - SadullahCeran
对于任何严肃的脚本编写,我强烈推荐在可用的情况下使用PowerShell而不是.bat。这里有一个关于如何执行类似wget的等效操作的链接:http://huddledmasses.org/wget-for-powershell/ - Yishai
1
你如何引用TeamCity构建产物? - John Dhom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接