Jak używać Travis-CI z C # lub F#

Travis CI continuous integration service oficjalnie obsługuje wiele języków, ale nie C # czy F#.

Czy mogę go używać z moimi projektami. NET?

Author: jbtule, 2013-05-25

5 answers

Travis CI teraz obsługuje C # . Cytuję z tej strony:

Przegląd

Konfiguracja dla projektów C#, F# i Visual Basic wygląda następująco:]}
language: csharp
solution: solution-name.sln
mono:
  - latest
  - 3.12.0
  - 3.10.0

Skrypt

Domyślnie Travis uruchomi xbuild solution-name.sln. Xbuild to narzędzie do budowania zaprojektowane jako implementacja dla narzędzia MSBuild firmy Microsoft. Aby to nadpisać, możesz ustawić atrybut script w następujący sposób:

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

NuGet

By domyślnie, Travis uruchomi NuGet restore solution-name.sln, który przywraca wszystkie pakiety NuGet z pliku rozwiązania. Aby to nadpisać, możesz ustawić atrybut install w następujący sposób:

language: csharp
solution: solution-name.sln
install:
  - sudo dosomething
  - nuget restore solution-name.sln
 14
Author: danielnixon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-22 13:35:27

Zobacz odpowiedź danielnixona aby uzyskać oficjalny sposób, aby to zrobić teraz.

To możliwe.

1. Twój projekt musi pracować na Mono

Na własnej maszynie mono, używając terminala, cd do katalogu solution i uruchamiając komendę xbuild. Może to działać automatycznie lub nie, ponieważ istnieją funkcje używane w visual studio, które wymagają pewnych poprawek w mono.

Rzeczy, na które warto zwrócić uwagę:

  • brakujące pliki błędy, sprawdź, czy wielkość liter w nazwach plików pasuje do twojego .csproj linux ma rozróżniane wielkości liter, gdzie windows nie.
  • Nuget wymaga export EnableNuGetPackageRestore=true przed uruchomieniem xbuild, jeśli projekt zostanie automatycznie przywrócony.
  • twoja instancja mono może nie mieć certyfikatów root SSL, użyj mozroots --import --sync, aby je zainstalować.
  • również jeśli widzisz brakujące błędy plików, nuget.* zamiast NuGet.* odwołania w Twoim .csproj były znane w różnych wersjach nuget.
  • jest błąd w 2.5 nuget ' s plik docelowy oparty na białych znakach w .plik docelowy, obejście tutaj
  • do obsługi FSharp 3.0 potrzebujesz mono 3.0.X lub nowszy (może wymagać kompilacji ze źródła, ale domyślnie zainstalowany na Mac OS X)
  • dla projektów FSharp z VS2013, może być konieczne edytowanie .fsproj, aby uruchomić konfigurację VS2012 na maszynach innych niż Windows, dodając '$(VisualStudioVersion)' == '11.0' Or $(OS) != 'Windows_NT' Zobacz przykład.

Mono 3.1.12, 3.2.4 i Później

  • Mono 3.1.2, 3.2.4 i Później mieć obsługę pcl, ale może również mieć brakujące błędy PCL. Zwróć uwagę na błąd wymieniony poniżej w Mono 3.0.12, ponieważ zawiera on tylko następujące odniesienia do frameworka:
    • v4.0, Profile136 W 2011 roku firma Microsoft ogłosiła, że będzie miała już ponad 100 000 klientów na całym świecie.]}
    • v4. 0, Profile14 . NET Framework 4, Silverlight 5
    • v4.0, Profile147 . NET Framework 4.0.3, Silverlight 5, Windows Phone 8, Windows Store apps (Windows 8)
    • v4.0, Profile158 W 2008 roku firma została założona w 2009 roku przez firmę. NET Framework. Net. Net. Net. Net. Net. Net. Net. Net. Net. Net. Net. Net. Net. Net. Net.]}
    • v4.0, Profile19 . NET Framework 4.0.3, Silverlight 5
    • v4.0, Profile24 . NET Framework 4.5, Silverlight 5
    • v4. 0, Profile37 . NET Framework 4, Silverlight 5, aplikacje Sklepu Windows (Windows 8)
    • v4.0, Profile42 . NET Framework 4.0.3, Silverlight 5, Windows Store apps (Windows 8)
    • v4.0, Profile47 W 2009 roku firma. Net została założona w 2009 roku.]}
    • v4. 0, Profile5 W 2009 roku firma. Net została założona w 2009 roku.]}
    • v4. 0, Profile6 . NET Framework 4.0.3, Windows Store apps (Windows 8)
    • v4.5, Profile49 . NET Framework 4.5, Windows Phone 8
    • v4. 5, Profile7 W 2009 roku firma. Net otrzymała certyfikat. NET.]}
    • v4. 5, Profile78 SYSTEM OPERACYJNY Windows Phone 2.0 został zaprojektowany w taki sposób, aby był łatwy w obsłudze i łatwy w obsłudze.]}

Mono 3.0.12

  • Mono 3.0.12 ma cele dla przenośnych bibliotek klas, ale nie dla zestawów referencyjnych. Poszukaj 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. Warunków korzystania z platformy (wymienionych pod Mono 3.0.11 lub wcześniejszy ) lub upgrade do 3.1.2.

Mono 3.0.11 lub wcześniejsze

  • brak błędów docelowych, jeśli nie jest to nuget, to prawdopodobnie dlatego, że używasz przenośnego obiektu docelowego biblioteki klas lub innego obiektu docelowego, który nie istnieje. Jeśli twój projekt może skompilować się dla .Net 4.0, możesz zmodyfikować swój.csproj lub .fsproj, tak że na. Net buduje portable a na mono buduje dla. Net 4.0. zasadniczo przez rozdzielenie rzeczy na grupy właściwości warunkowych <PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup> lub Condition="$(OS) != 'Windows_NT' dla mono. Przebieg może się różnić. Zobacz przykład pracy .
Mono 2.10X
  • również mono v2.10 brakuje trochę to Microsoft.Zbuduj klasy, których potrzebuje Nuget, możesz skopiować v3. 0.X dll, który jest bardzo mały, do .katalog nuget. (Użyłem go tutaj )

2. Możliwość uruchamiania testów jednostkowych z wiersza poleceń.

.ci/nunit.sh to mój własny skrypt powłoki do testowania nunit, sprawdzany w katalogu głównym repo. Więc mogę zainstalować nunit - wersja konsoli chcę z nuget, i skonfigurować różne include / excludes kategorii zbyt. Przebieg może się różnić, ale ta technika powinna działać dla xunit itp. Lub zrobić swoje własne rzeczy z xbuild lub 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. Konfiguracja Travis dla mono

Mono v3.8. 0

Do testowania najnowszego mono najłatwiej jest użyć hostów Mac (target używając language:objective-c Mono v3.1.2 i później zmieniono dystrybucję na Macu z DMG na tylko PKG więc instalacja jest dość prosta. Ten szablon powinien obsługiwać Przenośne biblioteki klas,. NET 4.5.1 i 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

Do celu zarówno Mono v2. 10.X i v3. 0.X

I ' s easy to use Mac hosts to setup up for a build matrix for multiple versions of Mono. Zobacz skrypt poniżej

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

Dla Linuksa

A teraz powinieneś zacząć używać Travisa w swoim projekcie c#.

 149
Author: jbtule,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-22 13:37:13

To kluczowy punkt-projekt musi działać na Mono. Działa to głównie w przypadku projektów w stylu bibliotecznym (dobrym przykładem jest AWS SDK. NET ), ale wymaga większego wysiłku i dyscypliny. Środowisko budowania Linuksa nie będzie działać, jeśli tworzysz projekt dla platformy Windows, takiej jak aplikacja WPF, usługa w chmurze Azure,aplikacja Windows Phone / Store lub nawet ASP.NET Web API.

AppVeyor CI to hostowana usługa ciągłej integracji dla platformy Windows i jest darmowy dla projektów open source. To jak Travis CI Dla Windows!

Możesz skonfigurować proces budowania dla VS.NET rozwiązanie, niestandardowy projekt MSBuild, PSake lub dowolny skrypt PowerShell pliku wsadowego. Poza tym AppVeyor ma wbudowaną strukturę zarządzania artefaktami i wdrażania.

 25
Author: Feodor Fitsner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-03 16:42:15

Jak już wspomniano, ma wsparcie beta dla C#. Jestem prosto do użycia. Również nunit można bardzo łatwo zintegrować. Oto mały przykład .travis.plik yml, który uruchamia testy nunit i oznacza kompilację jako nieudaną, jeśli przynajmniej jeden test jednostkowy się nie powiedzie:

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
 7
Author: Roemer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-19 12:32:01

Jeśli chcesz używać Travis CI z F#, na Githubie, z FAKE i Packet, to zalecane jest użycie F# Projectscafold:

Http://fsprojects.github.io/ProjectScaffold

 1
Author: Andrew Olney,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-10 20:31:02