Мы используем грабли для сборки и тестирования на наших машинах dev. Недавно мы перенесли один из наших проектов на наш собственный локальный сервер NuGet. Мы использовали этот проект в качестве подмодуля и, следовательно, имели постоянный путь к некоторому содержанию (файлы лицензий, библиотеки для развертывания и т. Д.). Я играю с тем, как создается пакет NuGet, и я подумал, что я его понял, поставив этот контент как «контент» в пакете NuGet. Проблема в том, что NuGet ставит эти файлы только при установке, и я не буду включать вещи, которые добавляются NuGet. Поэтому, когда я нажимаю свой код и использую наш сервер сборки, он терпит неудачу, потому что необходимые файлы содержимого никогда не восстанавливаются. Поэтому я решил разместить эти файлы в папку /package/ourproject.2016.10.20.16
. Точка боли, которую я вижу, это то, что если кто-то обновит пакет NuGet в проекте, они также должны будут обновить файл рейка. Чтобы указать на новую папку инструментов. К счастью, NuGet автоматически объявляет проект по названию пакета и номеру версии, поэтому он является последовательным в этом отношении. Мы используем дату сборки и номер сборки как версию yyyy.mm.dd.bb
.Получить динамическую папку из пакета nuget
это часть файла граблями в интересах
task :copy_to_deployment_folder do
copy_hash = {
"." => ["#{solutionName}.Deployment/Scripts/DevDeploy.bat",
"#{solutionName}.Deployment/Scripts/QaDeploy.bat",
"#{solutionName}.Deployment/Scripts/PreProdDeploy.bat",
"#{solutionName}.Deployment/Scripts/ProdDeploy.bat",
],
"Applications/#{solutionName}" => "#{solutionName}/bin/{configuration}",
"deploy" => ["#{solutionName}.Deployment/deploy_bin",
"#{solutionName}.Deployment/bin/{configuration}"],
"deploy/settings" => "#{solutionName}.Deployment/settings",
"deploy/Licenses" => "packages/ourproject.2016.10.20.20/tools/Licenses"
}
BuildController.copy_to_deployment_folder copy_hash
end
конкретно последний элемент в copy_hash
нужно будет меняться каждый раз, когда проект был обновлен в NuGet. (Я полагаю, что это не худшая проблема, и это единственный проект, который ссылается на этот пакет, но если бы был способ сделать его более динамичным, используя дикие карты или что-то, что было бы потрясающе. Любые идеи?
Я рад, что ты понял это. Пожалуйста, отметьте ваш ответ, который приносит пользу другим сообществам, у которых такая же проблема. –