development, rails

Mina 多环境部署支持

By jere on 2017-04-25 0 Comments

使用场景

一般都有两到三个环境

  • 正式环境(production)

  • 测试环境(staging)

  • 开发环境(development)

不能用一个mina deploy 来部署所有的环境吧,我一开始就做的比较矬,添加了多个方法。

task :deploy_staging do
      set :domain, 'xxxx'
      ....
end

task :deploy_dev do
      set :domain, 'xxxx'
      ....
end

但这样会有一个问题,如果也想在不同的环境里执行非deploy 的方法怎么办?总不能把所有的方法都这么写一遍吧!

这肯定是一个普遍的问题

Google了一下就找到了一个gem:mina-multistage

使用方法就是,在deploy目录加上多个环境.rb文件
里面只要指定一下变量就好了,真是太好用了。

新问题

Mina 升级到了1.0.6版本后,发现mina-multistage 不管怎么设置都是用的Master分支,能力有限看了半天的mina-multistage源码也没有看出所以然来,其中有人也报了同样的bug出来。

但还是有收获的,发现mina 本身就支持这样的功能:

task :staging do
  set :domain, 'dev.xxxx.com'
  set :rails_env, 'staging'
  set :branch, 'dev'
end

task :production do
  set :domain, 'www.xxxxx.com'
  set :branch, 'master'
  set :rails_env, 'production'
end

使用方式与multistage一模一样。yeah!

打赏

Leave a comment

您的电子邮箱地址不会被公开。