Capistrano 3 runs every command twice (new install) - Configuration issue

空扰寡人 提交于 2020-01-14 12:16:08

问题


I just completed my capistrano installation for the first time. Most of everything is left to default settings, I configured my server, its authentification, and the remote folder, as well as the access to my git repository.

I use capistrano to deploy php code to my server.

cap staging deploy and cap production deploy function, but they run every command twice. It sometimes causes problems when those tasks are executed too quickly on the server, returning error codes, which stops the deploying process.

an example of my output when running cap staging deploy

DEBUG[47ecea59] Running /usr/bin/env if test ! -d ~/www/test_server/repo; then echo "Directory does not exist '~/www/test_server/repo'" 1>&2; false; fi on ftp.cluster013.ovh.net
DEBUG[47ecea59] Command: if test ! -d ~/www/test_server/repo; then echo "Directory does not exist '~/www/test_server/repo'" 1>&2; false; fi
DEBUG[c450e730] Running /usr/bin/env if test ! -d ~/www/test_server/repo; then echo "Directory does not exist '~/www/test_server/repo'" 1>&2; false; fi on ftp.cluster013.ovh.net
DEBUG[c450e730] Command: if test ! -d ~/www/test_server/repo; then echo "Directory does not exist '~/www/test_server/repo'" 1>&2; false; fi

It does the same with every single task, except the one I defined myself (in my deploy.rb, I defined a :set_distant_server task that moves around files with server info)

I am pretty sure I missed something during the initial configuration.

Here is my capfile, still to default settings :

# Load DSL and Setup Up Stages
require 'capistrano/setup'

# Includes default deployment tasks
require 'capistrano/deploy'

# Includes tasks from other gems included in your Gemfile
# require 'capistrano/rvm'
# require 'capistrano/rbenv'
# require 'capistrano/chruby'
#require 'capistrano/bundler'
#require 'capistrano/rails/assets'
#require 'capistrano/rails/migrations'

# Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }

Followed by my deploy.rb file: # config valid only for Capistrano 3.1 lock '3.2.1'

set :scm, :git
set :application, 'Application name'
# I use token authentification
set :repo_url, 'https://XXXXXXXXXXX:@XXXXXXX.git'

set :role, 'web'


# Default value for :log_level is :debug
set :log_level, :debug
set :tmp_dir, 'www/test_server/tmp'
set :keep_releases, 8


role :deploy_server, "XXXuser_name@XXXX_server"

task :set_distant do
    on roles(:deploy_server) do
        execute 'echo ------------******* STAGING *******------------'
        execute 'cp ~/www/test_server/current/access_distant.php ~/www/test_server/current/access.php'
        execute 'cp ~/www/test_server/current/session_distant.php     ~/www/test_server/current/session.php'
    end
end


after "deploy:finished", :set_distant

Here is my staging.rb, much shorter:

 server 'XXX_server', user: 'XXXuser_name', roles: %w{web}, port: 22, password: 'XXXpassword'
 set :deploy_to, '~/www/test_server'
 set :branch, 'staging'

And my production.rb, very similar:

 server 'XXX_server', user: 'XXXuser_name', roles: %w{web}, port: 22, password: 'XXXpassword'
 set :deploy_to, '~/www/beta/'

I'm pretty sure I missed a step in all the prerequisites to make it run nicely. I am new to ruby, to gems, and didn't use shell for a very long time.

Does anyone see why those commands are run twice, and how I could fix it?

In advance, many many thanks.

Additional info: Ruby version: ruby -v ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]

Capistrano version: cap -V Capistrano Version: 3.2.1 (Rake Version: 10.1.0)

I did not create a Gemfile or set it up, I understood it was not needed in Capistrano 3. Anyway, I would not know how to do it.


回答1:


I was having this same issue and realized I didn't need both

role :web

and

server '<server>'

I got rid of role :web and that got rid of the 2nd execution.



来源:https://stackoverflow.com/questions/24905349/capistrano-3-runs-every-command-twice-new-install-configuration-issue

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!