通过 jenkins 和 capistrano 自动部署 rails 应用程序

AutoDeploy rails app via jenkins and capistrano

作为第一步,我使用 Ubuntu 16.04 配置了 AWS EC2 实例,并配置了 Capistrano 以从本地部署到这个 AWS EC2 实例。

现在我正在尝试通过 Jenkins 和 Capistrano 将 rails 应用程序从 GitHub 自动部署到此 Ubuntu 服务器 (AWS EC2)。注意:我是第一次创建自动部署。

我的 rails 应用程序(生产)和 Jenkins 在同一个 Amazon EC2 实例上。 当 Jenkins 任务启动时,它会将 repo 克隆到 jenkins 工作空间,安装 gems 然后执行:cap production deploy

但现在我无法检查 Capistrano 是否已正确配置以部署到同一服务器的另一个文件夹,因为当 cap production deploy 执行时我收到此错误:

Net::SSH::AuthenticationFailed: Authentication failed for user jenkins@

我尝试通过以下方式为用户 jenkins 创建 ssh-key 并将其添加到 ubuntu 用户(默认非根 sudo 用户): ssh-keygen ssh-copy-id ubuntu@127.0.0.1 并且总是得到权限被拒绝的错误。

有人有什么建议吗? 先感谢您 Capistrano 版本 3.11

您可以在 ubuntu 用户的 authorized_keys 文件中添加 jenkin 用户的 public-key。您可以在 /home/ubuntu/.ssh/authorized_keys.

找到它

但是,在我看来,您应该将 jenkins 运行程序迁移到单独的服务器。

您可以创建一个 VPC 组,并将服务器、生产和 jenkins runner 都放在那个 VPC 中,并在同一个 VPC 中公开 ssh 端口,这样外面的人就无法访问它。

然后将jenkins服务器的public密钥添加到生产服务器,正如我上面解释的那样。