Capistrano 部署有两个 Git 个存储库
Capistrano deploy with two Git repositories
这是我的 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
这很好用,但我需要添加一个额外的存储库并将其部署到主项目的子目录中。到目前为止,我已经尝试了一些没有成功的事情。感谢您的帮助
第 3.8.2 章
鉴于这可能是 capistrano 的限制,我看到了两种可能的方法(肯定有更多)
将我的评论扩展为答案。
另一种选择是将两个存储库独立部署到不同的文件夹,并使用 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
) 并将其替换为指向辅助应用 (ln -s $OTHER_APP_PATH/current $APP_PATH/shared/lib/myapp
) 的 current
目录的符号链接。
现在,您的辅助应用程序的内容应该会显示在您的主要应用程序的 lib/myapp
文件夹中。
这是我的 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
这很好用,但我需要添加一个额外的存储库并将其部署到主项目的子目录中。到目前为止,我已经尝试了一些没有成功的事情。感谢您的帮助
第 3.8.2 章
鉴于这可能是 capistrano 的限制,我看到了两种可能的方法(肯定有更多)
将我的评论扩展为答案。
另一种选择是将两个存储库独立部署到不同的文件夹,并使用 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
) 并将其替换为指向辅助应用 (ln -s $OTHER_APP_PATH/current $APP_PATH/shared/lib/myapp
) 的 current
目录的符号链接。
现在,您的辅助应用程序的内容应该会显示在您的主要应用程序的 lib/myapp
文件夹中。