Tag: capistrano3

Capistrano返回错误的release_path

我有一个关于capistrano版本3.2.1的问题。 在我的deploy.rb文件中,我使用以下行: set :theme_path, “#{release_path}/web/app/themes/myproject” 变量release_path没有显示到最新的release文件夹,比如应该说201409151420 ,但是它指向文件夹current ,所以输出是: DEBUG[68031037] Command: cd /var/www/myproject/current/web/app/themes/myproject && ( WP_ENV=staging /usr/bin/env npm install –silent ) 输出应该是: DEBUG[68031037] Command: cd /var/www/myproject/201409151420/web/app/themes/myproject && ( WP_ENV=staging /usr/bin/env npm install –silent ) 有谁知道,为什么release_path变量没有显示到正确的文件夹? 谢谢您的帮助。

Capistrano 3:在任务中使用服务器自定义变量

我有多阶段多服务器设置,在我的任务中我需要使用服务器名称,例如在stagin.rb我有: set :stage, :staging # Define servers server ‘xxx.xx.xx.xxx’, user: ‘deploy’, roles: %w{app}, name: ‘app1’ server ‘xxx.xx.xx.yyy’, user: ‘deploy’, roles: %w{app}, name: ‘app2’ 我想在我的任务中使用“name”变量: task :configure do on roles(:app), in: :parallel do # how do I get server name here? end end

如何通过capistrano 3运行自定义rake任务?

哪种方式,我可以通过远程服务器上的capistrano运行rake命令。 例如,我有一些lib/task/reparse.rake和一些方法 desc “it’s take csv file, makes some changes and fill db with this info” task :example1 => :environment do require ‘csv’ rows_to_insert = [] # some actions # … end 在本地服务器上一切都很好 – 我只是运行rake reparse:example1并且它正常工作(正确填充db)。 所以问题是 – 如何在部署后在真实主机上运行此命令? 我使用rails 4.1 + capistrano 3。 来自网站的PS示例对我不起作用如何从Capistrano运行rake任务? 如果我尝试cap production rake:invoke task=reparse:land它失败了: cap aborted! Don’t know how to […]

如何指示Capistrano 3加载我在远程主机上设置的shell环境变量?

我想指示Capistrano加载在远程服务器上定义的环境变量。 我怎样才能做到这一点? 似乎当我在.bashrc文件中导出我的环境变量时,Capistrano不会考虑它们。 Capistrano似乎正在执行/usr/bin/env来创建执行远程命令的环境,但这似乎并没有从.bashrc加载环境变量。 我也告诉你,我也在使用rvm-capistrano (以防它可能有所帮助)。 任何线索?

NoMethodError:main:Object的未定义方法`on’

当我尝试bundle exec cap production deploy –trace我收到一条错误消息: deploy@h2540559:/www/apps/foodsoft$ bundle exec cap production deploy –trace ** Invoke production (first_time) ** Execute production ** Invoke load:defaults (first_time) ** Execute load:defaults ** Invoke rvm:hook (first_time) ** Execute rvm:hook cap aborted! NoMethodError: undefined method `on’ for main:Object /usr/local/rvm/gems/ruby-2.0.0-p643/gems/capistrano-rvm-0.1.2/lib/capistrano/tasks/rvm.rake:17:in `block (2 levels) in ‘ /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:248:in `call’ /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:248:in `block in execute’ /usr/local/rvm/gems/ruby-2.0.0-p643/gems/rake-11.1.1/lib/rake/task.rb:243:in […]

Capistrano 3 + Sprockets 3 + Rails 4.2.1不会部署?

我运行了bundle update并将更新的sprockets更新到3.0.0。 当我尝试通过Capistrano 3进行部署时,出现以下错误: INFO [e54ac5ca] Running /usr/bin/env cp /var/www/testapp/releases/20150414002210/public/assets/manifest* /var/www/testapp/releases/20150414002210/assets_manifest_backup as deploy@xx.xxx.xxx.xx DEBUG [e54ac5ca] Command: cd /var/www/testapp/releases/20150414002210 && /usr/bin/env cp /var/www/testapp/releases/20150414002210/public/assets/manifest* /var/www/testapp/releases/20150414002210/assets_manifest_backup DEBUG [e54ac5ca] cp: cannot stat ‘/var/www/testapp/releases/20150414002210/public/assets/manifest*’ DEBUG [e54ac5ca] : No such file or directory DEBUG [d2c5a990] cp: cannot stat ‘/var/www/testapp/releases/20150414002210/public/assets/manifest*’ DEBUG [d2c5a990] : No such file or directory cap aborted! SSHKit::Runner::ExecuteError: Exception […]

Capistrano 3在目录中执行

我正在尝试为Capistrano 3编写一个涉及在当前版本目录中执行“composer install”的任务。 它看起来像这样: namespace :composer do desc ‘Install dependencies with Composer’ task :install do on roles(:web) do within release_path do execute “#{fetch(:composer_command)} install” end end end end composer_command在登台和生产文件中设置 – 在我的特定情况下设置为php /home/user/composer.phar 由于某种原因,此命令实际上并不在当前版本目录中运行,而是在父目录中运行(包含当前,共享,版本等) 我深入研究了这一点,发现当我运行单个单词命令时,如: within release_path do execute “pwd” end 它工作正常,并在当前版本目录中运行该命令。 但是……当我运行带空格的命令时,例如: within release_path do execute “pwd && ls” end 它在父目录中运行,而不是由within块设置的目录。 有人可以对此有所了解吗? 谢谢!

Capistrano 3改变任务中的ssh_options

我尝试使用不同的ssh_options在同一阶段运行capistrano v.3任务。 我的production.rb说: set :stage, :production set :user, ‘deploy’ set :ssh_options, { user: ‘deploy’ } 通过这种配置,capistrano与用户部署连接,这对于其余的用户来说是正确的。 但我需要在服务器中配置良好的an_other_user将其连接到一个特定任务。 然后我的食谱说: … tasks with original user … task :my_task_with_an_other_user do set :user, ‘an_other_user’ set :ssh_options, { user: ‘an_other_user’ } on roles(:all) do |host| execute :mkdir, ‘-p’, ‘mydir’ end end … other tasks with original user … 执行时: cap […]