Capistrano создает задачу для изменения текущей символической ссылки

Я пытаюсь настроить развертывание Capistrano для своего веб-сайта, у меня развернутая работа, вся проверка подлинности в порядке, но я использую Media Temple, поэтому символическая ссылка по умолчанию не будет работать, поскольку apache не будет иметь доступа к пути, указанному для текущего к последний релиз.

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

Я пробовал использовать sh, но похоже, что он запускает команды на моем компьютере, а не на сервере, команда запуска не найдена, и я попытался выполнить, но не могу найти правильный формат для выполнения таких действий, как rm, ln и т. Д. .

В настоящее время я пытаюсь сделать следующее:

namespace :deploy do

  desc "Change HTML Symlink to relative path"
  task :create_symlink do
    #latest_release_relative = relative_path(deploy_to, release_path + '/html')
    #sh "rm -f #{current_path} && ln -s #{latest_release_relative} #{current_path}"
    #sh "echo #{File.basename release_path}"
    info "echo Modifying symlink to be relative"
    #run "rm -d #{current_path}"
    #run "ln releases/#{File.basename release_path} #{current_path}"
    #execute :rm, '-d', #{current_path}
  end

  desc "Create environment file"
  task :create_env_conf
  file 'env.conf' do |t|
    sh "touch env.conf"
  end

end

after :deploy, "deploy:create_symlink", "deploy:create_env_conf"

person André Figueira    schedule 17.02.2014    source источник


Ответы (1)


После огромного количества проб и ошибок я обнаружил, что проблема заключалась в следующем;

  1. Нужно использовать execute в cap v3

  2. Необходимо cd, затем связать команду с && для запуска команд, специфичных для каталога

  3. Capistrano нужна дополнительная документация ...

Вот как я получил свою работу, я думаю, что есть лучший способ сделать это с помощью Capistrano 3, но я не мог найти адекватную документацию, описывающую, как где-либо.

#config valid only for Capistrano 3.1
lock '3.1.0'

set :application, 'prism-credentials'
set :repo_url, 'REPO URL'

# Default deploy_to directory is /var/www/my_app
set :deploy_to, 'DEPLOY FOLDER'

# Default value for keep_releases is 5
set :keep_releases, 5

set :branch, "master"
if ENV['branch']
    set :branch, ENV['branch']
end

namespace :deploy do

  desc "Change HTML Symlink to relative path"
  task :create_symlink do
    on roles(:app) do

        #execute "ls -l"
        info "Modifying symlink to be relative"
        execute "rm -d #{current_path}"

        info "Deleted current symlink"
        execute "cd ../DEPLOY FOLDER && ln -s ./releases/#{File.basename release_path} current"
        info "Created relative current symlink"

        execute "cd ~/../DEPLOY FOLDER && touch env.conf && echo 'live' >> env.conf"
        info "Created environment file"

    end
  end

end

after :deploy, "deploy:create_symlink"
person André Figueira    schedule 17.02.2014
comment
Не могли бы вы опубликовать код, который решил эту проблему за вас? У меня такая же проблема. - person bigsweater; 02.03.2014
comment
Спасибо! Я закончил тем, что просто переопределил функции символических ссылок по умолчанию, так что и ресурсы, и каталоги обновляются. Возможно, я смогу использовать вашу задачу, чтобы сделать перезапись более модульной ... gist.github.com / bigsweater / 9307075 - person bigsweater; 05.03.2014