2017-09-29 8 views
0

J'utilise Capistrano pour le déploiement. Mes tâches Capistrano sont presque citées de nombreux blogs. Je trouve souvent la structure suivante.Qu'est-ce que deploy: initial faire dans la tâche Capistrano

namespace :deploy do 
    desc 'Say something before Deploy' 
    task :initial do 
    on roles(:app) do 
     before 'deploy:hoge', 'deploy:bazz' 
     invoke 'deploy' 
    end 
    end 

    task :hoge do 
    on roles(:app) do 
     puts "'hello, world'" 
    end 
    end 

    task :bazz do 
    on roles(:app) do 
     puts "'goodnight, world'" 
    end 
    end 
end 

Qu'est-before 'deploy:hoge', 'deploy:bazz' faire dans task déclaration? Il n'affiche aucun message. Je pense que la déclaration before doit être en dehors de la déclaration task.

Répondre

0

Dans Capistrano 3.x au moins, il n'existe pas de tâche deploy:initial intégrée. Déclarer une tâche avec ce nom ne fait rien de spécial.

Je pense que before instruction doit être en dehors de l'énoncé de tâche.

Vous avez parfaitement raison. Toutes les déclarations before et after doivent être effectuées au niveau supérieur et jamais dans un bloc task. En l'état, l'exemple que vous avez donné ne fait rien. Si vous voulez exécuter une tâche avant de déployer commence, vous crochet dans la tâche deploy:starting, comme ceci:

before "deploy:starting", "deploy:hoge" 

De plus, il n'y a rien de spécial à propos de l'espace de noms deploy. Je recommande de déclarer vos propres tâches personnalisées dans un espace de noms différent, pour les garder séparées visuellement. Ensuite, vous pouvez facilement distinguer entre une tâche Capistrano intégrée et vos tâches personnalisées.

donc je réécrire l'exemple comme ceci:

namespace :myapp do 
    task :hoge do 
    on roles(:app) do 
     puts "'hello, world'" 
    end 
    end 

    task :bazz do 
    on roles(:app) do 
     puts "'goodnight, world'" 
    end 
    end 
end 

# Invoke hoge and bazz before deployment begins 
before "deploy:starting", "myapp:hoge" 
before "deploy:starting", "myapp:bazz" 

La liste complète des tâches Capistrano intégré que vous pouvez utiliser avec before et after peuvent être trouvés ici:

http://capistranorb.com/documentation/getting-started/flow/