我在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在詹金斯的工作空间运行它,我得到这个信息:
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文件夹的副本,希望它可以工作。
请任何人可以帮助指导我?
对不起。为了更好的阅读,我已经将错误信息提出来了。我假设-vv不是(双u),它假设是-V?如果我使用-vv它会成功,如果我使用-W它说它不是一个有效的参数。 –
加倍V导致刀更加冗长,我的观点是,你告诉我们一个错误,你说你已经修好了,这听起来不对你有帮助 – Tensibai
抱歉有关混淆。该错误信息是我从正在运行的第二个脚本中获得的错误信息。它抱怨没有刀配置文件。 –