GitLab CI et MsBuild (avec tests)
Je suis en train de migrer mon svn repsitories git avec GitLab.
Maintenant j'ai vu qu'il y a une intégration continue de la mise en œuvre avec GitLab CI et vous voulez juste pour essayer.
J'ai déjà installé et configuré un Coureur mais Gitlab se plaint que je n'ai pas de .gitlab-ci.yml
fichier.
J'utilise déjà TeamCity pour l'intégration continue, donc je ne veux pas mettre beaucoup d'efforts dans l'écriture d'un script de compilation.
Quelqu'un peut-il me dire où je peux trouver un exemple de base d'un gitlab-ci.yml
fichier fondamentalement juste construit ma Solution et exécute tous les tests (MSTests)?
OriginalL'auteur Jürgen Steinblock | 2015-10-06
Vous devez vous connecter pour publier un commentaire.
Il n'est apparemment pas msbuild simple exemple, mais cela devrait vous aider à démarrer:
De déterminer les tests à exécuter, est un peu délicat. Ma convention est que chaque projet a un dossier de tests dans lesquels les projets de test sont nommés d'après le schéma MyProject.De base.Des Tests (pour un projet appelé MyProject.De base)
Comme un premier retour vers gitlab-ci
J'aime la simplicité et l'intégration de contrôle de source. Mais je voudrais être en mesure de modifier le script avant d'exécution (en particulier, tout en modifiant le script) mais j'ai pu l'imagerie de relancer un spécifique s'engager et d'injecter des variables ou de modifier le script (je peux le faire avec teamcity). Ou même ignorer l'échec d'un test et exécutez de nouveau le script (je ne beaucoup à teamcity). Je sais que gitlab-ci ne sait rien à propos de mes tests, j'ai juste une ligne de commande qui retourne un code d'erreur.
ma solution a un petit inconvénient. chaque test dll est d'exécuter separemment et remplace le code de sortie. Donc, gitlab-ci.yml ne sait que sur le code de sortie de la dernière épreuve. Vous pouvez réécrire le code de sortie if errorlevel > 0 ou utilisez
mstest.exe /testcontainer:MyProject.Core.Tests.dll /testcontainer:MyProject.Gui.Tests.dll
pour exécuter tous les tests dans un essai de marche.Qui a dit: j'ai changé pour de FAUX comme un système de construction qui est beaucoup plus puissant et facile à utiliser. Mon gitlab-ci.yml étapes de génération ne contiennent qu'une seule commande
fake build
oufake test
Il a construire en commandes pour les différentes tâches fsharp.github.io/FAKE/apidocs/fake-mstest.htmlQue penser de l'utilisation de mono? Comment pourrait-elle ressembler?
Remplacer
msbuild.exe
avecxbuild
il devrait être compatible. Si vous utilisez le shell coureur avec bash, au lieu de la windows cmd vous pouvez définir des variables avecBUILDTOOL=/path/to/xbuild
et de l'utiliser comme$BUILDTOOL $SOLUTION
je ne sais pas si mstest est pris en charge, mais le plus vous êtes susceptible d'utiliser un autre framework de test avec mono.OriginalL'auteur Jürgen Steinblock
Comme un additif à Jürgen Steinblock répondre, je voudrais suggérer une plus simple alternative pour l'étape de test du script:
Cela permet de lancer des tests sur tout projet de test binaires trouvé qui se termine par convention avec
*Tests.dll
dans le répertoire build. Ceci a l'avantage de ne pas utiliser un fichier intermédiaire.*Test.dll
- l'invocation directe de mstest de ladir ... | finstr ...
ne fonctionne pas (ne me souviens pas pourquoi) c'est pourquoi j'ai utilisé un fichier comme une solution de contournement. De toute façon un long temps a passé et ma solution actuelle serait: Utilisation.gitlab.ci file as little as possible and use
FAUX " comme un outil de construction qui a une belle!! "Tests\**\bin\**\*.Tests.dll" -- "Tests\ExludeThis\*" ++ ++ "IncludeThis\**\*.Tests.dll"
FileIncludes de commande et plusieurs bons de commandesMerci pour le FAUX soupçon (lol), je vais donner un coup d'oeil à elle. Yep en effet, j'ai eu le même problème. Je suppose que c'est parce que gitlab-ce coureur de l'API ne répond pas correctement passer
`
personnages, je suppose. C'est pourquoi, après quelques essais, j'ai fini par utiliser'
pour entourer le dir la commande.Et s'il vous plaît gardez à l'esprit que chaque nouvel essai remplace la variable errorlevel. Si votre gitlab la phase de test n'échoue que si le dernier projet de test a échoué (très dangereux), regarde le commentaire de ma réponse, la meilleure solution consiste à exécuter tous les tests à la fois
mstest.exe /testcontainer:MyProject.Core.Tests.dll /testcontainer:MyProject.Gui.Tests.dll
Juste de rappeler, que les FAUX exécute un conteneur de test après l'autre, @cid ceci est pris à partir de mon script de build, si vous passez à FAUX, tout le putt de la buildMSTestArgs2 et MSTest2 méthode dans votre script avant le test réel de cible gist.github.com/Steinblock/2dd24006dab11d70fb5c4fccd03ad8c4
D'accord sur le danger potentiel. J'utilise ce parce que je ne sais pas le nom exact du test, dll, mais a toujours seul dans le dossier donné donc c'est ok. Merci pour le partage.
OriginalL'auteur cid
C'est ce que j'ai utilisé par la suite. Il exécute tous les *Tests.Dll en un seul passage.
OriginalL'auteur Gluip