我是Capistrano(版本3.2.1)的绝对菜鸟,所以请原谅我,错误,无用。我部署了一个PHP应用程序并希望在deploy:symlink:release任务之前运行composer install(仅当没有运行回滚时)
我无法访问新创建的版本目录,因为我需要它才能进入并运行编辑器(并运行其他一些项目)。我现在有;
namespace :deploy do
namespace :symlink do
desc 'Run composer'
task :runcomposer do
on roles :all do
execute "cd '#{current_release}' && composer install"
execute "cd '#{current_release}' && ln -s /sites/shared/index.php index.php"
end
end
before :release, :runcomposer
end
end
{current_release}变量此时似乎不存在(这很奇怪,因为运行git pull的目录肯定是在/ releases /目录中创建的(带有适当的时间戳)但是我get'未定义的局部变量或方法" current_release"'
有没有办法可以在“当前'之前确定这个新版本目录?符号链接指向它?非常感谢你。
答案 0 :(得分:2)
# Capfile
require 'capistrano/composer'
默认情况下会计划两项任务
before 'deploy:updated', 'composer:install'
before 'deploy:reverted', 'composer:install'
删除其中一项默认任务
Rake::Task['deploy:reverted'].prerequisites.delete('composer:install')
在官方文档页面上阅读更多内容。
答案 1 :(得分:0)
我留下这个作为对我的问题的评论,但此刻,这是我能找到的唯一答案,所以我将其推广给答案;
好的,所以我已经确定了一种可能的方法,但它看起来很糟糕。即使像我这样的绝对初学者:newreleasedir = capture('ls -t /sites/releases | head -1')
然后
execute "cd /sites/releases/#{newreleasedir} && composer install"
有人请告诉我这太糟糕了,我应该怎么做:)