2014-09-24 77 views
0

我有我的应用程序目前通过的TeamCity和摇篮的混合部署在AWS Opsworks但我需要利用部署挂钩来执行一些任务,如Liquibase迁移,符号链接等Opsworks的Java部署鱼钩

看样子我有Opsworks认识到正确的RB文件存在于部署文件夹中,但是当它运行它们时,我会看到缺少属性的隐式类型转换错误。我试图手动将这些添加到自定义JSON作为解决方法无济于事。

下面是错误,部署JSON和param,这似乎是导致问题。我只是想知道如何填写属性值并越过错误。提前致谢。

TypeError 
--------- 
no implicit conversion of nil into String 


Cookbook Trace: 
--------------- 
/var/lib/aws/opsworks/cache.stage2/cookbooks/deploy/definitions/opsworks_deploy.rb:154:in `block (3 levels) in from_file' 


Resource Declaration: 
--------------------- 
# In /var/lib/aws/opsworks/cache.stage2/cookbooks/deploy/definitions/opsworks_deploy.rb 

65:  deploy deploy[:deploy_to] do 
66:  provider Chef::Provider::Deploy.const_get(deploy[:chef_provider]) 
67:  keep_releases deploy[:keep_releases] 
68:  repository deploy[:scm][:repository] 
69:  user deploy[:user] 
70:  group deploy[:group] 
71:  revision deploy[:scm][:revision] 
72:  migrate deploy[:migrate] 
73:  migration_command deploy[:migrate_command] 
74:  environment deploy[:environment].to_hash 
75:  create_dirs_before_symlink(deploy[:create_dirs_before_symlink]) 
76:  symlink_before_migrate(deploy[:symlink_before_migrate]) 
77:  action deploy[:action] 
78: 
79:  if deploy[:application_type] == 'rails' && node[:opsworks][:instance][:layers].include?('rails-app') 
80:   restart_command "sleep #{deploy[:sleep_before_restart]} && #{node[:opsworks][:rails_stack][:restart_command]}" 
81:  end 
82: 

The attribute which seems to be generating the issue: 
params {:deploy_data=>{"deploy_to"=>"/srv/www/deploy-name", (tons of skipped params) ..., :name=>nil} 

Current JSON under which the error is thrown: 
{"deploy": {"deploy-name": {"scm": {"user": "accesskey", "password": "secretkey" }}}} 

Adjusted JSON in an attempt to resolve: 
{"deploy": {"deploy-name": {"scm": {"user": "accesskey", "password": "secretkey" }}, "name": "deploy-name"}} 

回答

0

事实证明,隐含的类型转换为nil,其中编译行上的属性为零是误导。

问题来自部署钩子本身内部(没有指示部署钩子中的错误代码)。一旦解决问题就没有问题了。