Le service d'intégration continue Travis CI prend officiellement en charge de nombreux langues , mais pas C # ou F #.
Puis-je l'utiliser avec mes projets .net?
Travis CI maintenant prend en charge C # . Citant généreusement de cette page:
Présentation
La configuration pour les projets C #, F # et Visual Basic ressemble à ceci:
language: csharp
solution: solution-name.sln
mono:
- latest
- 3.12.0
- 3.10.0
Scénario
Par défaut, Travis exécutera xbuild solution-name.sln. Xbuild est un outil de construction conçu pour être une implémentation de l'outil MSBuild de Microsoft. Pour remplacer cela, vous pouvez définir l'attribut de script comme ceci:
language: csharp
solution: solution-name.sln
script: ./build.sh
NuGet
Par défaut, Travis exécutera nuget restore solution-name.sln, qui restaure tous les packages NuGet à partir de votre fichier de solution. Pour remplacer cela, vous pouvez définir l'attribut d'installation comme ceci:
language: csharp
solution: solution-name.sln
install:
- Sudo dosomething
- nuget restore solution-name.sln
Voir réponse de danielnixon pour la manière officielle de le faire maintenant.
C'est possible.
Sur votre propre machine mono, à l'aide du terminal, cd
dans votre répertoire de solution et exécutez la commande xbuild
. Cela peut fonctionner automatiquement ou non, car il existe des fonctionnalités que vous avez utilisées dans Visual Studio qui nécessitent quelques ajustements en mono.
À surveiller:
.csproj
Linux a des chemins sensibles à la casse où Windows ne le fait pas.export EnableNuGetPackageRestore=true
Avant d'exécuter xbuild
si la restauration automatique de votre projet.mozroots --import --sync
Pour les installer.nuget.*
Au lieu de NuGet.*
Dans votre .csproj sont connues pour exister dans différentes versions de nuget..fsproj
Pour déclencher la configuration VS2012 sur des machines non Windows en ajoutant '$(VisualStudioVersion)' == '11.0' Or $(OS) != 'Windows_NT'
voir exemple .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.
Utilisez les conditions de la plate-forme (mentionnées sous Mono 3.0.11 ou version antérieure ) ou mettez à niveau vers 3.1.2.<PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup>
ou Condition="$(OS) != 'Windows_NT'
pour mono. Votre kilométrage peut varier. Voir travail exemple ..ci/nunit.sh
Est mon propre script Shell pour les tests d'unité, archivé à la racine du dépôt. Ainsi, je peux installer la version nunit-console que je veux avec nuget, et configurer également diverses inclusions/exclusions de catégories. Votre kilométrage peut varier, mais cette technique devrait fonctionner pour xunit etc. Ou faites votre propre chose avec xbuild ou faux .
#!/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 $?
Pour tester la dernière version mono, il est plus facile d'utiliser des hôtes Mac (ciblez en utilisant language:objective-c
Mono v3.1.2 et plus tard, la distribution a changé sur un Mac d'un DMG à un PKG donc l'installation est assez simple. Ce modèle devrait prendre en charge Bibliothèques de classes portables, .NET 4.5.1 et 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
Il est facile d'utiliser des hôtes Mac pour configurer une matrice de construction pour plusieurs versions de Mono. Voir le script ci-dessous
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
Et maintenant, vous devriez être prêt à utiliser travis sur votre projet c #.
C'est le point clé - le projet doit fonctionner sur Mono. Cela fonctionne principalement pour les projets de style bibliothèque ( AWS SDK .NET est un bon exemple) mais nécessite plus d'efforts de développement et de discipline. L'environnement de construction Linux ne fonctionnera pas si vous développez un projet pour une plate-forme Windows telle qu'une application WPF, un service cloud Azure, une application Windows Phone/Store ou même une API Web ASP.NET.
AppVeyor CI est un service d'intégration continue hébergé pour la plate-forme Windows et il est gratuit pour les projets open source. C'est comme Travis CI pour Windows!
Vous pouvez configurer le processus de génération pour la solution VS.NET, le projet MSBuild personnalisé, PSake ou tout script PowerShell de fichier de commandes. En outre, AppVeyor a intégré la gestion des artefacts et le cadre de déploiement.
Comme déjà mentionné, Travis CI a une version bêta prise en charge de C # . C'est simple à utiliser. La nunit peut également être intégrée très facilement. Voici un petit exemple d'un fichier .travis.yml qui exécute des tests d'unité et marque la construction comme ayant échoué si au moins un test unitaire échoue:
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
Si vous souhaitez utiliser Travis CI avec F #, sur GitHub, avec FAKE et Packet, alors le F # ProjectScaffold est recommandé: