0

我无法让厨师从 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 运行的输出:

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 行是“subversion”下载安装程序“做”。不是超级有用的输出 - 我不知道这里发生了什么。它不会在我的系统上的任何地方下载文件 - 目标目录是空的。

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

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

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

4

1 回答 1

0

看起来这是 Chef 中的一个错误,在此处记录。

为了弄清楚这一点,我跑了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 颠覆资源需要一个空目录作为目标(我在 OP 中指定的目标包含一个文件夹)。请注意, svn shell 命令不是这种情况——我能够成功地导出到一个非空目录。

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

特别感谢 Chef 的 IRC 社区。

于 2014-01-10T14:49:51.170 回答