Capifony — развертывание, когда приложение Symfony не находится в корне репозитория Git.

Я использую Capifony (v2.15.5) для развертывания своего приложения Symfony (2.6.5) на удаленном сервере. Я использую стратегию развертывания "a)", при которой изменения передаются в Git, а затем при развертывании сервер клонируется репозиторий для предоставления последних файлов приложений. До недавнего времени у меня это работало нормально, но я внес изменения в структуру своего репо, и теперь это не так.

В частности, раньше было так: корень проекта Symfony такой же, как корень Git:

[root]
    app/
    src/
    web/

Но теперь это так, корень проекта Symfony является дочерним корнем Git:

[root]
    dbscripts/
    docs/
    webapp/
        app/
        src/
        web/

Неудивительно, что это доставляет Capifony некоторые проблемы, но я думал, что можно будет настроить выход, но пока не повезло.

Вот некоторые из моих файлов deploy.rb:

set :app_path,    "webapp/app"

set :repository,  "ssh://[repodetails]"
set :scm,         :git

set :shared_files,      [app_path+"/config/parameters.yml"]
set :shared_children,     [app_path + "/logs", "webapp/vendor"]

set :use_composer, true

Как видите, я попытался отразить новый корень Symfony в конфиге, и это меня пока завело, но в настоящее время мои развертывания терпят неудачу на этапе Composer, потому что он выполняет команду установки в корне Git, что не 't где composer.json и composer.lock.

Я нашел здесь очень похожий вопрос: Переопределенный корневой проект symfony. Там не так много деталей, и ему 3 года, поэтому я подумал, что его стоит пересмотреть.

Я потенциально могу вернуть его в прежнее состояние и, возможно, сохранить некоторое подобие старой структуры, используя подмодули Git (хотя для меня это новая территория). Но мой вопрос: можно ли настроить Capifony для правильной работы с корнем Symfony, а не с корнем Git; если да, то как; если нет, то какой лучший способ обойти это.

Заранее спасибо!


person frumious    schedule 15.04.2015    source источник


Ответы (1)


Я нашел сообщение в блоге на немецком языке, посвященное этой проблеме здесь. В основном вам нужно изменить эти значения конфигурации:

set :cache_path, "api/app/cache"
set :composer_options, "--no-dev --verbose --prefer-dist --optimize-autoloader --working-dir=api"
set :composer_dump_autoload_options, "--optimize --working-dir=api"
set :symfony_console, "api/app/console"

Также соответствующим образом измените значения shared_files / shared_children.

В этом примере проект Symfony2 был установлен в каталоге api. Просто измените его на свои нужды.

person ferdynator    schedule 15.04.2015
comment
Красиво, я как можно скорее займусь этим и вернусь к вам - person frumious; 16.04.2015