У меня есть тестовый сервер, который я бы тоже хотел использовать для CI.
План состоит в том, чтобы настроить Hudson, который прослушивает git-репозиторий, при новой фиксации извлекает изменения, строит решение, запускает тесты (выбирает выходные данные), настраивает веб-приложение среды тестирования, если все выглядит зеленым и показывает Chuck Norris .
Я борюсь с первой частью (git порты закрыты, но не в этом вопросе) и последней частью.
Само приложение построено с использованием .Net 4.0, Asp.Net Mvc 2 RTM и набора сторонних инструментов.
Сначала - вообще ничего не смог собрать - скачал .Net 4.0 sdk kit, и это помогло. Тогда - не удалось создать веб-проект - просто скопировал содержимое папки C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\
с моей рабочей станции на сервер. Затем мне нужно было установить asp.net mvc2 rtm, и решение, наконец, было успешно построено.
Проблема с последним шагом в скрипте сборки albacore, который я взял из здесь .
Вот вывод:
C: \ temp \ buildtest> rake -f build.rb
(в C: / temp / buildtest)
Microsoft (R) Build Engine Версия 4.0.30319.1
[Microsoft .NET Framework, версия 4.0.30319.1]
Copyright (C) Microsoft Corporation 2007. Все права защищены.
Домен -> C: \ temp \ buildtest \ src \ Domain \ bin \ Release \ Domain.dll
Infra -> C: \ temp \ buildtest \ src \ Infrastructure \ bin \ Release \ Infra.dll
Постоянство -> C: \ temp \ buildtest \ src \ Persistence \ bin \ Release \ Persistence.dll
App -> C: \ temp \ buildtest \ src \ App \ bin \ Release \ App.dll
Web -> C: \ temp \ buildtest \ src \ Web \ bin \ Release \ Web.dll
Пользовательский интерфейс -> C: \ temp \ buildtest \ src \ UI \ bin \ UI.dll
Unit -> C: \ temp \ buildtest \ src \ UnitTests \ bin \ Release \ Unit.dll
Интеграция -> C: \ temp \ buildtest \ src \ Integration \ bin \ Release \ Integration.dll
Консольный тестер xUnit.net (32-разрядный .NET 4.0.30319.1)
Copyright (C) 2007-10 Microsoft Corporation.
xunit.dll: версия 1.6.1.1521
Тестовая сборка: C: \ temp \ buildtest \ src \ UnitTests \ bin \ Release \ src \ UnitTests \ bin \ Release \ Unit.dll
84 всего, 0 не выполнено, 0 пропущено, заняло 9,560 секунд
Консольный тестер xUnit.net (32-разрядная версия .NET 4.0.30319.1)
Copyright (C) 2007-10 Microsoft Corporation.
xunit.dll: версия 1.6.1.1521
Тестовая сборка: C: \ temp \ buildtest \ src \ Integration \ bin \ Release \ src \ Integration \ bin
\ Release \ Integration.dll
27 всего, 0 не выполнено, 0 пропущено, заняло 34.472 секунды
Необработанное исключение: System.TypeInitializationException: инициализатор типа fo
r 'Microsoft.Build.CommandLine.MSBuildApp' выдал исключение. ---> System.IO.Fi
leNotFoundException: не удалось загрузить файл или сборку 'Microsoft.Build.Engine, Ve
rsion = 3.5.0.0, Культура = нейтральный, PublicKeyToken = b03f5f7f11d50a3a 'или один из его d
ependencies. Система не может найти указанный файл.
Имя файла: 'Microsoft.Build.Engine, версия = 3.5.0.0, культура = нейтральная, PublicKeyT
Oken = b03f5f7f11d50a3a»
в Microsoft.Build.CommandLine.MSBuildApp..cctor ()
WRN: регистрация привязки сборки выключена.
Чтобы включить ведение журнала ошибок привязки сборки, установите значение реестра [HKLM \ Software \ M
icrosoft \ Fusion! EnableLog] (DWORD) в 1.
Примечание. Существует некоторое снижение производительности, связанное с ошибкой привязки сборки.
gging.
Чтобы отключить эту функцию, удалите значение реестра [HKLM \ Software \ Microsoft \ Fus
ион! EnableLog].
--- Конец внутренней трассировки стека исключений ---
в Microsoft.Build.CommandLine.MSBuildApp.Main ()
F, [2010-09-18T00: 35: 07.728632 # 2072] FATAL -: MSBuild Failed. Смотрите Build Log F
или подробно
грабли прерваны!
MSBuild не удалось. Смотрите журнал сборки для деталей
С: /Ruby191/lib/ruby/gems/1.9.1/gems/albacore-0.1.5/lib/albacore/msbuild.rb: 41: в
`Build_solution»
(Смотрите полную трассировку, запустив задачу с --trace)
C: \ Temp \ buildtest>
Вот так выглядит мой скрипт на альбакоре:
require 'rubygems'
require 'albacore'
task :default => :publish
desc "Builds Interreg solution"
msbuild :build do |m|
m.path_to_command = File.join(ENV["windir"],
"Microsoft.NET", "Framework", "v4.0.30319", "MSBuild.exe")
m.properties :configuration => :Release
m.targets :Clean, :Build
m.solution = "Interreg.sln"
m.verbosity = "minimal"
end
desc "Runs some tests"
xunit :tests => :build do |x|
x.path_to_command = "lib/xunitnet/xunit.console.clr4.x86.exe"
x.assemblies "src/UnitTests/bin/Release/Unit.dll",
"src/Integration/bin/Release/Integration.dll"
x.html_output = "doc"
end
desc "Publishes web application"
msbuild :publish=>:tests do |m|
m.properties={:configuration=>:Release}
m.targets [:ResolveReferences, :_CopyWebApplication]
m.properties={
:webprojectoutputdire=>"c:/temp/outputdir/",
:outdir=>"c:/temp/outputdir/bin/"
}
m.solution="src/UI/UI.csproj"
end
Итак ... Чего не хватает? Как заставить это работать?
Как упаковать веб-приложение asp.net без визуальной студии?