Служба непрерывной интеграции Travis CI официально поддерживает многие языки, но не С# или F #.
Могу ли я использовать его в моих проектах .net?
Служба непрерывной интеграции Travis CI официально поддерживает многие языки, но не С# или F #.
Могу ли я использовать его в моих проектах .net?
Travis CI теперь поддерживает С#. Цитируя либерально с этой страницы:
Обзор
Настройка для проектов С#, F # и Visual Basic выглядит следующим образом:
language: csharp
solution: solution-name.sln
mono:
- latest
- 3.12.0
- 3.10.0
Script
По умолчанию Travis запустит xbuild solution-name.sln. Xbuild - это инструмент построения, предназначенный для реализации Microsoft MSBuild. Чтобы переопределить это, вы можете установить атрибут script следующим образом:
language: csharp
solution: solution-name.sln
script: ./build.sh
NuGet
По умолчанию Travis запускает nuget restore solution-name.sln, который восстанавливает все пакеты NuGet из файла решения. Чтобы переопределить это, вы можете установить атрибут установки следующим образом:
language: csharp
solution: solution-name.sln
install:
- sudo dosomething
- nuget restore solution-name.sln
См. ответ danielnixon для официального способа сделать это сейчас.
Возможно.
На вашем собственном моно-машине, используя терминал, cd
в каталог решений и запустите команду xbuild
. Это может автоматически работать, а может и нет, поскольку есть функции, которые вы использовали в визуальной студии, которые нуждаются в некоторой настройке в моно.
Что нужно искать:
.csproj
. В нем есть пути, чувствительные к регистру, где нет окон.export EnableNuGetPackageRestore=true
перед запуском xbuild
, если ваш проект автоматически восстановится.mozroots --import --sync
для их установки.nuget.*
вместо nuget.*
ссылки в вашем .csproj, как известно, существуют в разных версиях nuget..fsproj
, чтобы вызвать конфигурацию VS2012 на компьютерах без окон, добавив '$(VisualStudioVersion)' == '11.0' Or $(OS) != 'Windows_NT'
в example.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.
Условия использования платформы (см. Моно 3.0.11 или более ранние версии) или обновите до 3.1.2.<PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup>
или Condition="$(OS) != 'Windows_NT'
для моно. Ваш пробег может отличаться. См. Рабочий пример. .ci/nunit.sh
- это моя собственная оболочка script для тестирования 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 [email protected]
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. См. Ниже script
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 в своем проекте С#.
Что ключевой момент - проект должен работать над 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 script командного файла. Кроме того, AppVeyor имеет встроенную инфраструктуру управления артефактами и развертывания.
Как уже упоминалось, Travis CI поддерживает бета для С#. Я прямо использую. Также nunit можно легко интегрировать. Вот небольшой пример файла .travis.yml, который запускает nunit-тесты и отмечает, что сборка не удалась, если не удалось выполнить хотя бы один unit test:
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
Если вы хотите использовать Travis CI с F #, на GitHub, с FAKE и Packet, рекомендуется F # ProjectScaffold: