Как использовать Travis-CI с C# или F#


служба непрерывной интеграции Travis CI официально поддерживает многие языки, но не C# или F#.

могу ли я использовать его с моими проектами .net?

5 88

5 ответов:

Трэвис си Сейчас поддерживает C#. Цитируя либерально с этой страницы:

обзор

настройка для проектов C#, F# и Visual Basic выглядит следующим образом:

language: csharp
solution: solution-name.sln
mono:
  - latest
  - 3.12.0
  - 3.10.0

Script

по умолчанию Трэвис будет запускать xbuild solution-name.ФСЛ. Xbuild-это инструмент сборки, предназначенный для реализации инструмента MSBuild от Microsoft. Чтобы переопределить это, вы можете установить атрибут сценария это:

language: csharp
solution: solution-name.sln
script: ./build.sh

NuGet

по умолчанию Трэвис запускает NuGet restore solution-name.sln, который восстанавливает все пакеты NuGet из вашего файла решения. Чтобы переопределить это, вы можете установить атрибут install следующим образом:

language: csharp
solution: solution-name.sln
install:
  - sudo dosomething
  - nuget restore solution-name.sln

посмотреть danielnixon это!--20--> для официального способа сделать это сейчас.

это возможно.

1. Ваш проект должен работать на моно

на вашей собственной моно машине, используя терминал,cd в каталог вашего решения и запуск команды xbuild. Это может работать автоматически, а может и нет, так как есть функции, которые вы использовали в visual studio, которые нуждаются в некоторой настройке в mono.

вещи, чтобы смотреть ибо:

  • ошибки отсутствующих файлов, убедитесь, что случай имен файлов соответствует вашему .csproj linux имеет чувствительные к регистру пути, где windows не делает.
  • NuGet, который требует, чтобы вы export EnableNuGetPackageRestore=true перед xbuild если ваш проект автоматически восстанавливает.
  • ваш экземпляр mono может не иметь корневых сертификатов SSL, используйте mozroots --import --sync для их установки.
  • также, если вы видите отсутствующие ошибки файла,nuget.* вместо NuGet.* ссылки в вашем .csproj файл есть было известно, что существует в различных версиях nuget.
  • в целевом файле 2.5 nuget есть ошибка, основанная на пробелах в нем .целевой файл, обходной путь здесь
  • для поддержки FSharp 3.0 вам нужен mono 3.0.X или более поздней версии (и, возможно, потребуется построить из исходного кода, но установлен по умолчанию на Mac OS X)
  • для проектов FSharp из VS2013, возможно, потребуется изменить .fsproj чтобы запустить конфигурацию VS2012 на машинах без windows, добавив '$(VisualStudioVersion)' == '11.0' Or $(OS) != 'Windows_NT' смотрите пример.

моно 3.1.12, 3.2.4 и выше

  • Mono 3.1.2, 3.2.4 и более поздние версии имеют поддержку pcl, но также могут иметь отсутствующие ошибки PCL. Обратите внимание на ошибку, указанную ниже в разделе моно 3.0.12 поскольку он включает только следующие ссылки на фреймворк:
    • В4.0, Profile136 .NET Framework 4, Silverlight 5, Windows Phone 8, приложения для магазина Windows (Windows 8)
    • В4.0, Profile14 .NET Framework 4, Silverlight 5
    • В4.0, Profile147 .NET Framework 4.0.3, Silverlight 5, Windows Phone 8, приложения для магазина Windows (Windows 8)
    • В4.0, Profile158 .NET Framework 4.5, Silverlight 5, Windows Phone 8, приложения для магазина Windows (Windows 8)
    • В4.0, Profile19 .NET Фреймворк 4.0.3, Silverlight 5
    • В4.0, Profile24 .NET Framework 4.5, Silverlight 5
    • В4.0, Profile37 .NET Framework 4, Silverlight 5, Windows Store apps (Windows 8)
    • В4.0, Profile42 .NET Framework 4.0.3, Silverlight 5, Windows Store apps (Windows 8)
    • В4.0, Profile47 .NET Framework 4.5, Silverlight 5, Windows Store apps (Windows 8)
    • В4.0, Profile5 .NET Framework 4, Windows Store apps (Windows 8)
    • В4.0, Profile6 .NET Framework 4.0.3, Windows Store apps (Windows 8)
    • В4.5, Profile49 .NET Framework 4.5, Windows Phone 8
    • В4.5, Profile7 .NET Framework 4.5, приложения Магазина Windows (Windows 8)
    • В4.5, Profile78 .NET Framework 4.5, Windows Phone 8, Windows Store apps (Windows 8)

моно 3.0.12

  • Mono 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. использовать условия платформы (упомянутые в разделе моно 3.0.11 или ранее) или обновить 3.1.2.

моно 3.0.11 или ранее

  • отсутствуют целевые ошибки, если это не nuget, это, вероятно, потому, что вы используете переносную библиотеку классов или другую цель, которая не существует. Если ваш проект может компилироваться для .net 4.0, вы можете изменить его .csproj или .fsproj, так что на .net он строит портативный и на моно он строит для .net 4.0. в основном по отдельным вещам в условные группы свойств <PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup> или Condition="$(OS) != 'Windows_NT' для моно. Ваш пробег может отличаться. См. раздел Работа пример.

моно 2.10.X

  • также моно v2.10 отсутствует некоторые из них Microsoft.Построить классы, которые нужны Nuget, вы можете скопировать v3.0.X dll, которая очень мала ,чтобы.каталог nuget. (Я использовал его здесь)

2. Иметь возможность запускать тесты из командной строки.

.ci/nunit.sh это мой собственный скрипт оболочки для тестирования nunit, проверенный в корне РЕПО. Так Что Я можно установить NUnit-консольную версию, которую я хочу с nuget, и настроить различные включения/исключения категорий тоже. Ваш пробег может варьироваться, но этот метод должен работать для xunit и т. д. Или сделайте свою собственную вещь с xbuild или подделка.

.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  -exclude=Performance

exit $?

3. Настройка Travis для mono

Mono v3.8. 0

для тестирования последних моно проще всего использовать Mac hosts (target с помощью language:objective-c моно В3.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

для того чтобы Пристрелть оба Mono v2.10.Х и В3.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

  • посмотреть Ответ ниже для новой бета-версии определение.

и теперь вы должны быть хороши, чтобы пойти, чтобы использовать Трэвис на вашем проекте c#.

Это ключевой момент - проект должен работать на моно. Это в основном работает для проектов в стиле библиотеки ( AWS SDK .NET является хорошим примером), хотя требует больше усилий по разработке и дисциплины. Среда построения Linux не будет работать, если вы разрабатываете проект для платформы Windows, такой как приложение WPF, облачная служба Azure, приложение Windows Phone / Store или даже ASP.NET Web API.

AppVeyor CI является размещенной службой непрерывной интеграции для Платформы Windows, и это бесплатно для проектов с открытым исходным кодом. Это как Трэвис CI для Windows!

вы можете настроить процесс сборки для VS.NET решение, пользовательский проект MSBuild, PSake или любой сценарий PowerShell пакетного файла. Кроме того, AppVeyor имеет встроенную структуру управления артефактами и развертывания.

Как уже упоминалось, Трэвис CI есть бета поддержка C#. Я прямо вперед, чтобы использовать. Также нанит может быть очень легко интегрирован. Вот небольшой пример .Трэвис.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

Если вы хотите использовать Travis CI с F#, на GitHub, с FAKE и Packet, то рекомендуется использовать F# ProjectScaffold:

http://fsprojects.github.io/ProjectScaffold