Usługa ciągłej integracji Travis CI oficjalnie obsługuje wiele języków , ale nie C # ani F #.
Czy mogę go używać z moimi projektami .net?
Travis CI obsługuje teraz język C # . Cytując swobodnie z tej strony:
Przegląd
Konfiguracja 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
Scenariusz
Domyślnie Travis uruchomi xbuild nazwa-rozwiązania.sln. Xbuild to narzędzie do kompilacji zaprojektowane jako implementacja dla narzędzia Microsoft MSBuild. Aby to zmienić, możesz ustawić atrybut skryptu w następujący sposób:
language: csharp
solution: solution-name.sln
script: ./build.sh
NuGet
Domyślnie Travis uruchomi nuget restore solution-name.sln, który przywraca wszystkie pakiety NuGet z pliku rozwiązania. Aby to zmienić, możesz ustawić atrybut instalacji w następujący sposób:
language: csharp
solution: solution-name.sln
install:
- sudo dosomething
- nuget restore solution-name.sln
Zobacz odpowiedź danielnixon aby jak to zrobić teraz.
To jest możliwe.
1. Twój projekt musi działać na Mono
Na własnej maszynie mono, używając terminala,
cd
do katalogu rozwiązania i uruchamiając poleceniexbuild
. Może to działać automatycznie lub nie, ponieważ istnieją funkcje używane w Visual Studio, które wymagają pewnych poprawek w trybie mono.Na co zwrócić uwagę:
.csproj
linuxem, w ścieżkach rozróżniających wielkość liter, w których okna nie są.export EnableNuGetPackageRestore=true
przed uruchomieniem,xbuild
jeśli projekt zostanie automatycznie przywrócony.mozroots --import --sync
aby je zainstalować.nuget.*
zamiastNuGet.*
odwołań w pliku .csproj były znane w różnych wersjach nuget..fsproj
celu wyzwolenia konfiguracji VS2012 na komputerach bez systemu Windows, dodając'$(VisualStudioVersion)' == '11.0' Or $(OS) != 'Windows_NT'
zobacz przykład .Mono 3.1.12, 3.2.4 i nowsze
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.
warunków korzystania z platformy (wymienionych w Mono 3.0.11 lub wcześniejszych ) lub zaktualizuj do wersji 3.1.2.Mono 3.0.11 lub wcześniejsza
<PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup>
lubCondition="$(OS) != 'Windows_NT'
na mono. Twój przebieg może się różnić. Zobacz przykład roboczy .Mono 2.10.X
2. Umiejętność uruchamiania testów jednostkowych z wiersza poleceń.
.ci/nunit.sh
to mój własny skrypt powłoki do testowania nunitów, sprawdzony w katalogu głównym repozytorium. Mogę więc zainstalować wersję nunit-console, którą chcę, z nuget, i skonfigurować różne włączanie / wykluczanie kategorii. Twój przebieg może się różnić, ale ta technika powinna działać dla xunit itp. Lub rób swoje 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. Skonfiguruj Travisa na tryb monofoniczny
Mono v3.8.0
Do testowania najnowszego mono najłatwiej jest użyć hostów Mac (docelowo za pomocą
language:objective-c
Mono v3.1.2 i później zmieniono dystrybucję na Mac 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
Kierowanie na Mono v2.10.X i v3.0.X
Jestem łatwy w użyciu hostów Mac, aby skonfigurować macierz kompilacji dla wielu wersji 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
W przypadku systemu Linux
A teraz powinno być dobrze, aby przejść do korzystania z programu Travis w projekcie C #.
źródło
sudo installer -pkg
. Czy mógłbyś mi pomóc to naprawić? Dziękuję Ci! patrz, travis-ci.org/Aimeast/TestForFirst/builds/13814315language: objective-c
jest niezbędny dla tego szablonu, aby korzystał z hosta OS X.To jest 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 ), chociaż wymaga więcej wysiłku programistycznego i dyscypliny. Środowisko budowlane Linux 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 bezpłatna dla projektów open source. To jak Travis CI dla Windows!
Możesz skonfigurować proces kompilacji dla rozwiązania VS.NET, niestandardowego projektu MSBuild, PSake lub dowolnego skryptu programu PowerShell w pliku wsadowym. Poza tym AppVeyor ma wbudowane zarządzanie artefaktami i ramy wdrażania.
źródło
Jak już wspomniano, Travis CI obsługuje wersję beta dla języka C # . Nie jest łatwy w użyciu. Również nunit można bardzo łatwo zintegrować. Oto mały przykład pliku .travis.yml, który uruchamia testy nunit i oznacza kompilację jako nieudaną, jeśli przynajmniej jeden test jednostkowy nie powiedzie się:
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
źródło
sudo: required
na końcu. Działa jak marzenie.Jeśli chcesz używać Travis CI z F #, na GitHub, z FAKE i Packet, zalecamy F # ProjectScaffold:
http://fsprojects.github.io/ProjectScaffold
źródło