Déploiment Capistrano bloqué

Déploiment Capistrano bloqué - Ruby/Rails - Programmation

Marsh Posté le 03-02-2008 à 18:47:55    

Salut à tous,
 
J'utilise Capistrano avec mes projets rails, et forcément, j'y prend tellement gout que je migre progrossivement mes projets autres. Jusqu'à ce projet PHP versionné sous Mercurial.
 
En gros, j'ai voulu commencer simple, avec le fichier de deploiment suivant :
 

Code :
  1. set :application, "mon-appli"
  2. set :repository, "http://hg.mon.domaine.net/#{application}"
  3. set :scm, "mercurial"
  4. set :scm_user, "moi_sur mercurial"
  5. set :scm_password, "mon_pass"
  6. # essayé aussi avec le prompt, il n'apparait même pas
  7. #set :scm_password, Proc.new { Capistrano::CLI.password_prompt('Password : ') }
  8. set :user, "moi en ssh"
  9. ssh_options[:keys] = %w(/home/moi/.ssh/ma clé publique)
  10. set :deploy_to, "/var/www/dev/#{application}"
  11. role :web, "localhost"


 
Et là, ça boucle. En gros, il reste bloqué à la dernière ligne de cette trace :
 

Code :
  1. * executing `deploy'
  2.   * executing `deploy:update'
  3. ** transaction: start
  4.   * executing `deploy:update_code'
  5.   * executing "hg clone --noupdate http://hg.mon.domaine.net/mon-appli /var/www/dev/mon-appli/releases/20080203174151 && hg update --repository /var/www/dev/mon-appli/releases/20080203174151 --clean 263aeeff38a5 && (echo 263aeeff38a5 > /var/www/dev/mon-appli/releases/20080203174151/REVISION)"
  6.     servers: ["localhost"]
  7.     [localhost] executing command


 
Les différentes commandes Mercurial qui apparraissent précédement passent toutes sans encombre dans un shell. Je suis en Ruby 1.8.5, Capistrano 2.1.0. Et le truc, c'est que je ne vois même pas où trouver des logs pour débugger tout ça.
 
Merci d'avance !

Reply

Marsh Posté le 03-02-2008 à 18:47:55   

Reply

Marsh Posté le 05-02-2008 à 12:20:13    

C't'a dire que je peux donner plus de détails si vous voulez [:dawa]

Reply

Marsh Posté le 05-02-2008 à 21:20:49    

Me laissez pas jovaliser /o\
 
Nous en étions restés sur le blocage à la ligne d'exécution suivante :
 

Code :
  1. #   * executing "hg clone --noupdate http://hg.mon.domaine.net/mon-appli /var/www/dev/mon-appli/releases/20080203174151 && hg update --repository /var/www/dev/mon-appli/releases/20080203174151 --clean 263aeeff38a5 && (echo 263aeeff38a5 > /var/www/dev/mon-appli/releases/20080203174151/REVISION)"
  2. #     servers: ["localhost"]
  3. #     [localhost] executing command


 
Au bout d'un moment, j'abandonne donc en tuant la commande, Capistrano fait donc un rollback avec la trace suivante :
 

Code :
  1. command finished
  2. /var/lib/gems/1.8/gems/capistrano-2.1.0/lib/capistrano/command.rb:49:in `sleep': Interrupt
  3.         from /var/lib/gems/1.8/gems/capistrano-2.1.0/lib/capistrano/command.rb:49:in `process!'
  4.         from /var/lib/gems/1.8/gems/capistrano-2.1.0/lib/capistrano/command.rb:36:in `loop'
  5.         from /var/lib/gems/1.8/gems/capistrano-2.1.0/lib/capistrano/command.rb:36:in `process!'
  6.         from /var/lib/gems/1.8/gems/capistrano-2.1.0/lib/capistrano/command.rb:11:in `process'
  7.         from /var/lib/gems/1.8/gems/capistrano-2.1.0/lib/capistrano/configuration/actions/invocation.rb:53:in `run'
  8.         from /var/lib/gems/1.8/gems/capistrano-2.1.0/lib/capistrano/configuration/connections.rb:135:in `execute_on_servers'
  9.         from /var/lib/gems/1.8/gems/capistrano-2.1.0/lib/capistrano/configuration/actions/invocation.rb:51:in `run'
  10.         from /var/lib/gems/1.8/gems/capistrano-2.1.0/lib/capistrano/recipes/deploy/strategy/base.rb:43:in `send'
  11.          ... 31 levels...
  12.         from /var/lib/gems/1.8/gems/capistrano-2.1.0/lib/capistrano/cli/execute.rb:14:in `execute'
  13.         from /var/lib/gems/1.8/gems/capistrano-2.1.0/bin/cap:4
  14.         from /var/lib/gems/1.8/bin/cap:18:in `load'
  15.         from /var/lib/gems/1.8/bin/cap:18


 
Et si je regarde donc dans le fichier command.rb :
 

Code :
  1. # Processes the command in parallel on all specified hosts. If the command
  2.    # fails (non-zero return code) on any of the hosts, this will raise a
  3.    # Capistrano::CommandError.
  4.    def process!
  5.      since = Time.now
  6.      loop do
  7.        active = 0
  8.        @channels.each do |ch|
  9.          next if ch[:closed]
  10.          active += 1
  11.          ch.connection.process(true)
  12.        end
  13.  
  14.        break if active == 0
  15.        if Time.now - since >= 1
  16.          since = Time.now
  17.          @channels.each { |ch| ch.connection.ping! }
  18.        end
  19.        sleep 0.01 # a brief respite, to keep the CPU from going crazy
  20.      end
  21.  
  22.      logger.trace "command finished" if logger
  23.  
  24.      if (failed = @channels.select { |ch| ch[:status] != 0 }).any?
  25.        hosts = failed.map { |ch| ch[:server] }
  26.        error = CommandError.new("command #{command.inspect} failed on #{hosts.join(',')}" )
  27.        error.hosts = hosts
  28.        raise error
  29.      end
  30.  
  31.      self
  32.    end


 
La ligne concernée par la trace précédente est celle du sleep 0.01 (ligne 19 ici). Je vois pas ce qui cloche, et ça commence à me les piler.

Reply

Marsh Posté le 17-03-2008 à 21:35:14    

Salut,
 
Moi c'est à l'étape cap deploy:cold que je coince, apparemment y'a un souci avec mercurial, il me sort: "[err] abort: unknown revision '79d0e246ecb7'!"
 
C'est quoi le process complet avec mercurial et capistrano? j'ai l'impression que l'initialisation est foireuse chez moi. Quel est l'ordre des choses à réaliser?
 
 
En recommençant tout à zéro, j'ai maintenant "[err] abort: branch default not found"  [:sniperlk]
 
 
EDIT: c'est bon, apparemment il faut faire un push initial à la main, ensuite cap deploy:cold fonctionne, bizarre bizarre  [:thalis]
 
EDIT2: c'est foireux, je dois faire un "hg push http://..." avant chaque "cap deploy:cold", y'a un problème  :(


Message édité par totoffe38 le 17-03-2008 à 22:04:18
Reply

Marsh Posté le 25-03-2008 à 13:20:51    

J'ai un peu lâché le truc de mon côté. J'ai pas l'impression que le process soit bien figé pour Mercurial.
Si tu as des pistes, je suis preneur, je peux me fendre de quelques tests aussi.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed