Capistrano Rails部署升级到Rails 5.1.5失败,仍将当前设置为失败部署

时间:2018-11-12 14:32:14

标签: ruby-on-rails git capistrano

我决定将Rails应用程序从5.0.1升级到5.1.5。其中包括将Zurb Foundation从6.2.3升级到6.4.x,这样我就可以开始学习grix-xy。

我有两个Rails应用程序已部署到Debian盒子中。一种是到本地信箱,该信箱是用于管理VFW(外国战争退伍军人)岗位的自定义应用程序。几个月前,我在那个盒子上做了同样的升级,只有很小的问题。缺少yarn和node.js似乎是问题之一,但这已经持续了几个月。另一个部署到Digital Oceans虚拟服务器。这就是我被困住的那个。

我的过程是

  • 添加并签出了rails5.1分支
  • 更改gemfile以使用新的轨道和基础轨道
  • 使用过的Rails应用程序:更新以更新系统内容
  • 进行了新的生成安装
  • 清理视图以使用更新版本的Foundation
  • 测试了我的开发能力
  • 将rails5.1分支合并为master并提交对我的仓库的更改
  • 试图使用Capistrano进行部署-卡住了

我担心SECRETS,但是我的方法适用于VFW应用程序(使用rbenv-vars设置机密)。我进行了一次封盖生产部署,这使我开始陷入困境。

我遇到了纱线错误

 DEBUG [27ff41fe] Command: cd /home/deploy/apps/pt_golfer/releases/20181111214738 && ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.3.1" RAILS_ENV="production" RAILS_GROUPS="" ; RBENV_ROOT=$HOME/.rbenv RBENV_VERSION=2.3.1 $HOME/.rbenv/bin/rbenv exec bundle exec rake assets:precompile )
 DEBUG [fee53ebb]   Yarn executable was not detected in the system.
 DEBUG [fee53ebb]   
 DEBUG [fee53ebb]   Download Yarn at https://yarnpkg.com/en/docs/install
 DEBUG [fee53ebb]   
 DEBUG [fee53ebb]   I, [2018-11-11T16:37:28.513883 #11920]  INFO -- : Writing /home/deploy/apps/pt_golfer/releases/20181111214738/public/assets/application-683e0728d4efb1932c42933c1d3e66430959c9f4575bf91d83518c647597847f.js
 DEBUG [fee53ebb]   I, [2018-11-11T16:37:28.514512 #11920]  INFO -- : Writing /home/deploy/apps/pt_golfer/releases/20181111214738/public/assets/application-683e0728d4efb1932c42933c1d3e66430959c9f4575bf91d83518c647597847f.js.gz
 DEBUG [fee53ebb]   I, [2018-11-11T16:37:28.516684 #11920]  INFO -- : Writing /home/deploy/apps/pt_golfer/releases/20181111214738/public/assets/application.js-d85e0f2634e381cd64bda8c1bc5a6097e295cbdbbd7ef0880e0016d19cfa6e35.copy
 DEBUG [fee53ebb]   I, [2018-11-11T16:37:28.519517 #11920]  INFO -- : Writing /home/deploy/apps/pt_golfer/releases/20181111214738/public/assets/_settings.scss-b317c61809f397c15bef60771da1f85f01f265fa195aabb8dc44da529c36319c.copy
 DEBUG [fee53ebb]   rake aborted!
Autoprefixer doesn’t support Node v0.10.29. Update it.

但是部署仍在继续,我很确定它将设置“当前”链接到失败的部署 然后,我在DO虚拟服务器上安装了yarn,并尝试再次进行部署。

这一次它似乎完成了部署,但是在unicorn:restart任务中失败了

 INFO [3dfc7929] Running RBENV_ROOT=$HOME/.rbenv RBENV_VERSION=2.3.1 $HOME/.rbenv/bin/rbenv exec bundle exec unicorn -c /home/deploy/apps/pt_golfer/current/config/unicorn.rb -E production -D as deploy@my.do.ip.238
DEBUG [3dfc7929] Command: cd /home/deploy/apps/pt_golfer/current && ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.3.1" ; RBENV_ROOT=$HOME/.rbenv RBENV_VERSION=2.3.1 $HOME/.rbenv/bin/rbenv exec bundle exec unicorn -c /home/deploy/apps/pt_golfer/current/config/unicorn.rb -E production -D )
DEBUG [355f81af]  master failed to start, check stderr log for details

在我的终端上,我确实看到了以下错误

(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as deploy@@my.do.ip.238: cat /home/deploy/apps/pt_golfer/shared/tmp/pids/unicorn.pid.oldbin exit status: 1
cat /home/deploy/apps/pt_golfer/shared/tmp/pids/unicorn.pid.oldbin stdout: Nothing written
cat /home/deploy/apps/pt_golfer/shared/tmp/pids/unicorn.pid.oldbin stderr: cat: /home/deploy/apps/pt_golfer/shared/tmp/pids/unicorn.pid.oldbin: No such file or directory

这时,独角兽仍在运行旧版本。我走了一条通往更多失败之路。

我尝试了一次制帽独角兽:硬重启。那杀死了旧版本,但没有启动新服务器

弄清楚我在某种我不了解的事情上失败了,我进行了一次瓶盖生产回滚。失败并显示错误消息“找不到资产清单文件(或备份文件)”

看我的部署结构“当前”,它指向上一个失败的部署版本(有两个)。然后,我跳下了鲨鱼,将最新版本链接到最新的好版本(rails 5.0.x),并开始使用独角兽。它提出了旧的红宝石,但新的CSS!它是可行的,幸运的是,我没有进行太多的CSS更改,我的顶栏与基础CSS的更改完全搞混了,但是功能正常。

我的问题是我从这里去哪里?我可以尝试恢复我的登台服务器,但这可能需要几天的时间。我想我也可以尝试以某种方式在我的DO虚拟主机上进行暂存。

如果我是git专家,我敢肯定这是一种回到我的上一次提交的方式,但是仍然保留rails5.1分支,直到我弄清楚出了什么问题。

我的下一条路,因为知道我可以提出旧版本,所以它试图找出什么是独角兽失败错误。猜测做一个捆绑高管独角兽应该使Capistrano脱颖而出。

1 个答案:

答案 0 :(得分:0)

Capistrano错误尚不清楚在哪里可以找到错误所在。

由于没有任何建议,我切换到当前的新版本,并尝试使用service unicorn start来启动它,但出现了我可以遵循的错误。

Nov 13 04:19:36 stevealex systemd[1]: Starting LSB: starts the unicorn app server...
Nov 13 04:19:41 stevealex unicorn_ptgolf[28314]: master failed to start, check stderr log for details
Nov 13 04:19:41 stevealex systemd[1]: unicorn_ptgolf.service: control process exited, code=exited status=1
Nov 13 04:19:41 stevealex systemd[1]: Failed to start LSB: starts the unicorn app server.
Nov 13 04:19:41 stevealex systemd[1]: Unit unicorn_ptgolf.service entered failed state.

最终,这使我指向了unicorn.stderr.log(如果几年来没有部署问题,那您就算了!)。我发现了:

NoMethodError: undefined method `skip_before_filter' for SaController:Class
Did you mean?  skip_before_action

然后我记得这是从5.0升级到5.1进行检查的项目之一。

解决了该问题,然后我就可以运行了。

我想我一个晦涩的问题的答案是:“检查所有系统日志,您最终会发现一个错误,意味着某些事情”