【发布时间】:2015-12-10 20:29:37
【问题描述】:
我在 Windows Server 2012 R2 上使用 Jenkins。我想运行一个构建的作业,并且在强制升级时它应该告诉远程厨师服务器食谱已更改或更新,然后在远程节点上启动厨师客户端。
我已经安装了 Chef Identity 插件、Promoted-builds 插件、MSbuild 插件、TFS-4.0.0 插件和 Deploy 插件
到目前为止,构建工作正常,促销工作正常。 我已经设置了两个 Powershell 脚本应该运行的强制升级。 第一个工作正常,它只做基本的数据管理和文件命名。
但第二个说这是失败的,但促销仍然通过,根本没有证据。
我已经明确使用了 Knife 的路径,因为当我不使用它时,Jenkins 会给出错误:
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 标志并通过右键单击它并在 Jenkins 工作区中使用 Powershell 运行它来运行脚本,我会得到以下信息:
ps1 文件包含(我们称之为“Chef-client.ps1”):
C:\opscode\chefdk\bin\knife cookbook upload MyFirstCookingLesson
C:\opscode\chefdk\bin\knife job start 'chef-client' WIN-COMPNAME
使用执行 Windows 批处理命令调用 Chef-client.ps1:
cd C:\chef-source\cookbooks
PowerShell.exe -File C:\chef-source\cookbooks\Chef-client.ps1
我还在 Jenkins 凭据中设置了 Chef 身份,如下所示:
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 似乎在其自己的用户配置文件中运行,我觉得这可能会把所有东西都扔掉。
我已经阅读了很多设置博客,但没有任何内容真正告诉我如何明确设置。这些博客要么只是假设它已经完成,要么使用不同的工具。
我还在 Jenkins 工作区和“有希望的”用户配置文件空间中放置了 .chef 文件夹的副本,希望它能正常工作。
请任何人帮助指导我吗?
【问题讨论】:
标签: powershell jenkins chef-infra knife