Сервис непрерывной интеграции 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
См . Ответ Даниелниксона, чтобы узнать официальный способ сделать это сейчас.
Это возможно.
1. Ваш проект должен работать на Mono
На вашем собственном моно-компьютере с помощью терминала перейдите
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'
см. Пример .Mono 3.1.12, 3.2.4 и новее
Моно 3.0.12
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.Mono 3.0.11 или более ранняя
<PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup>
илиCondition="$(OS) != 'Windows_NT'
для моно. Ваш пробег может отличаться. См. Рабочий пример .Моно 2.10.X
2. Уметь запускать модульные тесты из командной строки.
.ci/nunit.sh
это мой собственный сценарий оболочки для тестирования nunit, проверен в корень репо. Так что я могу установить нужную мне версию nunit-console с помощью nuget, а также настроить различные включения / исключения категорий. Ваш опыт может отличаться, но этот метод должен работать для xunit и т. Д. Или сделайте свое дело с xbuild или fake ..ci / nunit.sh
#!/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 $?
3. Настройте Travis для моно
Моно v3.8.0
Для тестирования последней версии моно проще всего использовать хосты 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
Чтобы настроить таргетинг на Mono v2.10.X и v3.0.X
Я легко использую хосты 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
Для linux
И теперь вы должны быть готовы использовать travis в своем проекте C #.
источник
sudo installer -pkg
. Не могли бы помочь мне это исправить? Спасибо! см. travis-ci.org/Aimeast/TestForFirst/builds/13814315language: 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:
http://fsprojects.github.io/ProjectScaffold
источник