Сервис непрерывной интеграции Travis CI официально поддерживает множество языков , но не C # или F #.
Могу ли я использовать его с моими проектами .net?
Ответы:
Travis CI теперь поддерживает C # . Обильно цитируя эту страницу:
Обзор
Настройка для проектов C #, F # и Visual Basic выглядит следующим образом:
language: csharp
solution: solution-name.sln
mono:
- latest
- 3.12.0
- 3.10.0
Сценарий
По умолчанию Travis запускает xbuild solution-name.sln. Xbuild - это инструмент сборки, разработанный как реализация инструмента Microsoft MSBuild. Чтобы переопределить это, вы можете установить атрибут скрипта следующим образом:
language: csharp
solution: solution-name.sln
script: ./build.sh
NuGet
По умолчанию Трэвис запускает nuget restore solution-name.sln, который восстанавливает все пакеты NuGet из файла решения. Чтобы переопределить это, вы можете установить атрибут установки следующим образом:
language: csharp
solution: solution-name.sln
install:
- sudo dosomething
- nuget restore solution-name.sln
См . Ответ Даниелниксона, чтобы узнать официальный способ сделать это сейчас.
Это возможно.
На вашем собственном моно-компьютере с помощью терминала перейдите cd
в каталог решения и запустите команду xbuild
. Это может работать автоматически, а может и не работать, поскольку есть функции, которые вы использовали в Visual Studio, которые требуют некоторой настройки в моно.
На что следует обратить внимание:
.csproj
регистру в вашем linux, а в Windows - нет.export EnableNuGetPackageRestore=true
перед запуском, xbuild
если ваш проект автоматически восстанавливается.mozroots --import --sync
для их установки.nuget.*
вместо NuGet.*
ссылок в вашем .csproj известно, что они существуют в различных версиях nuget..fsproj
чтобы запустить конфигурацию VS2012 на машинах без Windows, добавив '$(VisualStudioVersion)' == '11.0' Or $(OS) != 'Windows_NT'
см. Пример .Unable to find framework corresponding to the target framework moniker '.NETPortable,Version=v4.0,Profile=ProfileX'. Framework assembly references will be resolved from the GAC, which might not be the intended behavior.
Условия использования платформы (упомянутые в Mono 3.0.11 или ранее ) или обновитесь до 3.1.2.<PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup>
или Condition="$(OS) != 'Windows_NT'
для моно. Ваш пробег может отличаться. См. Рабочий пример ..ci/nunit.sh
это мой собственный сценарий оболочки для тестирования nunit, проверен в корень репо. Так что я могу установить нужную мне версию nunit-console с помощью nuget, а также настроить различные включения / исключения категорий. Ваш опыт может отличаться, но этот метод должен работать для xunit и т. Д. Или сделайте свое дело с xbuild или fake .
#!/bin/sh -x
mono --runtime=v4.0 .nuget/NuGet.exe install NUnit.Runners -Version 2.6.1 -o packages
runTest(){
mono --runtime=v4.0 packages/NUnit.Runners.2.6.1/tools/nunit-console.exe -noxml -nodots -labels -stoponerror $@
if [ $? -ne 0 ]
then
exit 1
fi
}
#This is the call that runs the tests and adds tweakable arguments.
#In this case I'm excluding tests I categorized for performance.
runTest $1 -exclude=Performance
exit $?
Для тестирования последней версии моно проще всего использовать хосты Mac (цель - использовать language:objective-c
Mono v3.1.2 и более поздние версии, измененный дистрибутив на Mac с DMG на просто PKG, поэтому установка довольно проста. Этот шаблон должен поддерживать Portable Class Libraries, .NET 4.5.1 и FSharp 3.1.
language: objective-c
env:
global:
- EnableNuGetPackageRestore=true
matrix:
- MONO_VERSION="3.8.0"
before_install:
- wget "http://download.mono-project.com/archive/${MONO_VERSION}/macos-10-x86/MonoFramework-MDK-${MONO_VERSION}.macos10.xamarin.x86.pkg"
- sudo installer -pkg "MonoFramework-MDK-${MONO_VERSION}.macos10.xamarin.x86.pkg" -target /
script:
- xbuild
- .ci/nunit.sh Tests/bin/Debug/Tests.dll
Я легко использую хосты Mac для настройки матрицы сборки для нескольких версий Mono. Смотрите сценарий ниже
language: objective-c
env:
global:
- EnableNuGetPackageRestore=true
matrix:
- MONO_VER="2.10.11"
- MONO_VER="3.0.12"
before_install:
- wget "http://download.mono-project.com/archive/${MONO_VER}/macos-10-x86/MonoFramework-MDK-${MONO_VER}.macos10.xamarin.x86.dmg"
- hdid "MonoFramework-MDK-${MONO_VER}.macos10.xamarin.x86.dmg"
- sudo installer -pkg "/Volumes/Mono Framework MDK ${MONO_VER}/MonoFramework-MDK-${MONO_VER}.macos10.xamarin.x86.pkg" -target /
script:
- xbuild
- .ci/nunit.sh Tests/bin/Debug/Tests.dll
И теперь вы должны быть готовы использовать travis в своем проекте C #.
sudo installer -pkg
. Не могли бы помочь мне это исправить? Спасибо! см. travis-ci.org/Aimeast/TestForFirst/builds/13814315
language: objective-c
необходим для этого шаблона, чтобы он использовал хост OS X.
Это ключевой момент - проект должен работать на Mono. В основном это работает для проектов в стиле библиотеки ( хороший пример - AWS SDK .NET ), хотя требует дополнительных усилий и дисциплины. Среда сборки Linux не будет работать, если вы разрабатываете проект для платформы Windows, такой как приложение WPF, облачная служба Azure, приложение Windows Phone / Store или даже веб-API ASP.NET.
AppVeyor CI - это размещенная служба непрерывной интеграции для платформы Windows, которая бесплатна для проектов с открытым исходным кодом. Это как Travis CI для Windows!
Вы можете настроить процесс сборки для решения VS.NET, пользовательского проекта MSBuild, PSake или любого сценария PowerShell для пакетного файла. Кроме того, AppVeyor имеет встроенную среду управления артефактами и развертывания.
Как уже упоминалось, Travis CI имеет бета- поддержку C # . Я сразу использую. Также nunit очень легко интегрируется. Вот небольшой пример файла .travis.yml, который запускает тесты nunit и отмечает сборку как неудачную, если хотя бы один модульный тест не прошел:
language: csharp
solution: ./src/yoursolution.sln
install:
- sudo apt-get install nunit-console
- nuget restore ./src/yoursolution.sln
script:
- xbuild ./src/yoursolution.sln
- nunit-console ./src/SomeLibrary.Tests/bin/Debug/SomeLibrary.Tests.dll
sudo: required
в конце. Работает как шарм.
Если вы хотите использовать Travis CI с F #, на GitHub, с FAKE и Packet, то рекомендуется F # ProjectScaffold: