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