新手问题 代码库放 Github,代码中密码的处理?

as181920 · 2013年03月08日 · 最后由 allenwei 回复于 2013年03月08日 · 4104 次阅读

工程代码直接放在 github 上,capistrano 部署也直接用 github 的库。

代码可以开放,但是里面配置的密码一般怎么处理?比如 config/init 下面的加了文件设置 mail 的帐号密码之类,如果不公开密码,但是又能用这个库自动部署?

用 .gitignore 排除文件,需要的文件 copy 成 config.example.yml 这样 或者将密码之类的东西用环境变量来存放

2 楼 已删除

#1 楼 @huacnlee ignore 和加 example 我知道,然后 capistrano 部署的时候用 github 的库没有那个文件运行会有问题吧

自己部署的话,还是建议使用 bitbucket,我们一直在用,支持私库

https://github.com/ruby-china/ruby-china/blob/master/config/deploy.rb

capistrano 部署过程将服务器上面配置好的文件软链接到需要的位置

#4 楼 @NonTwitter 私库的话我直接在自己服务器上有 git 库服务,没有搭前台界面(因为没需求,命令行够用了),只是有时候 github 之类的要比我的服务器活更久更保证文件不会丢哈(放个人代码更方便)。

@as181920 那 bitbucket 不也可以么。。。。按照你的需求

#4 楼 @NonTwitter 其实也可以直接引用本地的 git 源,在内网就是这么做的

set :scm, :git                              
set :repository, '.'                        
set :deploy_via, :copy                     
set :copy_cache, true

@diudiutang 本地硬盘感觉更不靠谱,用的 SSD,坏了恢复都没办法

#9 楼 @NonTwitter git 服务器在内网上,本地只是一个 copy,这样部署就不用找个外网的 git 服务器了

#5 楼 @huacnlee 软连接这个可以用,多谢!

#4 楼 @NonTwitter 其实没用过 bitbucket,见笑了。刚才去看了,可以用。对于我这种没时间折腾的,往往找方案直接用最主流的,就一直 github 了,没研究过其它的。

#10 楼 @diudiutang 对我放外网更方便,到哪都可以随获取随时用,特别我有自己服务器免费外网 ip 和机房给我用。

我的做法是代码放 github,但是 capistrano 的 Capfile 放本地,然后写一个 task,用 sed 来替换:

namespace :deploy do
  desc "change prod config"
  task :change_prod_config do
    cmd = "cd #{fetch(:latest_release)} && sed -i 's/DEFAULT_PWD/REAL_PWD/g' config/environments/production.rb"
    run cmd
  end
end

这样好处是可以在本地用默认配置,方便有时候需要本地进行 production 的模式测试。真正的密码只掌握在负责部署的人,改了密码的话,只用改他本地 Capfile 里面配置即可。

capistrano 的话,可以用 upload 方法,部署的时候把本地的文件拷贝上去 https://github.com/capistrano/capistrano/wiki/2.x-DSL-Action-File-Transfer-Upload

需要 登录 后方可回复, 如果你还没有账号请 注册新账号