When trying to deploy an app on the production server, the deploy:cleanup
task always died for me like this:
* executing `deploy:cleanup'
* executing "ls -x /opt/sites/mysite/releases"
servers: ["myserver"]
[myserver] executing command
command finished
** keeping 3 of 4 deployed releases
* executing "rm -rf /opt/sites/mysite/releases/20080220092659"
servers: ["myserver"]
[myserver] executing command
** [out :: myserver] sudo: no passwd entry for app!
** [out :: myserver]
command finished
command "rm -rf /opt/sites/mysite/releases/20080220092659" failed on myserver
Turns out capistrano is for some reason trying to use a user called app in the cleanup task even though the :user
parameter is set to something else in config/deploy.rb
. The solution was to set the :runner
parameter as well:
set :runner, 'someotheruser'
Don’t ask me why that worked. It seems a bit counterintuitive that the cleanup task uses the runner
param rather than user
. Found the hint towards the solution here.