那么,根据您的经验,最好的方法是什么?是否有一种安全的方法可以在构建自动化工具中编写脚本/触发?

编辑:我应该提到这是 windows/.net,我将部署到 iis6

有帮助吗?

解决方案

对于我使用的一些项目 卡皮斯特拉诺 推出去生活。它构建在 ruby​​ 之上,使部署脚本编写变得超级简单,并使用 ssh。

在其他项目中,我有一个小型部署应用程序,它使用 bash 将 svn 导出到临时目录,然后将其 rsync 到实时服务器。您可以使用 ssh 进行 rsync。

我非常喜欢 Capistrano 方法,即使您的项目不是在 ruby​​/rails 中。

其他提示

这似乎是可以使用 SFTP 轻松完成的事情。看一眼 油灰 (psftp 和 pscp)或 WinSCP 对于 Windows,或 同步开放SSH 对于 Unix。

@Neall,我会添加一个 set -e 在第二行,因为如果以下情况您不希望替换实时站点 rsync 因任何原因失败。 set -e 如果任何命令失败,则导致脚本退出。

编辑:这 set -e 应该是脚本中的第一件事,紧随其后 #!/bin/bash.

复制您的实时站点目录,使用 同步 要使用最新版本更新该副本,然后重命名实时目录和更新目录,以便更新版本立即生效。

在bash中:

#!/bin/bash

set -e
cp -R /var/livesite /var/newversion
rsync user@devserver:/var/readytogolive /var/newversion
mv /var/livesite /var/oldlivesite
mv /var/newversion /var/livesite

中提琴!

编辑:@Ted Percival - 这是个好主意。我什至不知道“set -e”。更新了脚本。编辑:根据 Ted 的建议再次更新(尽管我认为如果 cp 命令以某种方式失败,它仍然可以工作,并且如果 cp 失败,您可能会遇到更严重的问题。)

我会附议该建议 卡皮斯特拉诺, ,不过如果您正在寻找基于 GUI 的解决方案,您可以尝试 韦比斯特拉诺 前端。干净、基于 ssh、合理的部署和回滚语义以及通过 ruby​​ 轻松编写脚本和可扩展性。

您始终可以编写一个小型客户端/服务器应用程序,在源处加密,推送文件,然后在目的地解密。这是一点点工作,但可能是微不足道的。只要您的自动化工具支持在文件系统中执行某些操作(我认为都支持),它就可以编写脚本。

唯一的缺点是,您可能无法在集成环境中发生故障时获得有意义的错误消息,而无需您做更多的工作(尽管根据您的设置,这可能就像将错误消息发送到标准输出一样简单)。

嗯,在这里我们使用临时“服务器”在实时环境中进行测试(实际上,它是生产服务器上的 apache 虚拟主机)并且 阿拉西斯合并 (一个真正智能的逐行文件比较工具)来同步开发和登台。

一旦经过测试,就;替换生产 webroot 上的文件:)

/mp

在我做的一份自由职业中,我们建立了三个独立的环境。

  • 运行的开发服务器继续使用 CruiseControl 进行构建。任何签入都会触发构建。QA 测试是在这里完成的。
  • 测试服务器,用于进行用户验收测试。
  • 生产。

工作流程如下:

  1. 开发人员签入 SourceControl 的更改。
  2. CruiseControl 构建并将构建部署到 Dev。
  3. 开发人员已接受质量检查
  4. 通过 QA 后,将运行 robocopy 脚本,将开发版本部署到测试版本。
  5. 测试已通过 UAT 进行
  6. 测试通过后,运行 robocopy 脚本将测试部署到 PRD。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top