我们已经使用capistrano多年来部署,并且在去年我的公司在我们的服务器上实施了2FA(Duo)。从那时起,我们偶尔会 部署一个标记为失败的部署,因为它无法删除以前的版本。
SSHKit :: Runner :: ExecuteError:执行[me] @ [one 我们的服务器]:rm退出状态:1 rm stdout: 没有写rm stderr:rm:无法删除 ' /www/our-app/releases/20180525190451/.gnupg':权限被拒绝
我们的部署脚本提取新版本,更改符号链接,重新启动服务器,然后删除最早的版本。它为所有应用服务器/工作人员执行此操作。最后一步有时会失败,因为它可以删除发布目录中的所有内容,但不能删除.gnpug键。
在发布目录中,所有文件都归我的用户帐户所有,但.gnupg是root:
drwx-wS--- 2 root staff 4096 Jun 1 12:01 .gnupg
我可以通过它来解决它,但这是一个烦恼,因为监视器认为部署失败,因为它无法完成部署的最后一步。
我认为有一点可能是一个因素:部署脚本针对所有应用服务器运行,我必须为每台服务器使用2FA - 然后在部署过程中,如果初始化,它有时会重新提示我2FA auth> 1分钟。这可能是罪魁祸首吗?我该怎么办呢?
以下是我们的capistrano宝石版本:
gem 'capistrano', '~> 3.9.0'
gem 'capistrano-rails', '~> 1.3.0'
gem 'capistrano-bundler', '~> 1.2.0'
gem 'capistrano-rbenv', '~> 2.1.1'
gem 'capistrano-github', github: '3scale/github', require: false