从TeamCity部署构建



我们使用Team City作为CI构建服务器,并已将其配置为成功构建和测试。

现在,我的任务是将符合要求的项目部署到Azure中的生产VM上。这些项目包括前端代码(HTML&Javascript)、node.js代码和依赖的.NET dll。这基本上是我们的端到端web应用程序,我们可以在本地启动和运行。

我看过octopus部署,但这是一个问题,因为我不熟悉这个工具,它不仅仅是我们需要部署的nuspec包,它是一个完整的文件夹结构。

1.)如何在TeamCity中创建此文件夹结构的zip文件?2.)如果我已经创建了这个zip文件,我将如何将其部署到VM上并解压缩

我是CI的新手,所以我需要尽可能多的建议!

我只能回答第一个问题,因为我们在linux实例上使用了amazon。

在我们的CI环境(teamcity)中,我们在构建配置->常规设置选项卡->编辑工件:中指定工件

path/to/build => latest.zip. 

Teamcity发现它将根据工件扩展压缩文件夹。然后我们将zip文件上传到S3。

第二个问题我不能回答,因为我们使用linux。但是,我们只需创建一个虚拟映像,该映像在启动时从S3中获取最新的.zip文件,将其解压缩并重新启动Web服务器。

编辑:如果您决定以另一种方式部署,请确保创建对latest.zip文件的工件依赖关系。您还可以使用自定义生成参数创建生成以部署生成。

对于问题#2,您可以采取多种方法。我不是这方面的专家,但我见过的最好的Windows堆栈是BuildMaster。

我推荐它的原因是:

  1. 它清理了工件的推广和部署;很清楚哪些构建被拒绝了,哪些被提升了。

  2. 它将重用TeamCity中的工件;所以你让TeamCity负责建筑,让BuildMaster负责促销。

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

此屏幕截图显示了部署计划的示例,包括部署前和部署后的步骤

发布配置文件(MSBuild)和Web部署就是您所需要的全部。

两种MS技术。发布概要文件作为VS和MS部署的一部分,可以很容易地在目标服务器上使用管理服务进行部署。

我建议遵循Troy Hunt在这个伟大的博客系列中的方法-你部署错误的

我已经在我目前的项目中建立了这种方法,它实现了我的梦想。Web部署通常是您选择的交付机制,所以我相信您在设置此机制时不会遇到困难。

我的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=INTERNALwebdeployments 
/P:Password=*********
/p:SkipExtraFilesOnServer=true

希望这能帮助

最新更新