我正在使用Windows 10和Cygwin,我正在设置Capistrano 3以部署到我的生产环境。我相信我已经正确设置了一切,但我无法弄清楚如何将我的本地仓库推送到我的生产服务器。我没有在GitHub或其他类似网站上拥有我的回购邮件,并希望将其保留在本地。运行cap production deploy
时收到以下错误消息。
SSHKit :: Runner :: ExecuteError:执行时出现异常 myappuser@myappname.website.com:git退出状态:128 git stdout: 没有写任何git stderr:致命:没有远程配置列出引用 从
SSHKit :: Command :: Failed:git退出状态:128 git stdout:没什么 写git stderr:致命:没有远程配置列出引用。
任务:TOP => git:check(通过使用--trace运行任务来查看完整跟踪) 部署失败并出现错误:执行时出现异常 myappuser@myappname.website.com:git退出状态:128 git stdout: 没有写任何git stderr:致命:没有远程配置列出引用 从
这是我的config\deploy.rb
文件:
# config valid only for current version of Capistrano
lock '3.4.0'
set :application, 'myappname
set :deploy_user, 'myappuser'
set :repo_url, "file:///C:/Users/me/Documents/repo/myappname.git"
# setup rvm.
set :rbenv_type, :user
set :rbenv_ruby, '2.1.5-p273'
set :rbenv_prefix, "RBENV_ROOT=#{fetch(:rbenv_path)} RBENV_VERSION=#{fetch(:rbenv_ruby)} #{fetch(:rbenv_path)}/bin/rbenv exec"
set :rbenv_map_bins, %w{rake gem bundle ruby rails}
set :assets_roles, [:app]
# Default value for :scm is :git
set :scm, :git
# Default value for :linked_files is []
set :linked_files, %w{config/database.yml config/application.yml}
# Default value for linked_dirs is []
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}
# Default value for keep_releases is 5
set :keep_releases, 5
# which config files should be copied by deploy:setup_config
# see documentation in lib/capistrano/tasks/setup_config.cap
# for details of operations
set(:config_files, %w(
nginx.conf
application.yml
database.yml
unicorn.rb
unicorn_init.sh
))
# which config files should be made executable after copying
# by deploy:setup_config
set(:executable_config_files, %w(
unicorn_init.sh
))
# files which need to be symlinked to other parts of the
# filesystem. For example nginx virtualhosts, log rotation
# init scripts etc. The full_app_name variable isn't
# available at this point so we use a custom template {{}}
# tag and then add it at run time.
set(:symlinks, [
{
source: "nginx.conf",
link: "/etc/nginx/sites-enabled/{{full_app_name}}"
},
{
source: "unicorn_init.sh",
link: "/etc/init.d/unicorn_{{full_app_name}}"
},
{
source: "log_rotation",
link: "/etc/logrotate.d/{{full_app_name}}"
}
])
namespace :deploy do
# compile assets locally then rsync
after :finishing, 'deploy:cleanup'
end
我发现的所有答案都没有解决方案或者是Capistrano 2,所以我想知道选项是否已经改变。任何帮助将不胜感激!
修改
我已经取得了一些进展,但它还没有阅读我当地的回购。这是错误消息:
SSHKit :: Command :: Failed:git退出状态:128 git stdout:没什么 写的git stderr:致命的:' / C:/Users/me/Documents/repo/myappname.git' 似乎不是一个致命的git存储库:无法读取 远程存储库。
请确保您拥有正确的访问权限和存储库 存在。
我为我的回购尝试了所有不同的路径组合。我的git repo位于以下路径:C:/Users/me/Documents/repo/myappname
。有没有具体的方法来引用我的本地回购?
答案 0 :(得分:2)
不幸的是,这不是Capistrano的设计工作方式。 Capistrano的基本假设是您的项目驻留在服务器可以访问的存储库中(几乎总是这是一个在Bitbucket或GitHub上托管的Git仓库)。
Capistrano 通过在服务器上运行git命令来提取源代码。服务器无法查看您的本地存储库,这就是它无效的原因。
有些插件尝试更改Capistrano的行为,以允许您正在寻找的 push 样式部署。在GitHub上搜索“capistrano copy”并试用它们。这个可能就是你想要的:
答案 1 :(得分:1)
我一直在使用capistrano-scm-copy通过SCP从我的开发箱上传到AWS进行部署。注意事项 - 这就像用剪刀跑。很高兴能够进行快速修补程序部署,实际上是在生产和执行git提交。但是你需要非常小心,不要忘记提交部分。