Affichage des articles dont le libellé est Team Foundation Server. Afficher tous les articles
Affichage des articles dont le libellé est Team Foundation Server. Afficher tous les articles

mardi 4 août 2020

C'est quoi Azure DevOps ?

Je connais Azure, le cloud de Microsoft. DevOps c'est un ensemble de techniques de programmation donc les deux ensembles cela doit vouloir dire : Techniques de programmation dans l'Azure ... ?

Microsoft Azure DevOps
Planifiez plus intelligemment, collaborez mieux et livrez plus rapidement avec un ensemble de services de développement modernes.

C'est quoi Azure DevOps ?
C'est quoi Azure DevOps ?

C'est parce que je trouve ce terme dans la lecture d'une annonce pour l'emploi et qu'il m'interpelle car je ne suis pas certain de savoir parler d'Azure DevOps que je creuse pour trouver ce que c'est plus précisément ...

Finalement on me propose de démarrer rapidement en me loguant, je me logue ... et je tombe sur mon bon vieux Team Foundation Server, le bon vieux TFS d’antant qui comme toute chose se retrouve maintenant dans l'Azure et qui s'est appelé un moment Azure Team ... Donc c'est tout simplement le Gestionnaire de Codes Sources de Microsoft ... (comme github ou gitlab).

Si vous faites du développement logiciel vous savez ce qu'est un gestionnaire de code source un outil qui vous permet de développer vos codes en équipes de n'avoir qu'une source dans laquelle tous les contributeurs viennent commiter (ranger, sauver) leurs codes.

Là, je vous montre comment utiliser GitHub dans Visual Studio.

Bref, rien de très nouveau sous cette nouvelle appellation ...

Azure DevOps c'est ce bon vieux TFS à la mode Azure

Azure DevOps c'est donc Team Foundation Server dans le Cloud avec un peu de gestion de projet façon Agile autour ..

Et pour aller plus loin, je trouve ceci :

Microsoft - Concevoir un pipeline CI/CD à l’aide d’Azure DevOps

Avec un joli graphique pour expliciter des différentes étapes du développement d'un projet :

Processus DevOps au sein de l'Azure Cloud de Microsoft

C'est plein de bon trucs de DevOps à la sauce Microsoft. Avec pour moi la brique la moins connue c'est certainement Azure Application Insights l'outil d'optimisation de performances pour les applications Web à creuser absolument.

Azure Application Insights

Je détaille cette brique qui me semble être la plus récente, la moins connue. Si vous installez un petit package d'instrumentation (SDK) Azure Application Insights instrumentalise votre application pour la superviser. Des données de télémétries ont alors dirigées vers un ressource Azure Application Insights.

Azure DevOps - Application Insigths
Azure DevOps - Application Insigths

Les Insights sont "Des conseils d'optim" afin d'optimiser le fonctionnement de vos applications.

Voilà, nous avons maintenant une  meilleure vision de ce qu'est l'Azure DevOps sans avoir à lire les dizaines et les dizaines de pages de la documentation Microsoft for dummies.

mardi 26 avril 2016

Vous souhaitez savoir à quoi sert Git & GitHub par rapport à TFS & Codeplexe

Vous êtes au bon endroit. Git, ou GitHub si on parle du site en ligne, est un gestionnaire de codes sources. Alors pourquoi après CSV, SNV, ClearCase, TFS et bien d'autres un nouveau gestionnaire de codes sources ?

Franchement, je ne sais pas !

Je ne vais pas décrire Team Foundation Server, je présuppose que l'on connait.

Git est encore un de ces outils Linuxien... comment dire, comment dire sans les vexer... un outil console quoi. Si vous n'avez pas les commandes en tête rien n'est intuitif. Voici la belle console MinGW64 de GitHub :

Git - Console command
Ah, il y a aussi une IHM :

Git GUI - IHM
Et plein de problèmes... au moment de commiter.

Git problem with CRLF
Oh la la, ça recommence, ah oui Linux, le truc qui n'aime pas les CRLF, à moins que se soit Windows qui n'aime pas les LF... bref une prise en main bien dificile.

Et ça continue...

Compress the database now? - Non merci sans façon...
En essayant d'aller un peu plus loin :

Git - Push command
Etant donné le côté ultra-intuitif de cet outil, il faudra maintenant parcourir un bon tuto. Celui-ci n'est pas mal...

https://matthew-brett.github.io/pydagogue/git_gui_windows.html
Mais il est en anglais

Conclusion sur Git Hub

La rapidité est excellente avec Git, c'est vrai. Mais les outils sont du type console, même s'il y a une interface la plus part de l'aide est en lignes de commandes. Il va falloir beaucoup d'investissement pour prendre en main ce gestionnaire de configuration.

