Загрузка файла из SVN с помощью 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

Вот результат запуска шеф-клиента:

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 «download installer» do». Не очень полезный вывод - я понятия не имею, что здесь происходит под капотом. Он нигде не загружает файл в моей системе - каталог назначения пуст.

Выполнение этой команды работает нормально:

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

Он успешно загружает файл с сервера и помещает его в место назначения. Теперь я могу просто написать эту команду в блоке выполнения, но я хотел бы сделать это в стиле Chef. Как загрузить определенный файл из репозитория SVN в Windows?


person CPS    schedule 09.01.2014    source источник
comment
Похоже, это указывает на то, что файл был успешно загружен. Что находится в C:\chef-repo\cookbooks\common\files?   -  person sethvargo    schedule 10.01.2014
comment
Вы можете запустить Chef с :debug log, тогда вы увидите больше информации и сможете увидеть, почему Chef пропускает обновление вашего ресурса.   -  person Draco Ater    schedule 10.01.2014
comment
Вероятно, мне следовало упомянуть, что C:\chef-repo\cookbooks\common\files пуст.   -  person CPS    schedule 10.01.2014


Ответы (1)


Похоже, это ошибка в 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 subversion требуется пустой каталог в качестве места назначения (место назначения, которое я указал в OP, содержит одну папку). Обратите внимание, что это не в случае с командой оболочки svn — с ее помощью мне удалось успешно экспортировать в непустой каталог.

На данный момент я собираюсь просто использовать ресурс выполнения, чтобы получить нужный мне файл, и надеюсь, что Opscode исправит эту давнюю ошибку.

Особая благодарность IRC-сообществу Chef.

person CPS    schedule 10.01.2014
comment
Обратите внимание, хак, указанный в этом отчете об ошибке, работает, хотя и немного болезненно. - person cixelsyd; 21.01.2014