使用Windows上的Chef从SVN下载文件

时间:2014-01-09 19:49:27

标签: svn chef chef-windows

我无法让厨师下载我需要在SVN服务器的配方中使用的文件。

subversion "download installer" do
  repository "http://svnrepourl/path/to/installer.msi"
  revision "HEAD"
  destination "C:\\chef-repo\\cookbooks\\common\\files"
  action :export
  svn_username "username"
  svn_password "password"
end

以下是chef-client run的输出:

Compiling Cookbooks...
Converging 1 resources
Recipe: common::svntest
  * subversion[download installer] action export[2014-01-09T14:41:42-05:00] INFO
: Processing subversion[download installer] action export (common::svntest line
12)
 (up to date)
[2014-01-09T14:41:42-05:00] INFO: Chef Run complete in 1.482104 seconds
[2014-01-09T14:41:42-05:00] INFO: Running report handlers
[2014-01-09T14:41:42-05:00] INFO: Report handlers complete
Chef Client finished, 0 resources updated

第12行是“颠覆”下载安装程序“do”。没有超级有用的输出 - 我不知道在这里引起了什么。它不会在我的系统上的任何位置下载文件 - 目标目录为空。

运行此命令可以正常工作:

svn export -r HEAD http://svnrepourl/path/to/installer.msi --username username --password password C:\chef-repo\cookbooks\common\files

它成功从服务器下载文件并将其放在目标中。现在,我可以在执行块中编写此命令,但我想以Chef方式执行此操作。如何在Windows上从SVN仓库下载特定文件?

1 个答案:

答案 0 :(得分:0)

看起来这是Chef中的一个错误,记录为here

为了解决这个问题,我跑了chef-client -l debug > log.txt,这引导我走上这些路线:

[2014-01-10T09:35:00-05:00] INFO: Processing subversion[download installer] action export (common::svntest line 12)
[2014-01-10T09:35:00-05:00] DEBUG: subversion[download installer] export destination C:\chef-repo\cookbooks\common\files already exists or is a non-empty directory - nothing to do

看起来Chef subversion资源需要一个空目录作为目标(我在OP中指定的目标包含一个文件夹)。请注意,使用svn shell命令的情况 - 我能够使用它成功导出到非空目录。

此时,我将简单地使用执行资源来获取我需要的文件,并希望Opscode能够解决这个长期存在的错误。

特别感谢Chef的IRC社区。