Il servizio di integrazione continua di Travis CI supporta ufficialmente molti linguaggi , ma non C # o F #.
Posso usarlo con i miei progetti .net?
Risposte:
Travis CI ora supporta C # . Citando liberamente da quella pagina:
Panoramica
La configurazione per i progetti C #, F # e Visual Basic ha questo aspetto:
language: csharp
solution: solution-name.sln
mono:
- latest
- 3.12.0
- 3.10.0
Script
Per impostazione predefinita, Travis eseguirà xbuild nome-soluzione.sln. Xbuild è uno strumento di compilazione progettato per essere un'implementazione per lo strumento MSBuild di Microsoft. Per sovrascriverlo, puoi impostare l'attributo script in questo modo:
language: csharp
solution: solution-name.sln
script: ./build.sh
NuGet
Per impostazione predefinita, Travis eseguirà il ripristino di nuget nome-soluzione.sln, che ripristina tutti i pacchetti NuGet dal file della soluzione. Per sovrascriverlo, puoi impostare l'attributo di installazione in questo modo:
language: csharp
solution: solution-name.sln
install:
- sudo dosomething
- nuget restore solution-name.sln
Vedi la risposta di danielnixon per il modo ufficiale per farlo ora.
È possibile.
Sulla tua macchina mono, utilizzando il terminale, cd
nella directory della soluzione ed eseguendo il comando xbuild
. Questo potrebbe funzionare automaticamente, o potrebbe non funzionare, poiché ci sono funzionalità che hai usato in Visual Studio che richiedono qualche ritocco in mono.
Cose a cui prestare attenzione:
.csproj
Linux ha percorsi sensibili al maiuscolo / minuscolo mentre Windows no.export EnableNuGetPackageRestore=true
prima di correrexbuild
se il tuo progetto si ripristina automaticamente.mozroots --import --sync
per installarli.nuget.*
invece diNuGet.*
riferimenti nel tuo .csproj sono stati conosciuti per esistere in varie versioni di nuget..fsproj
per attivare la configurazione di VS2012 su macchine non Windows aggiungendo '$(VisualStudioVersion)' == '11.0' Or $(OS) != 'Windows_NT'
vedi esempio .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.
uso della piattaforma (menzionate in Mono 3.0.11 o versioni precedenti ) o esegui l' aggiornamento a 3.1.2.<PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup>
o Condition="$(OS) != 'Windows_NT'
per mono. Il tuo chilometraggio può variare. Vedi esempio di lavoro ..ci/nunit.sh
è il mio script di shell per il test di nunit, archiviato nella radice del repository. Quindi posso installare la versione nunit-console che desidero con nuget e configurare anche varie inclusioni / esclusioni di categorie. Il tuo chilometraggio può variare, ma questa tecnica dovrebbe funzionare per xunit ecc. Oppure fai le tue cose con xbuild o 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 $?
Per testare l'ultimo mono è più facile usare gli host Mac (target utilizzando language:objective-c
Mono v3.1.2 e successivamente modificato la distribuzione su un Mac da un DMG a solo un PKG, quindi l'installazione è abbastanza semplice. Questo modello dovrebbe supportare Portable Class Libraries, .NET 4.5.1 e 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
È facile usare host Mac per configurare una matrice di build per più versioni di Mono. Vedere lo script di seguito
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
E ora dovresti essere a posto per usare Travis nel tuo progetto c #.
sudo installer -pkg
. Potrebbe aiutarmi a risolverlo? Grazie! vedi, travis-ci.org/Aimeast/TestForFirst/builds/13814315
language: objective-c
è necessario per quel modello, in modo che utilizzi l'host OS X.
Questo è il punto chiave: il progetto deve funzionare su Mono. Funziona principalmente per progetti in stile libreria ( AWS SDK .NET è un buon esempio) sebbene richieda maggiori sforzi di sviluppo e disciplina. L'ambiente di costruzione Linux non funzionerà se stai sviluppando un progetto per la piattaforma Windows come l'applicazione WPF, il servizio cloud di Azure, l'app Windows Phone / Store o anche l'API Web ASP.NET.
AppVeyor CI è un servizio di integrazione continua ospitato per la piattaforma Windows ed è gratuito per i progetti open source. È come Travis CI per Windows!
È possibile configurare il processo di compilazione per la soluzione VS.NET, il progetto MSBuild personalizzato, PSake o qualsiasi script PowerShell del file batch. Inoltre, AppVeyor dispone di un framework di distribuzione e gestione degli artefatti integrato.
Come già accennato, Travis CI ha il supporto beta per C # . È semplice da usare. Anche nunit può essere integrato molto facilmente. Ecco un piccolo esempio di un file .travis.yml che esegue test nunit e contrassegna la compilazione come non riuscita se almeno uno unit test fallisce:
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
alla fine. Funziona come un fascino.
Se si desidera utilizzare Travis CI con F #, su GitHub, con FAKE e Packet, si consiglia F # ProjectScaffold: