Le service d'intégration continue Travis CI prend officiellement en charge de nombreux langages , mais pas C # ou F #.
Puis-je l'utiliser avec mes projets .net?
Réponses:
Travis CI prend désormais en charge C # . Citant généreusement à partir de cette page:
Aperçu
La configuration des 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 nom-solution.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 la réponse de danielnixon pour la manière officielle de le faire maintenant.
C'est possible.
Sur votre propre machine mono, en utilisant le terminal, cd
dans votre répertoire de solution et en exécutant la commande xbuild
. Cela peut fonctionner automatiquement, ou non, car certaines fonctionnalités que vous avez utilisées dans Visual Studio nécessitent quelques ajustements en mono.
Choses à surveiller:
.csproj
Linux a des chemins sensibles à la casse là où Windows ne le fait pas.export EnableNuGetPackageRestore=true
avant de s'exécuter xbuild
si votre projet se rétablit automatiquement.mozroots --import --sync
pour les installer.nuget.*
au lieu de NuGet.*
références dans votre .csproj, on sait qu'elles existent 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 l' 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.
utilisation de la plate-forme (mentionnées sous Mono 3.0.11 ou version antérieure ) ou passez à la version 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 l' exemple de travail ..ci/nunit.sh
est mon propre script shell pour les tests de nunit, vérifié à la racine du dépôt. Je peux donc installer la version nunit-console que je veux avec nuget, et configurer également divers types d'inclusion / exclusion de catégories. Votre kilométrage peut varier, mais cette technique devrait fonctionner pour xunit, etc. Ou faites votre propre truc 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 le dernier mono, il est plus facile d'utiliser des hôtes Mac (cible en utilisant language:objective-c
Mono v3.1.2 et plus tard, a changé la distribution sur un Mac d'un DMG à juste un PKG afin que l'installation soit assez simple. Ce modèle doit prendre en charge les 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 #.
sudo installer -pkg
. Pourriez-vous m'aider à résoudre ce problème? Je vous remercie! voir, travis-ci.org/Aimeast/TestForFirst/builds/13814315
language: objective-c
est nécessaire pour ce modèle, afin qu'il utilise l'hôte OS X.
C'est le point clé - le projet doit fonctionner sur Mono. Cela fonctionne principalement pour les projets de style bibliothèque ( AWS SDK .NET en 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 la plate-forme Windows tel 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 du fichier de commandes. En outre, AppVeyor dispose d'un cadre intégré de gestion et de déploiement des artefacts.
Comme déjà mentionné, Travis CI a un support bêta pour C # . Je suis simple à utiliser. La nunit peut également être intégrée très facilement. Voici un petit exemple de fichier .travis.yml qui exécute des tests nunit et marque la construction comme échouée 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
sudo: required
à la fin. Fonctionne comme un charme.
Si vous souhaitez utiliser Travis CI avec F #, sur GitHub, avec FAKE et Packet, alors le F # ProjectScaffold est recommandé: