2010-08-02 17 views
4

J'ai une tâche capistrano qui consolide le déploiement de plusieurs étapes d'un projet Rails.Appel d'une tâche capistrano à plusieurs étapes à partir d'une tâche capistrano

Par exemple:

task :consolidated_task do 
    build #creates a new release branch from master, 
      #sets a variable with the relese branch name 

    staging 
    deploy.migrations 

    production 
    deploy.migrations 
end 

Est-ce la bonne façon d'appeler une tâche en plusieurs étapes d'une autre tâche de cap?

La tâche de génération crée une nouvelle branche git et l'a publiée. Le nom de la nouvelle branche est enregistré en tant que variable capistrano. les tâches de l'étape intermédiaire et de l'étape de production utilisent ensuite cette variable pour spécifier la branche à déployer.

Lorsque cette tâche est exécutée, il échoue avec:

fatal: working tree '/Users/<my working directory>' already exists. 
/usr/local/lib/ruby/gems/1.8/gems/capistrano-2.5.19/lib/capistrano/recipes/deploy/strategy/copy.rb:99:in `initialize': No such file or directory - /var/folders/3d/3dKYNUwQGOSLZFXsMF-uv++++TM/-Tmp-/20100802182750/REVISION (Errno::ENOENT) 

Je pousse la source de ma machine locale que le dépôt git et la machine de déploiement ne peuvent pas communiquer entre eux.

+0

Maintenant, il est à 100%. Je dois être un utilisateur de pouvoir! – manlycode

Répondre

7

Les noms de tâches comme

deploy:production:whatever 

sont exposés à l'intérieur comme Cap

deploy.production.whatever 

Vous avez également top namespaces pour aller au-dessus des espaces de noms, parce que les chemins sont relatifs.

Donc, peu importe dans quel espace votre tâche est actuellement vous pouvez toujours faire thigs comme:

top.deploy.production.whatever