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?
Odpowiedzi:
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.
Na własnej maszynie mono, używając terminala, cd
do katalogu rozwiązania i uruchamiając polecenie xbuild
. 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 .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.<PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup>
lub Condition="$(OS) != 'Windows_NT'
na mono. Twój przebieg może się różnić. Zobacz przykład roboczy ..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 .
#!/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 $?
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
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
A teraz powinno być dobrze, aby przejść do korzystania z programu Travis w projekcie C #.
sudo installer -pkg
. Czy mógłbyś mi pomóc to naprawić? Dziękuję Ci! patrz, travis-ci.org/Aimeast/TestForFirst/builds/13814315
language: 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.
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
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: