首页 > 解决方案 > 通过 jenkins 和 capistrano 自动部署 rails 应用程序

问题描述

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

现在我正在尝试通过 Jenkins 和 Capistrano 将 GitHub 上的自动部署 rails 应用程序制作到这个 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 用户(默认的非 root sudo 用户): ssh-keygen ssh-copy-id ubuntu@127.0.0.1 并且总是得到权限被拒绝错误。

有人有什么建议吗?在此先感谢 capistrano 3.11 版

标签: ruby-on-railsjenkinsamazon-ec2capistrano3

解决方案


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

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

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

然后将服务器的公钥添加jenkins到生产服务器,就像我上面解释的那样。


推荐阅读