deployment - capistrano ssh 连接 - 从 cron 或 teamcity 运行时不起作用

标签 deployment teamcity capistrano multistage

我整天都在研究这个问题,似乎找不到答案,所以我在这里发帖。我们正在使用 capistrano 多阶段来部署我们的 ruby​​ on rails 应用程序,一切都很好,直到我们进行自动化部署。

现在,只要以交互方式运行,就没有问题,部署完成就好了。我们现在正在考虑在每次成功构建后使用 ci (Teamcity) 部署到我们的暂存环境。

在 CI 服务器上,运行“ssh server1”或“ssh deploy@server1”没有问题。

我的 ci 阶段看起来像这样,并且在命令行中再次正常工作

set :branch, "development"
set :rails_env, "staging"
set :user, "deploy"

$:.unshift(File.expand_path('./lib', ENV['rvm_path']))
require 'rvm/capistrano'
set :rvm_ruby_string, 'ruby-1.9.2-p290'
set :rvm_bin_path, "/usr/local/rvm/bin/"

default_run_options[:pty] = true
ssh_options[:verbose] = :debug 
default_run_options[:pty] = true 

role :app, "server1"
role :web, "server1"
role :utility, "server2"
role :db,  "server1", :primary => true

我的 deploy.rb 非常大,但这些是相关设置
# Repo Settings
set :repository,  "git@github.com:myrepo/myrepo.git"
set :scm, "git"
set :checkout, 'export'
set :copy_exclude, ".git/*"
set :deploy_via, :remote_cache

# General Settings
default_run_options[:pty] = true
set :ssh_options, { :forward_agent => true }
set :keep_releases, 20
set :use_sudo, false

在 Team City 下作为最后的构建步骤,我添加了一个命令行任务,它只是“cap ci deploy:setup” - 作为比完整部署更容易的测试

上限日志向我显示了这一点:
[03:27:38]: [Step 4/10] D, [2011-11-21T03:27:38.103284 #22035] DEBUG -- net.ssh.authentication.session[70ca88]: allowed methods: publickey,password
[03:27:38]: [Step 4/10] E, [2011-11-21T03:27:38.103328 #22035] ERROR -- net.ssh.authentication.session[70ca88]: all authorization methods failed (tried publickey)

cronjob 似乎也发生了同样的事情 - 但是那里没有日志

对我来说,这似乎是一个环境问题,因为 Teamcity 并且可能 cron 没有加载我的完整环境。我试过直接在 cap 文件中指定我的 ssh key ,除此之外,它似乎没有任何效果。

另一个奇怪的事情是,在我尝试部署到的远程服务器上,auth.log 显示没有尝试连接,因此从服务器端对此进行故障排除似乎不是一种选择。

所以我的问题是,我如何让它工作?任何关于测试的想法以确定问题出在哪里,或者我需要设置的环境变量表示赞赏。

任何能引导我找到解决方案的答案都将被接受。

谢谢。

最佳答案

我通过修改 ssh/config 中的 ssh 连接、使用特定 pid 运行 ssh-agent、添加环境变量并添加构建步骤以将 key 添加到正在运行的构建中的 ssh 代理来解决此问题。

http://petey5king.github.com/2011/12/09/deploying-with-capistrano-from-teamcity.html

关于deployment - capistrano ssh 连接 - 从 cron 或 teamcity 运行时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8206978/

相关文章:

deployment - Mercurial自动化部署

ruby-on-rails - 在 Windows 上使用带有本地存储库的 capistrano 进行部署会引发错误

ruby - Capistrano、防火墙和隧道

java - 特定于环境的配置文件 - 最佳实践?

javascript - Vercel 上的 Next.js 部署失败

xcode - TeamCity 与 Xcode 项目集成(BUILD RUNNER)

msbuild - 使用 TeamCity 运行构建时出现 MSBuild 错误 MSB3202

TeamCity docker 注册表 "Cannot find the Docker Connection referenced from the Docker build feature"

ruby-on-rails - 404 未找到 - nginx/1.12.2 - Rails Api 应用程序 - 路由错误

macos - 不带 JRE 的 Netbeans javafx mac bundle