2017-10-12 18 views
0

여기 내 Ruby 프로젝트 용 배포 스크립트가 있습니다.Capistrano는 2 개의 Git 리포지토리와 함께 배포합니다.

set :application, "data" 

set :repo_url, "[email protected]:MyCompany/api_data.git" 

set :deploy_to, '/var/www/data' 

append :linked_files, "config/secrets.yml" 
append :linked_dirs, "log" 

namespace :deploy do 
    desc 'Restart application' 
    task :restart do 
    on roles(:app), in: :sequence, wait: 5 do 
     execute :touch, release_path.join('tmp/restart.txt') 
    end 
    end 
end 

이 작업은 정상적으로 작동하지만 추가로 repo를 추가하고 기본 프로젝트의 하위 디렉토리에 배포해야합니다. 나는 성공하지 못한 채로 몇 가지 시도를 해왔다.

캡 3.8.2

+0

왜 응용 프로그램을 다른 저장소로 분할해야합니까? 비공개 보석은 옵션입니까? – spickermann

+0

추가 리포는 완전히 별개의 애플리케이션입니까? 왜이 응용 프로그램의 하위 디렉토리로로드합니까? 둘 다 동시에 배포해야합니까? –

+0

Capistrano는 Rake 위에 구축되어 있으므로 내부에서 무엇을하는지 항상 볼 수 있으며 특정 작업을 다시 정의하여 변경 작업을 수행 할 수 있습니다. – tadman

답변

0

내 의견을 대답으로 확대.

다른 옵션은 두 저장소를 서로 다른 폴더에 독립적으로 배포하고 linked_dir 및 symlink를 사용하여 두 폴더를 연결하는 것입니다. 나는이 방법을 항상 사용한다.

앱의 출시 경로가 $APP_PATH이고 보조 repo의 출시 경로가 $OTHER_APP_PATH이라고 가정 해 보겠습니다. 예제에서 앱의 lib/myapp에 보조 리포가 필요하다고 가정 해 보겠습니다.

서버의 $OTHER_APP_PATH에 보조 앱을 배포하는 것으로 시작합니다.

그런 다음 앱의 deploy.rb 구성에 append :linked_dirs, 'lib/myapp'을 추가하십시오. 배포 할 때 에 빈 폴더가 있어야하며이 폴더는 $APP_PATH/current/lib/myapp에 심볼릭 링크되어 있습니다. 해당 폴더 (rmdir $APP_PATH/shared/lib/myapp)를 삭제하고 보조 앱의 current 디렉토리로 심볼릭 링크로 바꿉니다 (ln -s $OTHER_APP_PATH/current $APP_PATH/shared/lib/myapp).

이제 보조 앱의 콘텐츠가 기본 앱의 lib/myapp 폴더에 표시됩니다.

0

가 주어진 어떤 도움을 주셔서 감사합니다 내가 두 가지 방법 렇게 볼 아마 카피 스트라 노 제한의 (가 definatly 이상)

  • 는 하위 프로젝트 gem 확인하고 그것을 포함 Fabric 같은 그런 식으로
  • 사용 뭔가 파이썬 코드는 반복적 인 스크립트 배포 도구의 더있는 동안
+0

설명하기에는 너무 긴 이유 때문에 보석은 ​​옵션이 아닙니다. A : linked_dirs는 원격 측에서 git pull을 시작할 수있는 방법이 있다면 트릭을 할 것입니다. 실행할 수있는 모자와 같은 작업이 있습니까? – bopritchard

+0

당신은 아마 이것과 같은 캡 태스크 (submodules), https://gist.github.com/corny/7459729 또는 git hook을 통해 롤백해야 할 것입니다. 죄송합니다. 그러나 요즘 (나를 위해) 모든 것이 준비되면서 스크립트 배포를 처리해야하기 때문에 오랜 시간이 걸렸습니다. – engineerDave

+0

다른 옵션은 서로 다른 폴더에 독립적으로 두 저장소를 배포하고 linked_dir 및 symlink를 사용하여 두 저장소를 연결하는 것입니다. 나는이 방법을 항상 사용한다. –