Capistrano部署了两个Git存储库

时间:2017-10-12 19:34:55

标签: ruby-on-rails ruby git capistrano capistrano3

这是我的Ruby项目的简易部署脚本。

set :application, "data"

set :repo_url, "git@github-data:MyCompany/api_data.git"

set :deploy_to, '/var/www/data'

append :linked_files, "config/secrets.yml"
append :linked_dirs, "log"

namespace :deploy do
  desc 'Restart application'
  task :restart do
    on roles(:app), in: :sequence, wait: 5 do
      execute :touch, release_path.join('tmp/restart.txt')
    end
  end
end

这很好但我需要添加一个额外的repo并将其部署到主项目的子目录中。到目前为止,我尝试了一些没有成功的事情。谢谢你的帮助

第3.8.2章

2 个答案:

答案 0 :(得分:0)

鉴于它可能是一个capistrano限制,我看到两种可能的方法(绝对更多)

  • 将子项目设为gem并以此方式包含
  • 使用像Fabric这样的东西,而python代码更像是一个迭代的脚本部署工具

答案 1 :(得分:0)

将我的评论扩展为答案。

另一种选择是将两个存储库独立部署到不同的文件夹,并使用linked_dirs和符号链接来连接这两个存储库。我一直都在使用这种方法。

我们假设您的应用的发布路径为$APP_PATH,并且您的辅助仓库的发布路径为$OTHER_APP_PATH。我们还假设您需要在您的应用中显示lib/myapp的辅助回购。

我首先将您的辅助应用部署到服务器上的$OTHER_APP_PATH

然后将append :linked_dirs, 'lib/myapp'添加到您应用的deploy.rb配置中。部署时,您应该在$APP_PATH/shared/lib/myapp处有一个空文件夹,该文件夹与$APP_PATH/current/lib/myapp符号链接。删除该文件夹(rmdir $APP_PATH/shared/lib/myapp)并将其替换为辅助应用的current目录的符号链接(ln -s $OTHER_APP_PATH/current $APP_PATH/shared/lib/myapp)。

现在,辅助应用的内容应该显示在您主要应用的lib/myapp文件夹中。