浅谈rails 项目自动部署
一个项目从开发到上线。该记录点什么。
大概在几个月前开始开发一个管理系统,中间为了练手又写了个开源程序 RailsGun
我觉得值得记录的就是从push 之后的自动化流程了
私有项目也在github
- 1.push 提交代码触发github webhook
- 2.jenkins跑持续集成,跑测试单元(公司项目用jenkins。练手项目用travis-ci.org。开源项目用org结尾的域名。闭源项目用com结尾的域名)
- 3.自动升级部署脚本
github 触发没啥说的。github 有jenkins 应用插件
jenkins
jenkins 要装github插件。接收github的触发hook
当然检测发布分支
为jenkins 服务器单独添加 deploy keys. 把公钥传给github 以确保可以clone 代码
jenkins 有rvm 插件。ruby 环境就变得很容易了。(刚开始不知道rvm,手动配环境。终于明白rvm 有多复杂了。手动配建议用rbenv)
rails test 我知道我测试单元写的很烂。。对集成测试单元测试的理解还不够
自动部署。(这里是重头戏)
先上代码:
1 |
|
每次覆盖代码运行这个脚本
原理:
程序执行之后会创建./tmp/pids/server.pid 文件。并把pid 写入里面
我在测试的时候加了这段代码,不然会找不到编译后的js和css
1 | sed -i 's/config.assets.compile = false/config.assets.compile = true/g' config/environments/production.rb |
我不太理解rails 这个默认参数。以后有待补充
两天后再来补充:
好多ruby on rails 自动部署的都是用capistrano
。关于这个以后有时间再研究
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Hi! 上天不?!
评论