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

Deployment 如何将TeamCity的工件部署到Amazon EC2服务器,deployment,continuous-integration,amazon-ec2,teamcity,Deployment,Continuous Integration,Amazon Ec2,Teamcity,我们决定使用AmazonAWS云服务来承载我们的主要应用程序和其他工具。 基本上,我们有这样的架构 TESTSERVER:我们的主要应用程序所在的EC2实例 部署到。测试人员可以访问 应用程序 SVNSERVER:托管Subversion和 存储库 CISERVER:JetBrains TeamCity安装并运行的EC2实例 配置 现在,我需要CISERVER签出来自SVN服务器的代码,构建,如果构建成功,则对其进行单元测试,在所有测试通过后,成功构建的构件应该部署到TESTSERVER 我

我们决定使用AmazonAWS云服务来承载我们的主要应用程序和其他工具。 基本上,我们有这样的架构

  • TESTSERVER:我们的主要应用程序所在的EC2实例 部署到。测试人员可以访问 应用程序
  • SVNSERVER:托管Subversion和 存储库
  • CISERVER:JetBrains TeamCity安装并运行的EC2实例 配置
现在,我需要CISERVER签出来自SVN服务器的代码,构建,如果构建成功,则对其进行单元测试,在所有测试通过后,成功构建的构件应该部署到TESTSERVER

我已经完成了配置CISERVER以提取代码、构建、测试和生成工件。但我无法管理如何将工件部署到TESTSERVER

你有什么建议或程序来完成这项工作吗? 谢谢你的帮助


p.S:我读过这篇文章,并不满意。

我们为部署所做的是让QA人员登录到系统并运行一个脚本,随时从team city存储库中提取脚本进行部署。他们可以在TeamCity中查看(并收到一封电子邮件)是否发生了新的构建,但不管怎样,他们只是在需要时部署。就如何构建这样一个脚本而言,TeamCity组件涉及检索工件。这就是为什么我的答案提到通过URL获取工件——这是任何合理的脚本都可以使用wget(它也有一个Windows端口)或类似的工具来完成的

如果需要自动部署,可以安排cron作业(或Windows调度程序)定期运行脚本。如果什么都没有改变,那也没什么大不了的。我怀疑这样做是否明智,因为它可能会因为重启相关系统而打乱某人的测试


让team city在更改发生时推动更改的解决方案并不是team city开箱即用的(据我所知),但您可以自己动手,例如通过team city的通知方法之一(如电子邮件)触发某些更改。我只是怀疑这是否有用。您是否希望您的系统只是因为有人碰巧签入了某些内容而以随机间隔进行更改?我认为最好是实际请求新版本。

更新:有一种方法允许以多种方式发布工件

旧答案: 以下是TeamCity没有通过FTP发布内置工件的解决方案:

你可以

  • 创建生成生成构件的配置
  • 创建一个配置,该配置通过FTP发布工件
  • 将TeamCity中的工件依赖项从配置2设置为配置1
  • 使用手动或自动触发来使用配置1生成的工件运行配置2。这样,您的工件将从构建1下载到配置2,并发布到您的FTP主机
  • 另一种方法是在TeamCity中为配置1创建额外的构建步骤,该步骤通过FTP发布文件

    希望这有帮助,
    KIR

    您真的想仅仅因为构建完成就将构建推送到测试服务器上吗?您对链接问题中的答案有什么不满意的地方吗?@Yishai:是的,我需要部署到测试服务器上[如果您愿意,可以称之为开发服务器]所以测试人员可以看到。@Yishai:链接的问题并没有给我一个关于如何处理工件的起点。获取和部署工件的标准过程是什么?我应该使用哪些工具,或者我应该在Teamcity上进行哪些配置?我知道您需要部署它,我只是问部署的合理触发因素是什么。生成完成时自动执行?如果应用程序在那个时刻被测试呢?还是通过运行某种命令来实现这一点更有意义?这就是我问题的要点。很好的发现,但我不明白团队城市的单独项目给你带来了什么。作为构建的一部分,您可以在主项目的ant脚本中这样做。我想,除非您的主构建没有使用ANT,否则我们使用的是MSBuild而不是ANT。顺便说一句,谢谢Kir,我将首先尝试通过FTP连接我们的服务器,然后再进行此配置。@Yishai。。。对于QA部署,I/QA更喜欢拉式系统,因此需要单独的部署项目。QA测试时自动部署CI构建会造成中断。相反,QA在为下一次部署做好准备时强制构建/当然,脚本是一个很好的起点。您建议我开始编写一个脚本:只是一个包含WGET的.bat文件,还是一个获取工件的PowerShell脚本?你知道什么样的文章或指南吗?对于任何严肃的脚本编写,我绝对推荐PowerShell over.bat(如果有的话)。这里有一个关于如何做wget等价物的链接:如何引用TeamCity构建工件?