0

我已经用尽了自己和我的资源,试图重新创造我上周必须奇迹般创造的东西。

我正在使用运行 Ubuntu 12.10 x64 的 EC2 微实例来使用 Jenkins 和 Capistrano 为 CI 创建测试服务器。

我能够“弄清楚”我上周在做什么,并且拥有一台似乎正在工作的服务器,但发现自己无法重新创建连接到我的 EC2 实例以将代码从 github 推送到所述实例。

这是我运行“cap deploy”时得到的结果:

jenkins@ip-10-170-102-174:/var/www/config$ cap deploy

* 2013-02-24 11:05:11 执行deploy' * 2013-02-24 11:05:11 executingdeploy:update' ** 事务:开始 * 2013-02-24 11:05:11deploy:update_code' executing locally: "git ls-remote git@github.com:example/example.git master" command finished in 1871ms * executing "git clone -q git@github.com:example/example.git /var/www/example/releases/20130224110513 && cd /var/www/example/releases/20130224110513 && git checkout -q -b deploy de26b44bba59e1aa04dc3cf9dbec9dc4d9e4bdf3 && (echo de26b44bba59e1aa04dc3cf9dbec9dc4d9e4bdf3 > /var/www/example/releases/20130224110513/REVISION)" servers: ["example.us-west-1.compute.amazonaws.com"] *** [deploy:update_code] rolling back * executing "rm -rf /var/www/example/releases/20130224110513; true" servers: ["example.us-west-1.compute.amazonaws.com"] ** [deploy:update_code] exception while rolling back: Capistrano::ConnectionError, connection failed for: example.us-west-1.compute.amazonaws.com (NoMethodError: undefined method为“publickey”执行 each':String) 连接失败:example.us- west-1.compute.amazonaws.com (NoMethodError: undefined method `each' for "publickey":String)

这是我的 deploy.rb 文件:

set :app_name, "example"
set :location, "example"
set :application, "example"
set :repository, "git@github.com:example/example.git"
set :user, "jenkins"
set :runner, "jenkins"
set :branch, "master"
set :port, 22
set :deploy_to, "/var/www/#{application}"
set :scm, "git"

ssh_options[:forward_agent] = true
ssh_options[:auth_methods] = "publickey"
ssh_options[:keys] = ["/var/www/jenkins"]
#set :default_stage, "dev"

role :app, "example.us-west-1.compute.amazonaws.com", :primary => true

我需要注意的是,我已经关注了其他几个论坛和指导,我生成的名为“jenkins”的密钥确实允许我连接到服务器,在 /var/lib/jenkins 中工作——这使得这更加令人困惑。

我正在使用用户 Jenkins,因为我可以在我的其他服务器上使用它/它似乎可以让 Jenkins 的使用变得简单。我对此很陌生,并且肯定在努力学习,我已经阅读了几篇文章,观看了几个视频,并且非常沮丧,坦率地说,很累。有人可以帮我吗?

4

1 回答 1

3

我的设置在升级后上周开始表现出相同的行为。(看起来这件事最近发生在我们几个人身上。)

该错误似乎表明[:auth_methods]未以使其可迭代的方式分配。

尝试改变:

ssh_options[:auth_methods] = "publickey"
ssh_options[:keys] = ["/var/www/jenkins"]

对此:

set :ssh_options, {:auth_methods => "publickey"}
set :ssh_options, {:keys => ["/var/www/your_actual_key_file.pem"]}
于 2013-03-13T01:20:43.283 回答