Avantage : Vous n'avez pas à installer de serveur, tout se fait dans le cloud en créant un compte Git Hub et les repositories pour y placer vos projets.

Inconvénient majeur de Git Hub

L'inconvénient majeur c'est le référencement. Les pages des Wikis de GitHub ne sont pas faites pour être référencées.

J'ai créé un projet ASP-NET-Survey-Online sur Git hub et quand j'effectue une recherche avec google voici le résultat :
Référencement de mon projet dans Git Hub

On voit très clairement que ce n'est pas mon projet qui est mis en avant mais Git Hub, c'est idiot.

D'abord vous avez ce "GitHub-" qui est mis en avant. En suite : "contribute to " nom du projet "development by creating an account on GitHub.

Ce n'est pas moi qui ai écrit cela mais GitHub qui fagocite mon projet.

vendredi 28 juin 2013

Outils d'intégration continue

Quand on a pratiqué l'intégration continue entièrement intégrée avec Team Foundation Server, on est un peu désarçonné par l'ensemble de tous les outils qui peuvent être utilisés afin de mettre en place une stratégie d'intégration continue avec d'autres chaînes de développement que TFS. 

Cet article est là pour faire un petit récapitulatif de ce qu'est l'intégration continue.

Team Foundation Server

Les principes d'intégration continue permettent de distinguer un développement artisanal d'un développement industriel ou développement maîtrisé de façon professionnelle.+

En intégration continue, vous avez forcément un serveur dédiée sur lequel le produit logiciel est déployé afin de faire une vérification complète du produit avant de déployer sur une cible finale, ce n'est pas le cas dans le cadre d'un développement artisanal.

Les Principes de l'Intégration Continue

  • le code source est partagé et versionné dans un gestionnaire de code source (un référentiel ou repository unique)
  • les développeurs intègrent (commit ou checkin) leur code le plus souvent possible (chaque jour par exemple)
  • des tests unitaires sont développés et des tests d'intégration permettent de valider l'application sur un serveur d'intégration (ou serveur de build)

La mise en place de ces principes permet de :

  • tester immédiatement les unités modifiées et leur compatibilité entre elles
  • découvrir immédiatement des codes manquants ou incompatibles
  • les problèmes d'intégration sont réparés pour éviter les problèmes de dernière minute
  • une version est toujours disponible pour un test une démonstration ou une distribution

Qu'est ce que l'intégration continue sur le site de So@t

Intégration continue des bases de données : RedGate avec SQL Toolbelt comparaison de schémas de base de données. BD SQL Server ou Oracle.

Team Foundation Server pour :
Gestion de Projet
Gestion de prérequis
Versionnement de code source
Gestion de cas de test
Automatisation de build
Génération de rapports

Configuration du serveur TFS : Team Server Foundation en pas à pas

Sur le Blog de Julien Carnelos : L'intégration continue Open Source en .NET

Principe : Tout ce qui peut-être automatisé doit l'être.
Contrôle de codes sources : SVN (Subversion)
Tests Unitaires : NUnit
Compilation et Build : NAnt
Contrôle de construction : CruiseControl.NET et CCTray

Pour aller plus loin : Mise en place d'outils d'analyse de codes sources de génération de métriques. Terminer le Build NAnt par la génération d'un package d'installation prêt pour la livraison. L’envoi d'un email de notification à un client ou mieux à une équipe de QA (Assurance Qualité).

Je me propose de recopier ici quelques bonnes phrases du blog de J.Carnelos car les liens cassent ...

On oppose généralement l’aspect industriel du développement à l’artisanal. Pour mieux saisir la signification de ce terme, je vous propose une petite histoire :

Après quatre mois de développement, c’est le grand jour de la livraison. Georges, après avoir testé une dernière fois que son code compile, décide de déployer la version finale du site Intranet de la mairie. La démarche est maîtrisée puisque cela fait maintenant une vingtaine de fois qu’il a répété l’opération. Comme à chaque fois, il commence par demander à son collègue sur quels fichiers il a travaillé. La liste connue, il récupère par le réseau ces fichiers, puis tente de compiler le projet. Chance, tout compile.

La suite est plus délicate, Georges doit se connecter à distance au serveur, migrer la base de données et insérer les données mis à jour. Vient ensuite la partie copie des fichiers sur le serveur et redémarrage du serveur. A ce moment, si tout va bien, le site devrait être mis à jour. Malheureusement, au premier test, impossible de se logger.

Si cette scène vous rappelle quelque chose, pas d’inquiétude car c’est courant et aujourd’hui de nombreuses sociétés fonctionnent dans ce mode de gestion. Mais l’industrialisation et l’automatisation sont maintenant un but plus facile que jamais à atteindre grâce à de nombreux outils. Preuve en est également l’implication de Microsoft sur le thème « Gestion du cycle de vie logiciel » et la fourniture d’une offre complète avec la suite Team System et son serveur Team Foundation Server.

