提一些更为具体、简单的问题!如果你发布 web 网站,你可以有两种常见形式,一种是使用 ftp 客户端采取“上传”的方式,另一种是使用 svn 采取“checkout”的方式。当然这里的两个名词儿都是举例,你完全可以使用其它类似机制。例如自己开发一个可以更好地比较远程文件跟本地文件差别的客户端,或者使用别的版本管理系统,等等。总之,发布网站是“一键”方式。而且所使用的系统要仅仅发布有所有修改的问题。比如说一个网站下游3000个文件,其中只有35个修改了,那么这个“一键”发布动作就只copy这35个文件,不应该发布多余的文件。
至于你讲的持续集成、增量发布,这个有什么好讲的呢?客户用了你的软件,发现bug;或者客户提出需求变更、增加新需求,都是需要响应的嘛。出错回滚,这个就需要有一个好的更新机制了。
我们通常是这样:
待发布目录(每次要更新的东东,单独创建一个文件夹,文件夹以日期命名,这样保证上次发布的东东单独留档,如果本次发布出现异常,直接拿上一次的东西做新一次发布,也就是还原上次版本)
更新目录(从待发布目录拷贝最新待发布项,供客户端更新)
(上面这个回滚是基于c/s的,b/s的同样可以借鉴。概括一句话就是,发布新版本前备份上次的东东,以便版本回滚)至于你讲的分布式部署,可以考虑搞一个一键发布
一键发布分三步:
1、获取最新代码、编译
2、生成更新文件、拷贝到分布式服务器
3、重启分布式服务器iis(这个目前需要手工重启,批处理统一重启,搞不定)
由专门人员统计并行发布是否有文件冲突,如果有的话需要由开发人员需要做代码合并因为问的是网站或者服务,所以要发布要通知客户并且停止服务,所以一般是深夜.....除非重大更新,否则开发找不到人的以上是理想状况
现实总是紧急而且残酷的.....