6

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

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

4

8 回答 8

6

对于一些项目,我使用Capistrano来推出生活。它建立在 ruby​​ 之上,使部署脚本编写变得超级容易,并且使用 ssh。

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

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

于 2008-08-20T15:32:22.313 回答
4

这似乎是可以使用 SFTP 轻松完成的事情。看看用于 Windows的PuTTY(psftp 和 pscp)或WinSCP ,或用于 Unix 的rsyncOpenSSH 。

于 2008-08-20T15:37:21.473 回答
1

制作您的实时站点目录的副本,使用rsync使用您的最新版本更新该副本,然后重命名实时和更新的目录,以便更新的版本现在是实时的。

在 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 失败,您可能会遇到更严重的问题。)

于 2008-08-20T15:38:28.413 回答
1

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

编辑:set -e应该是脚本中的第一件事,就在#!/bin/bash.

于 2008-08-20T15:55:40.713 回答
1

我将支持Capistrano的建议,但如果您正在寻找基于 GUI 的解决方案,您可以尝试Webistrano前端。干净的、基于 ssh 的、健全的部署和回滚语义以及通过 ruby​​ 的简单脚本和可扩展性。

于 2008-08-22T05:40:29.787 回答
0

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

唯一的缺点是,如果您不做更多工作,您可能无法在集成环境中获得有意义的错误消息(尽管取决于您的设置,这可能就像向标准输出发送错误消息一样简单)。

于 2008-08-20T15:32:58.880 回答
0

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

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

/mp

于 2008-08-20T15:37:06.280 回答
0

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

  • 运行的开发服务器使用 CruiseControl 继续构建。任何签入都会触发构建。QA 测试在这里完成。
  • 一个测试服务器,用户接受测试是在上面完成的。
  • 生产。

工作流程如下:

  1. 开发人员检查对 SourceControl 的更改。
  2. CruiseControl 构建并将构建部署到 Dev。
  3. 开发人员经过质量检查
  4. 通过 QA 后,将运行一个 robocopy 脚本,将 Dev 构建部署到 Test。
  5. 测试是 UAT'ed
  6. 测试通过后,将运行一个将测试部署到 PRD 的 robocopy 脚本。
于 2008-08-22T05:44:28.700 回答