2017-09-29 8 views
0

私は展開にCapistranoを使用します。私のカピストラーノの仕事は、ほとんどのブログから引用されています。私はしばしば以下の構造を見つける。展開: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 

before 'deploy:hoge', 'deploy:bazz'task声明の中で何をしますか?メッセージは表示されません。私はbeforeステートメントはtaskステートメントの外になければならないと思います。

答えて

0

少なくともCapistrano 3.xには、組み込みのdeploy:initialというタスクはありません。その名前のタスクを宣言しても何も特別なことはありません。

私はbeforeステートメントがタスクステートメントの外側になければならないと考えます。

あなたは正確です。 beforeafterの宣言はトップレベルで実行し、taskブロック内では実行しないでください。

あなたが与えた例は何もしません。デプロイが始まる前に、あなたが特定のタスクを実行したい場合は、このように、deploy:startingタスクをフックになります。

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

さらに、deploy空間についての特別なものは何もありません。別々の名前空間で独自のカスタムタスクを宣言し、視覚的に分けておくことをお勧めします。次に、カピストラノの組み込みタスクとカスタムタスクを簡単に区別することができます。

だから私はこのような例書き直します:あなたはbeforeafterで使用できるビルトインCapistranoのタスクの完全なリストはここで見つけることができます

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" 

を:

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