2015-12-10 31 views
2

我在Windows Server 2012 R2上使用Jenkins。我想运行一个构建的作业,并且在强制升级时,它应该告诉远程厨师服务器配方已更改或更新,然后启动远程节点上的主厨客户端。如何设置Jenkins以在Powershell脚本中使用Knife

我已经安装了厨师身份插件,促进-构建插件,插件的MSBuild,TFS-4.0.0插件和部署插件

到目前为止构建工程和促销工作。 我已经设置了两个Powershell脚本应该运行的强制升级。 第一个工作正常,它只是基本的数据管理和文件命名。

但第二个人说这是一个失败,但促销仍然通过,没有任何证据表明它是有效的。

我已明确使用的路径,以刀,因为当我不使用它,詹金斯给出了一个错误:

WARNING: No knife configuration file found 
ERROR: Could not find cookbook MyFirstCookingLesson in your cookbook path, skipping it 
ERROR: ArgumentError: Cannot sign the request without a client name, check that :node_name is assigned 

如果我添加了-V标志,且由右侧的脚本单击它,使用PowerShell在詹金斯的工作空间运行它,我得到这个信息:

enter image description here

PS1的文件包含(让我们把它叫做 '厨师client.ps1'):

C:\opscode\chefdk\bin\knife cookbook upload MyFirstCookingLesson 
C:\opscode\chefdk\bin\knife job start 'chef-client' WIN-COMPNAME 

厨师,client.ps1正在使用的Windows执行批处理命令调用:

cd C:\chef-source\cookbooks 
PowerShell.exe -File C:\chef-source\cookbooks\Chef-client.ps1 

我还成立了厨师的身份在詹金斯凭据,如下所示:

Identity name: geoff 
user.pem key : <a whole bunch of secret stuffs and gibberish> 

knife.rb : 

log_level :info 
log_location STDOUT 
node_name 'geoff' 
client_key 'C:/Users/user123/.chef/geoff.pem' 
validation_client_name 'geoff.pem' 
validation_key 'C:/Users/user123/.chef/secretName-validator.pem' 
chef_server_url 'https://secretLocation.268lab.local/organizations/secretName/' 
syntax_check_cache_path 'C:/Users/user123/.chef/syntax_check_cache' 
cookbook_path [ 'c:/chef-source/cookbooks/' ] 
http_proxy 'http://22.151.32.85:3128' 
https_proxy 'http://22.151.32.85:3128' 
no_proxy 'secretLocation.268lab.local' 
knife[:editor] = '"C:\Program Files (x86)\Notepad++\notepad++.exe"'; 

所以我也发现詹金斯似乎在自己的用户配置文件中运行,我有一种感觉可能会把所有东西都扔掉。

我已经阅读了这么多的博客设置,但没有真正告诉我如何明确地设置它。这些博客要么已经完成了它,要么使用了不同的工具。

我还在Jenkins Workspace和'hopeful'Userprofile空间中放置了.chef文件夹的副本,希望它可以工作。

请任何人可以帮助指导我?

回答

1

太长评论:

所以我也发现,詹金斯似乎在自己的 USERPROFILE我有一种感觉,可能会扔一切都关掉运行。

如果詹金斯的用户无法读取user123家里,有没有机会,它可以读取刀配置不正确验证,因为它无法读取geoff.pem文件。

解决此问题的一个解决方案是将配置,密钥等放在特定的目录中,并使用刀的-c选项为其指定conf文件的路径。另一种选择是使用KNIFE_HOME环境变量,但在Jenkins中不太容易出错。

+0

对不起。为了更好的阅读,我已经将错误信息提出来了。我假设-vv不是(双u),它假设是-V?如果我使用-vv它会成功,如果我使用-W它说它不是一个有效的参数。 –

+0

加倍V导致刀更加冗长,我的观点是,你告诉我们一个错误,你说你已经修好了,这听起来不对你有帮助 – Tensibai

+0

抱歉有关混淆。该错误信息是我从正在运行的第二个脚本中获得的错误信息。它抱怨没有刀配置文件。 –

相关问题