从TeamCity部署构建

3
我们使用TeamCity作为CI构建服务器,并已经配置成功地进行了构建和测试。
现在,我被委托将编译后的项目部署到我们在Azure上的生产VM中。这些项目包括前端代码(HTML和Javascript)、我们的node.js代码以及我们依赖的.NET dll文件。这基本上是我们的Web应用程序的端到端解决方案,我们可以在本地启动和运行它。
我们看了Octopus Deploy,但这是个问题,因为我不熟悉这个工具,而且我们需要部署的不仅仅是nuspec包,还有整个文件夹结构。
1.) 在TeamCity中如何创建这个文件夹结构的zip文件? 2.) 创建这个zip文件后,我如何将其部署到VM并解压缩?
我相对于CI来说还很新,所以我需要尽可能多的建议!

谢谢,它起作用了。顺便说一下,你的个人资料图片很奇怪。 - Mike Barnes
3个回答

2
发布配置文件(在MSBuild下)和Web Deploy是您所需的全部。
这两项技术都是微软的。发布配置文件作为VS的一部分进行发布,而MS Deploy可以轻松地通过目标服务器上的管理服务进行部署。
我建议按照Troy Hunt在他的博客系列中提出的方法,链接如下:Your Deploying It Wrong
我已经在我的当前项目中设置了这种方法,它非常好用。Web Deploy通常是首选的交付机制,因此我相信您不会遇到设置困难。
我的MSBuild部署步骤具有以下命令行参数(还包括一些可重复使用的构建参数)。部署只需要20秒!
/P:Configuration=%env.Configuration% 
/P:DeployOnBuild=True 
/P:DeployTarget=MSDeployPublish 
/P:MsDeployServiceUrl=https://%env.TargetServer%/MsDeploy.axd 
/P:AllowUntrustedCertificate=True 
/P:MSDeployPublishMethod=WMSvc 
/P:CreatePackageOnPublish=True 
/P:UserName=INTERNAL\webdeployments 
/P:Password=*********
/p:SkipExtraFilesOnServer=true

希望这可以帮助到您。

2

由于我们在Linux实例上使用Amazon,所以我只能回答第一个问题。

在我们的CI环境(TeamCity)中,我们在构建配置中指定构件 -> 通用设置选项卡 -> 编辑构件:

path/to/build => latest.zip. 

Teamcity会根据构件扩展名来决定压缩文件夹并生成zip文件。然后我们上传zip文件到S3。

第二个问题我无法回答,因为我们使用的是Linux。但我们简单地创建了一个虚拟镜像,该镜像在启动时从S3获取最新的.zip文件,解压它并重新启动web服务器。

编辑:如果您决定通过其他方式进行部署,请确保创建依赖于latest.zip文件的构件依赖项。您还可以创建具有自定义构建参数以部署构建的构建。


2
对于问题#2,有许多方法可供选择。虽然我不是该领域的专家,但我认为Windows堆栈中最好的方法是BuildMaster
我建议它的原因是:
  1. 它清理工件的晋升和部署;非常清楚哪些构建已被拒绝,哪些已被提升。

  2. 它将重复使用您从TeamCity获得的工件;因此,您让TeamCity进行构建,让BuildMaster处理晋升。

  3. 它将处理将工件部署到您的服务器,并且可以运行预部署和后部署步骤,例如重新启动服务,执行脚本以处理解压缩您的zip文件等。

这个截图显示了一个部署计划的示例,包括预部署和后部署步骤。

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