
Automate Deployment for Web Applications?我的团队目前正在尝试自动化.Net和PHP Web应用程序的部署。 我们希望简化部署,并避免手动进行操作带来的麻烦和许多麻烦。 我们需要一种解决方案,使我们能够:
我们所有的应用程序都使用SVN进行源代码控制,而我们的.Net应用程序使用CruiseControl。 还有其他可以帮助我们的部署工具吗? 谢谢大家的建议。我们检查了所有内容,但经过仔细考虑,我们决定结合使用CruiseControl,NAnt,MSBuild和MSDeploy。
本文包含一些重要信息: 我们的解决方案大致如下:
然后,当我们验证了一切准备就绪可以进行直播/分阶段时,我们运行另一个脚本以:
到了这个阶段还不太好,但是现在它的工作原理很像:D 随着我们对流程的更改,我将尝试使此答案保持更新,因为SA上现在似乎存在一些类似的问题。 我使用Puppet,Makefiles来构建RPM,而Bamboo用Bamboo来为我做这件事。我的系统没有直接应用,并且我不熟悉Windows世界,但是有一些可移植的模式。 我的make设置使我能够为构成我的应用程序的所有内容(php库,php网站,perl模块,C应用程序等)构建RPM。这可以手动调用,也可以通过Bamboo调用。我将这些RPM转移到yum repo和puppet句柄中,以确保在群集中安装了最新(或正确)版本的软件。 您可以自动将软件包构建到MSI中吗?我认为Puppet可以管理Windows中软件包和版本的安装。 我已经使用Visual Build Pro多年了,它非常漂亮,易于使用,并且内置了许多标准操作(如您提到的操作)。 我为此使用msdeploy。它工作完美。 关于蚂蚁;对于.NET平台,我们拥有NAnt,您可以将其与MSDeploy结合使用;您可以从Nant脚本调用MSDeploy。
编辑: 没有人提到Final Builder http://www.finalbuilder.com。 它与Visual build Pro相当。 良好的GUI,可用于创建自动化的构建部署工具 而不是使用xcopy,我们设法使用带有UNC地址的-source:dirpath命令来连接具有msdeploy的服务器。关键是ignoreAcls = true,并删除对msdeploy字符串中的用户名和密码的调用:
该示例将站点从构建服务器的E驱动器部署到实时服务器上的D驱动器。在实时服务器上公开共享或此级别的磁盘访问时,需要考虑一些安全方面的考虑。我们目前正在研究使用受限访问共享文件夹。 然后,我们将此输出通过管道传输到日志文件,然后将其移至备份存档以供参考。日志文件记录了哪些文件被移动以及何时被移动。使用输出管道命令继续上面的示例:
Nant应该存在的唯一原因是,您拥有一个类似于Ant的框架,在其中我们可以使用.NET语言集编写Tasks。如果您不想让纯净的.NET开发人员编写自定义任务,我看不出您无法使用Ant的任何原因。仅仅因为您使用.NET语言编写应用程序,并不意味着您必须使用.NET构建工具。 检出Setup Factory(来自靛蓝玫瑰)。它的功能相当强大。它使用Windows安装程序API。它可能可以满足您的需求。 布。似乎很小,简单,程序上。用Ruby编写,因为Ruby是不可以的(为什么?)。 |