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?
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
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 uruchomieniemxbuild
, 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.*
zamiastNuGet.*
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>
lubCondition="$(OS) != 'Windows_NT'
dla mono. Przebieg może się różnić. Zobacz przykład pracy .
- 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
- Zobacz odpowiedź poniżej dla nowej definicji beta.
A teraz powinieneś zacząć używać Travisa w swoim projekcie c#.
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.
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
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:
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