Néanmoins pour des raisons de simplicité, nous nous attacherons ici à présenter les concepts de l’intégration continue à l’aide uniquement d’outils open-source.

Concept

Schéma d'une chaine d'intégration continue

L’intégration continue est un concept qui se base sur l’analogie avec une usine automatisée. Sauf qu’au lieu de construire des voitures, on construit un logiciel. Cette « usine » est construite sur enchaînement suivant :

  1. Un développeur travaille en local. Lorsque ses modifications sont terminées, il archive son code sur un serveur gestionnaire de sources.
  2. A la détection d’un changement (ou suivant une règle temporelle paramétrée), le serveur d’intégration récupère la dernière version des sources et déclenche la construction (« build ») de la solution.
  3. En étape facultative mais intéressante, il est possible d’appliquer des métriques et des tests sur la solution et d’en générer des rapports
  4. Enfin, la solution et le bilan de la construction sont déployés sur un serveur de résultat accessible à l’équipe projet. Dans le cas d’un sous traitance, ce portail peut aussi être mis à la disposition du client pour qu’il puisse constater l’avancement du projet. (Particulièrement utile dans le cadre d’une démarche agile).

Documentation des codes sources

On ne crée pas de bons codes sources sans bonne documentation.

NDoc : Open Source Documenter, Générateur de documentation pour .NET

Sous TFS : SharePoint, oups ce n'est pas aisé d'utiliser cet outil que je trouve un peu archaïque

Outils d'analyse des codes sources

Fédérer une équipe autour d'un développement passe par le partage d'un certain nombre de bonnes pratiques, on appelait cela les coding guidelines aujourd'hui des outils permettent d'automatiser cette tâche en analysant les codes sources.

StyleCop : analyse syntaxique du code source C# sur le CodePlex : StyleCop

StyleCop provides value by enforcing a common set of style rules for C# code.

ReSharper de JetBrains : payant

Un outil d'analyse de code dans Visual Studio Express 2012

FxCop : curieux on note Framework 2.0, semble ne plus exister

Contrôle de codes sources, gestionnaire de versions

C'est un serveur, un endroit centralisé pour récupérer les codes sources créés par les développeurs, un outil permettant de versionner. Permet de résoudre les conflits de réaliser un merge entre plusieurs développements.

Outils :

TFS

SVN ou Subversion

CVS

Git

Perforce 

Tests Unitaires

Il existe MSTest mais il semble que cet outils de tests unitaires soit maintenant supplanté par NUnit ...

MSTest vs. NUnit with Visual Studio 2010 & TDD

NUnit vs xUnit parmi les modules de Tests Unitaires lequel choisir ?

Sur la plateforme .NET : NUnit

Sur le site du code project, rapidement comprendre NUnit : Unit Testing Using NUnit

NUnit permet d'écrire des tests unitaires du genre :

Assert.AreEqual(expected, actual)

NUnit permet l'utilisation de Mock Objects (simulateur d'objets)

A priori le projet NUnit n'est plus hébergé sur source forge mais Ici

Serveur d'intégration ou serveur de builds

C'est un élément clef de l'intégration continue souvent manquant dans les organisation "amateurs".

Les opérations à effectuer grâce aux outils de builds sont :

Nettoyer le répertoire de sortie (les binaires)

Compiler le code source

Exécuter les tests unitaires

Exécuter le programme


Mais aussi :

zip de fichier

transfert ftp

redémarrage de serveur web

En partant des sources, effectuer toute la livraison jusqu’à l’étape déployable (ou même déployé).


Intégration continue avec Team Foundation Server
MSBuild

NAnt qui possède l'avantage d'être multi-plateforme, s'exécute en ligne de commande et prend en paramètre un fichier XML qui décrit les différentes étapes pour emmener le code source dans l'état prêt à l'exécution.

CruiseControl.NET

TeamCity : de JetBrains

For .NET :

Building Visual Studio solutions; native support for MSBuild, Powershell or NAnt
Code analysis for C#, VB.NET, XAML, and many other languages powered by ReSharper
Testing with .NET testing frameworks, including: NUnit, MSTest, MSpec, xUnit and all Gallio-based frameworks
Code coverage with dotCover, NCover or PartCover
Best-in-class NuGet support

Je compléterai plus tard ... vous avez des suggestions d'amélioration et de complétion de cet article, n'hésitez pas à le commenter. Vous avez compris l'intégration continue concerne toutes les phases de développement du logiciel et l'utilisation des outils qui permettent d'automatiser tout ce qui peut l'être.

To Be Continued