2011-12-28 4 views
2

git에서 capistrano를 사용하여 php 프로젝트를 배포하고 있습니다. 나는 현재 일부 javascript (jammit 사용) 및 css (yui 사용)을 일부 capistrano 작업을 통해 이미 축소하고 있습니다. 내가보기에 문제는 코드베이스를 로컬에 사전 배포하지 않고 대상 서버에서이 축소 작업을 수행한다는 것입니다. 우려의 원인은 javascript 축소를 yui에서 jammit으로 전환했기 때문에 배포 서버에 이미 설치되어있는 경우 여러 프로덕션 서버에이 새 루비 보석을 설치하지 않아도된다는 것입니다. 내가 코드를 체크 아웃 할 때, 그리고 원격 서버로 보내질 때, 그리고 내가해야할 일이 100 % 명확하지 않기 때문에 anohter 개발자로부터 capistrano 파일을 상속 받았다.배포 전에 소스 코드를 어떻게 축소합니까?

내 초기 생각은 그것을 before "deploy"을하는 것입니다 그러나 다시, 나는에 행동하는 데 사용할 수있는 소스 코드를해야 확실하지 않다.

답변

1

짧은 대답은 "하지 않는다"입니다. deploy 후크 통화 배포 : update_code

배포를 : update_code, {= 제외를> {: no_release => TRUE}}

복사 원격 서버에 프로젝트. 이것은 모든 배포의 첫 번째 단계입니다. 업데이트 된 코드 및 자산을 배포 서버로 이동합니다. 그러나이 작업을 직접 호출하지는 않습니다. 대신 'deploy’ task (to do a complete deploy) or the 업데이트'작업을 호출해야합니다 ('다시 시작'작업을 별도로 수행하려는 경우).

: scm 변수를 사용중인 소스 제어 소프트웨어 (기본값 : subversion)로 설정하고 : deploy_via 변수를 배포에 사용할 전략으로 설정해야합니다 (기본값은 :점검). 하나에서 다음을 수행

는 급습 :

  1. 체크 아웃 코드
  2. 코드에게까지 우편
  3. 이동 코드를 원격 서버
  4. 정리 지역 코드에

(배포 설정에 따라 약간의 차이가 있음).

그러나 다운로드 및 업로드 명령을 사용하여이 문제를 해결할 수있었습니다.

tmp_path = "/tmp/#{release_name}/public" 
download "#{current_path}/public/javascripts", "#{tmp_path}/javascripts/":via => :scp, :recurisve => true 
system "jammit -o #{tmp_path}/javascripts -C#{tmp_path}/javascripts/assets.yml" 
upload "#{tmp_path}/javascripts/common.js", "#{current_path}/public/javascripts", :via => :scp 
system "rm -rf #{tmp_path}" 

꽤 깨끗 아니다 나는 그것을 좋아하지 않아,하지만 그 일이 내가 수행하는 데 필요한 방법으로 일을 가져옵니다.

관련 문제