2017-09-29 1 views
0

배포 용으로 Capistrano를 사용합니다. My 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 문이 작업 선언문의 외부에 있어야한다고 생각합니다.

당신이 옳습니다. before 및 선언은 최상위 수준에서 수행되어야하며 task 블록 내에서 수행되지 않아야합니다.

당신이 준 예제는 아무 것도하지 않습니다. 배포가 시작되기 전에 당신이 특정 작업을 실행하려면이처럼 deploy:starting 작업에 훅 것이다 :

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

또한, deploy 네임 스페이스에 대한 특별한 아무것도 없다. 시각적으로 분리되도록 다른 네임 스페이스에서 사용자 지정 작업을 선언하는 것이 좋습니다. 그런 다음 내장 된 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" 

의 전체 목록 내장 된 카피 스트라 노의 작업은 before와 함께 사용할 수 있으며 after는 여기에서 찾을 수 :

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

관련 문제