Как мне минимизировать исходный код перед развертыванием - PullRequest
2 голосов
/ 28 декабря 2011

Я развертываю проект php из git с использованием capistrano. В настоящее время я минимизирую свой javascript (используя jammit) и css (используя yui) с помощью некоторых задач capistrano. Проблема, которую я вижу, заключается в том, что я выполняю эту минификацию на целевых серверах, а не один раз на локальном этапе предварительного развертывания базы кода. Причиной беспокойства является то, что я переключил минификацию javascript с yui на jammit и не хочу устанавливать этот новый гем ruby ​​на нескольких производственных серверах, когда мои серверы развертывания уже установили его. Я унаследовал файл capistrano от разработчика anohter, так что я не на 100% уверен в том, когда будет извлечен код, когда он будет отправлен на удаленный сервер, и в какую задачу мне следует подключиться.

Моя первоначальная мысль состоит в том, чтобы сделать это before "deploy", но опять же, я не уверен, что у меня будет доступный исходный код для работы.

1 Ответ

1 голос
/ 29 декабря 2011

Краткий ответ: «Вы не делаете».Перехватывает вызовы deploy deploy: update_code

deploy: update_code, {: кроме => {: no_release => true}}

Копирует ваш проект на удаленные серверы.Это первый этап любого развертывания;перемещение обновленного кода и ресурсов на серверы развертывания.Однако вы редко будете вызывать эту задачу напрямую;вместо этого вам следует вызвать задачу deploy’ task (to do a complete deploy) or the update '(если вы хотите выполнить задачу `restart' отдельно).

Вам нужно будет убедиться, что вы установили переменную: scm для программы управления исходным кодом, которую вы используетеиспользуют (по умолчанию это: subversion) и переменную: deploy_via для стратегии, которую вы хотите использовать для развертывания (по умолчанию: checkout).

, которая делает следующее одним махом:

  1. Код проверки
  2. Zip-код
  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}"

Мне это не нравитсяпоскольку он не такой чистый, но он выполняет работу так, как мне нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...