|      1hyggyh      2016-07-26 12:53:13 +08:00 完全木有。。老大们都觉得自己手工发布比较靠谱 | 
|  |      2cloudzhou      2016-07-26 13:45:41 +08:00 我以前开发过,一键发布,确实非常有必要,尤其是 10+ 机器的。 | 
|      3yongzhong OP | 
|  |      4cloudzhou      2016-07-26 14:07:50 +08:00 @yongzhong Java ,没什么问题,一台作为发布机器,然后通过 rsync 同步 war 包,做好校验,脚本控制应用重启,监控,几个脚本就搞定了。 这是一件一劳永逸的事请,值得用心去做。 | 
|      5baby4free      2016-07-26 14:09:42 +08:00 自动化构建与发布是非常必要的 节省自己的时间 | 
|  |      6MrJing1992      2016-07-26 14:17:24 +08:00 | 
|      7yongzhong OP @cloudzhou rsync 有什么优势吗,从哪里同步 war 包,本地还是 jenkins?我们是基于 git 的,涵盖自动 pull,配置项,maven 编译,认证后合并 push 等,操作比较繁琐.基于 git 和 Maven 过程中总会被各种因素影响.开发有意见,我们也烦.考虑以后上 docker | 
|  |      8Infernalzero      2016-07-26 15:12:33 +08:00 自己公司开发了一套,挺蛋疼的,每次还得提交发布请求填写发布哪些文件,然后打个包 maven 编译一下 gulp 跑一下就几分钟去了,还有什么紧急发布功能搞得我真心蛋碎,要不是因为一天发布一次到正式环境,真心不想搞这套系统。 | 
|  |      9cloudzhou      2016-07-26 15:18:39 +08:00 @yongzhong 开始的时候并不需要一个庞大的系统,自己用脚本写就可以了。 简单的说就是几个功能: 1 发布机器编译成 War 包 2 rsync 到其他几台机器 3 命令控制机器重启 前台挂 nginx 做自动负载均衡,做到发布期间网站可用。 | 
|  |      10zpvip      2016-07-26 15:29:00 +08:00 | 
|  |      11yxaaa123      2016-07-26 16:35:27 +08:00 自己装了一个 Jenkins | 
|  |      12defunct9      2016-07-26 16:39:15 +08:00 蛋疼,用 saltstack 写脚本发布 | 
|  |      13fanTasy      2016-07-26 16:57:40 +08:00 有,但是很难用 && 必须用…… | 
|  |      14cxbig      2016-07-26 17:00:00 +08:00 capistrano+phpci | 
|  |      15lightening      2016-07-26 17:10:00 +08:00 GitHub 合并到 Master 前会过 CI 。 用 Ansible provision 服务器们,然后 Capistrano 部署。 Ruby on Rails 项目。 开发 /测试环境 dependency 都在 docker 里,本机上只需要跑 App 本身。 | 
|  |      16strwei      2016-07-26 17:11:45 +08:00 我们的 gogs+webhooks | 
|  |      17CarlWangCn      2016-07-26 19:15:42 +08:00 有, 必须有 | 
|      18hantsy      2016-07-26 21:25:44 +08:00 Jenkins , Circle 都可以啊。。。 遵照 Github Flow ,各 Fork PR 的 Push 就集成测试, Merge 到 Upstream Master 执行部署。 | 
|  |      19fxxkgw      2016-07-26 22:42:33 +08:00 django 的框架 然后把发布消息写到 rabbitmq 上 通过 celery 取任务后 paramiko 工具把包推到目标服务器 执行发布脚本获取返回值分析结果。。 | 
|  |      20chocotan      2016-07-26 22:57:31 +08:00 发布多了被批评了,以后不敢用了 | 
|  |      21scarlex      2016-07-26 23:32:32 +08:00 我们用 GitLab CI | 
|      22zlg5      2016-07-27 02:51:25 +08:00 Apollo, Pipeline | 
|  |      23wolfy123      2016-07-27 07:42:21 +08:00 基于 git 的话,用 gitlab 就好了,挺好用的 | 
|  |      249hills      2016-07-27 08:33:45 +08:00 via iPhone 持续集成系统,部署系统。是两个不同的东西,虽然在机器很少时,前者能够替代后者一部分功能。 持续集成 jenkins 就不错,部署么很多种,比较复杂。 | 
|  |      25Dowding      2016-07-27 09:05:33 +08:00 @MrJing1992 最近公司在用 walle ,感觉很不理解为什么一个用 yii2 开发的部署系统对 yii2 这么不友好,每次新项目上线都得配好久,新手得两天左右,总结下来坑如下: 1.各种文件需要新版发布时保持原样,就得 cp 来 cp 去,尤其使用 yii2-advanced 的人应该深有体会 2.由于使用了软链,所以开了 opcache 的话新版上线需要 reload php-fpm ,或者其他方式重置 opcache ,原因是 opcache 解析的文件路径是 realpath 3.如果使用了 git subtree 之类的需要自己在 composer 里添加 autoload 规则的东西,每次新版上线必须 composer dump-autoload ,具体原理不明。 ……好像还有其他的来着 | 
|      27tomoya92      2016-07-27 09:18:32 +08:00 没人做 docker ,然后部署多台服务器吗? | 
|  |      28MrJing1992      2016-07-27 09:47:37 +08:00  1 @takashiki  部署还是挺简单的,因为自带了检测功能; opcache 这个有办法, http://gordalina.github.io/cachetool/ composer dump-autoload 这个应该是你加了一些类,但是 classmap 是旧的,所有要执行。其实生产环境提倡使用 composer dump-autoload -o ,生成 classmap 比直接使用 PSR0/4 是有性能上的提升的。 | 
|  |      29MrJing1992      2016-07-27 09:51:21 +08:00 | 
|  |      30Dowding      2016-07-27 10:12:18 +08:00 @MrJing1992 不错,收藏了,感谢 | 
|      31yongzhong OP | 
|  |      34Dowding      2016-07-27 12:33:38 +08:00 @MrJing1992 对了,话说你说的自动检测是什么样的功能,能自动检测项目内哪些文件发布新版本时需保留么 |