Служба безперервної інтеграції 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
Сценарій
За замовчуванням Тревіс буде запускати xbuild solution-name.sln. Xbuild - це інструмент побудови, призначений для реалізації інструменту MSBuild від Microsoft. Щоб замінити це, ви можете встановити атрибут script наступним чином:
language: csharp
solution: solution-name.sln
script: ./build.sh
NuGet
За замовчуванням Travis запускає nuget restore solution-name.sln, який відновлює всі пакети NuGet з вашого файлу рішення. Щоб замінити це, ви можете встановити атрибут install наступним чином:
language: csharp
solution: solution-name.sln
install:
- sudo dosomething
- nuget restore solution-name.sln
Дивіться відповідь Деніелксона щодо офіційного способу зробити це зараз.
Можливо.
На власному моно машині, використовуючи термінал, cd
до каталогу рішення та виконуючи команду xbuild
. Це може працювати автоматично, а може і ні, оскільки існують функції, які ви використовуєте у візуальній студії і потребують доопрацювання в моно.
На що слід звернути увагу:
.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 або підробкою .
#!/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 $?
Для тестування останньої language:objective-c
монопростої програми найпростіше використовувати хости Mac (орієнтуватися за допомогою Mono v3.1.2 і пізніше змінили розподіл на Mac з DMG на лише PKG, тому установка досить проста. Цей шаблон повинен підтримувати портативні бібліотеки класів, .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 має вбудовану систему управління та розгортання артефактів.
Як уже зазначалося, Тревіс 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: