Le Cloud de Vincent - Blogueurs - MicrosoftTouch

Le Cloud de Vincent

Découvertes, astuces et curiosités de l'ère du cloud
    • 18/8/2015

    Librairie .NET Alchemy API

    Cela fait plusieurs mois que je « joue » avec plusieurs services d’analyse sémantique. J’ai notamment découvert en avril www.alchemyapi.com Un des aspects intéressant étant qu’ils ont été rachetés il y a peu par IBM.

    Analyse sémantique

    Qu’est-ce que l’analyse sémantique ? c’est l’analyse de données texte (ou d’images aussi dans certains cas) et d’essayer de comprendre le sens du contenu pour en extraire les métadonnées. C’est un peu comme si je vous donnais un document, demandais de le lire et disais « de quels concepts ça traite ? de quelles entités (villes, dates, lieux, personnes…) ? etc etc » L’objectif étant bien évidemment de le réaliser automatiquement.

    La librairie

    Remarquant qu’ils n’avaient pas de librairie officielle en .net et en ayant besoin pour effectuer des tests, j’ai décidé de la développer.

    Et plutôt que de faire ça en mode « hack » j’ai essayé de produire du code propre et réutilisable. De plus plutôt que de garder ça pour moi uniquement j’en ai profité pour mettre le code à disposition sur github ainsi que de créer un nuget pour que les développeurs puissent l’utiliser plus facilement.

    Donc si vous voulez regarder/corriger mon code c’est par ici. https://github.com/baywet/AlchemyAPIClient

    Si vous voulez jouer avec l’api à votre tour c’est par là. https://www.nuget.org/packages/AlchemyAPIClient/

    J’ai été agréablement surpris de constater que la librairie a reçu plusieurs centaines de téléchargements en quelques mois. On verra bien comment évolue ce projet J

    • 17/8/2015

    Conférencier au collab365


    J’ai l’immense honneur d’avoir été sélectionné pour être conférencier lors du collab 365.

    Cet évènement est l’héritier du sp24 avec le spbiz qui s’est déroulé il y a quelques mois. C’est un évènement gratuit en ligne qui se déroulera le 8 Octobre pendant 24h autour du globe.

    En plus de me retrouver aux côtés de conférenciers de renom, j’ai l’immense privilège d’avoir 4 sessions à donner (ça promet d’être sportif)

    A savoir :

    Using office Graph API’s (anglais) https://collab365.conferencehosts.com/SitePages/sessionDetails.aspx?sessionid=C365176

    Traduire SharePoint de A à Z (Français)

    https://collab365.conferencehosts.com/SitePages/sessionDetails.aspx?sessionid=C365048

    L’importance des métadonnées pour votre entreprise (Français)

    https://collab365.conferencehosts.com/SitePages/sessionDetails.aspx?sessionid=C365047

    Setting up your release pipeline for SharePoint in Azure (Anglais)

    https://collab365.conferencehosts.com/SitePages/sessionDetails.aspx?sessionid=C365008

     

    Allez vite vous inscrire pour ne rien rater !

    http://www.collab365.events/

    A très bientôt.

    • 4/8/2015

    Déploiement de Cloud services Azure via les builds 2015

    Introduction au nouveau système de build

    Microsoft a récemment rendu disponible un nouveau modèle de définitions de build avec la version 2015 de Visual studio (les binaires tfs 2015 ne sont pas encore disponibles mais le service est déjà présent dans Visual Studio Online).

    Pour rappel, les « anciens » modèles de build étaient basés sur deux éléments :

    • Le build process template : en XAML, qui définit les étapes que va suivre la séquence de build

    • Le build défintion : qui va servir de liant entre le template, les sources et un ensemble de paramètres.

    Cette méthodologie fournit de nombreuses possibilités pour automatiser votre compilation, packaging, tests unitaires et même dans certains cas les déploiements.

    Les inconvénients principaux restant les suivants :

    • Processus uniquement personnalisable avec Visual Studio/.NET, ce qui ne suit pas l’ouverture récente de Microsoft

    • Difficile à débugger

    • Courbe d’apprentissage assez importante

    De ce fait Microsoft a renommé cette méthodologie « XAML builds » et a livré une nouvelle façon de faire. (actuellement nommée « build definitions » dans l’interface).

    Cette nouvelle méthodologie apporte de nombreux avantages :

    • Plus facile à prendre en main

    • Plus facilement débuggable

    • Editable depuis le portail web (plus besoin de visual studio donc)

    • Fournit de nombreuses intégrations avec d’autres outils (gulp, ant, maven…)

    Le fonctionnement principal étant d’enchainer des étapes enfichables (plus de structure complexe de workflow comme avant), c’est assez bien décrit par ici https://msdn.microsoft.com/en-us/Library/vs/alm/Build/overview

    Rappels sur les cloud services

    Parmi les nombreux services fournis par Microsoft Azure on trouve les cloud services (PaaS). Pour faire court, et du point de vue d’un développeur, ce sont des services qui peuvent être modélisés dans Visual Studio et qui se constituent deux types de composants :

    • Worker Role : composant servant à faire du traitement lourd, un peu comme un service windows dans son fonctionnement.

    • Web Role : composant permettant de développer des applications web. Cependant à moins de contraintes de déploiement/configuration/flexibilité assez particulières, les azure web sites (ou azure web apps) répondent maintenant à 98% du besoin et sont plus simples à déployer.

    Si vous voulez plus d’informations sur le sujet je vous invite à consulter https://msdn.microsoft.com/en-us/library/azure/jj155995.aspx

    Déployer un cloud service dans votre release pipeline

    Maintenant en tant que développeur consciencieux vous souhaitez déployer ce cloud service de manière automatisé en mettant en place un release pipeline. Pour éviter que cet article soit trop long je ne m’étendrai pas sur les nombreux avantages que cela procure par rapport à un build et déploiement à la main.

    Vous avez présentement plusieurs options pour configurer le déploiement automatique :

    • Depuis le cloud service sur le portail courant (manage.windowsazure.com) demander à azure de faire la configuration à votre place.

    • Le faire à la main.

    Le « problème » avec le premier cas de figure c’est qu’en ce moment Azure va configurer une build « XAML ». C’est amplement suffisant si vous souhaitez uniquement déployer votre cloud service tout seul. Mais admettons que vous ayez d’autres éléments à builder/déployer dans votre solution et/ou que vous souhaitez bénéficier d’intégration avec d’autres outils/services ? Dans ce cas il va être très difficile de concilier build XAML et ces autres éléments (voir impossible dans certains cas de figure).

    Je vais donc vous expliquer comment déployer ce cloud service avec les nouvelles builds de visual studio online. Cet article va être basé sur des éléments puisés dans un article qui explique comment déployer un azure web site avec les nouvelles builds, sur un article qui explique comment déployer des cloud services avec les builds XAML ainsi qu’un peu de recherche de ma part.

    https://msdn.microsoft.com/en-us/Library/vs/alm/Build/azure/index

    https://azure.microsoft.com/en-us/documentation/articles/cloud-services-dotnet-continuous-delivery/

    Je vais présumer que vous avez déjà créé le service de cloud sur azure ainsi qu’un service de stockage. (il est possible d’automatiser cette partie aussi si vous le souhaitez).

    Vous devez aussi être administrateur de votre projet d’équipe et administrateur de la souscription Azure (ou demander à l’admin azure les publishsettings)

    Configuration de la connexion à Azure

    La première étape consiste à dire à visual studio online « hey j’ai une souscription azure sur laquelle tu peux faire des trucs ». Pour cela rendez-vous sur la page de votre projet d’équipe dans visual studio online cliquez sur la roue dentée en haut à droite.

    Puis cliquer sur l’onglet services.

    Add new service connection.

    Ajouter le subscription id, le subscription name, et le subscription certificate que vous pouvez trouver depuis le fichier publish settings. Vous pouvez obtenir ce fichier de plusieurs manières :

    • En cliquant sur le lien bleu en bas à droite

    • Depuis la console azure powershell

    • En allant voir votre admin azure si vous en avez un

    Une vidéo explique comment bien ajouter ces paramètres

    http://www.youtube.com/watch?v=aLprCE3uRHs&t=2m10s

     

    Note : je n’ai pas eu de problèmes avec cette étape avec mon compte personnel (live) pour des projets personnels mais il semblerait qu’il y ait un bug si votre souscription Azure est un Enterprise agreement et que vous vous identifiez sur azure avec un compte d’entreprise. Pour contourner ce problème chez Negotium nous avons configuré un déploiement depuis azure ce qui a eu pour effet de créer service automatiquement.

    Ajout de l’étape de publication

    Rendez-vous dans l’onglet « build ». Normalement vous avez déjà créer une nouvelle définition de biuld de type « Visual Studio ». Par défaut 4 étapes sont présentes :

    • Visual Studio Build : compilation

    • Visual Studio Test : mstest

    • Index Sources and Publish symbols : création des symboles de débug

    • Publish Build artifacts : rapatrie le produit du processus pour l’archiver avec la build

    Nous allons commencer par éditer la première étape pour ajouter « /t:Publish /p:TargetProfile=Cloud » aux arguments MS Build. Bien entendu « cloud » doit correspondre à un des profils de publication de votre service de cloud ( par défaut cloud et local).

    Ceci va indiquer à visual studio de constituer les packages de déploiements après la compilation.

    Une fois cela effectué nous allons ajouter une cinquième étape en dernier de déploiement de cloud service.

    Pour la souscription, sélectionner celle que vous venez d’ajouter, dans le storage account, entrez le nom de l’espace de stockage qui va servir pour le déploiement. Service Name, le nom du cloud service.

    Pour le cspkg et le csconfig vous avez plusieurs options, ou bien vous pouvez spécifier le chemin complet ou relatif vers les fichiers ou alors vous pouvez spécifier un pattern de recherche. Préférant la précision j’ai rentré :

    $(Agent.BuildDirectory)\artifacts\drop\ImageResizer\bin\$(BuildConfiguration)\app.publish\ImageResizer.cspkg

    $(Agent.BuildDirectory)\artifacts\drop\ImageResizer\bin\$(BuildConfiguration)\app.publish\ServiceConfiguration.Cloud.cscfg

    “imageResizer” étant le nom de mon projet de cloud service.

    (si vous n’êtes pas sûrs des noms de dossiers/fichiers, lancez une première build et regardez le contenu du drop)

    Pensez bien à activer l’étape, enregistrer et vous êtes prêts à déployer de manière automatique !

    • 27/7/2015

    Provisionnement des services customs dans SharePoint

    Cet article s’adresse aux développeurs SharePoint full trust qui ont (vont) développé un service (SPService) pour SharePoint.

    En effet dans le cadre où vous bâtissez un produit pour SharePoint comme on le fait chez Negotium (www.oceanik.com www.theattributesolution.com ) vous avez probablement intégré une application de service dans votre solution.

    Si c’est le cas votre application de service a probablement un service SharePoint dédié pour exécuter son code (que ce soit un service porté par IIS ou un service windows).

    Dans ce cas de figure il arrive à un moment (activation de la fonctionnalité, installation…) où vous voudrez provisionner le service (au moins sur une des machines)

    Si vous appelez MonSPServiceInstance.Provision() sur le serveur courant, aucun problème. Par contre dès que vous commencez à vouloir le provisionner l’instance de service sur un serveur distant, vous prenez une exception.

    Ceci est causé par le fait que l’instance de service ne veut pas se lancer sur un serveur distant. Voir plutôt le code décompilé de SharePoint.

    Si on prend le temps d’y penser quelques minutes c’est quelque part censé, pour démarrer un service il faut être administrateur de la machine locale dans un contexte d’exécution privilégié. Et ce n’est pas le cas lorsque le code est exécuté à distance.

    Du coup au lieu d’appeler la méthode de provisionnement directement il est préférable de lancer un timerjob pour effectuer ce provisionnement à votre place. Et pas besoin de le développer, il existe déjà.

    Simplement instancier un SPServiceInstanceJobDefinition en passant en paramètre votre instance de service et un booléen pour le provisionner ou le dé-provisionner.

    Ensuite il suffit de donner une Schedule (one time) et de mettre à jour le timerjob (.Update()).

    Voilà qui devrait vous éviter pas mal de recherche sur le sujet puisque ce n’est actuellement pas très bien documenté sur MSDN.

    Merci à Jordan de mon équipe qui a passé la majeure partie du temps sur le sujet et qui m’a permis de publier cet article.

    • 18/7/2015

    Résolution de dépendance communes en développement de solutions full trust SharePoint

    Bonjour à tous,

    Chez Negotium technologies nous développons plusieurs produits pour SharePoint. (www.oceanik.com www.theattributesolution.com …)

    Un problème assez complexe nous est récemment arrivé. Imaginez que ces deux produits aient une dépendance commune (newtonsoft.json pour ne pas la nommer). Maintenant imaginez que les deux produits soient installés sur une même ferme SharePoint et que pour une raison quelconque vous vouliez désinstaller uniquement un des produits.

    Quand SharePoint va rétracter le wsp, il va naturellement rétracter toutes les dll’s qui étaient dedans. Y compris la dépendance commune dont l’autre produit a toujours besoin. Ceci va mettre en défaut l’autre produit.

    Un administrateur avisé le remarquera rapidement et effectuera un install-spsolution <nomsolution> -GacDeployment –Local –Force sur chacun des serveurs impactés.

    Cependant tous les clients n’ont pas la chance d’avoir des administrateurs correctement formés sur SharePoint. La question suivante se pose vite : comment s’assurer que ma solution sera assez résiliante pour se réparer toute seule dans ce genre de cas de figure ?

    Après plusieurs réflexions, il apparait que SharePoint ne possède pas de système complet de résolution de dépendance. (en fait le problème vient de .NET en général et de Windows).

    Certains développeurs SharePoint chevronnés me diront qu’il existe les ActivationDependency pour les solutions. Oui mais cela ne sert qu’au déploiement, rien n’empêche de rétracter une solution dont d’autres dépendent.

    D’autres diront qu’on peut essayer de combler ce manque avec de la dépendance de fonctionnalités, qui elles vérifient les dépendances lors de la désactivation. Non les fonctionnalités sont là pour le provisionnement d’éléments, de plus rien n’empêche techniquement quelqu’un de rétracter une solution qui comporte des fonctionnalités toujours activées (même si c’est très mal de le faire).

    Du coup la seule solution technique pour résoudre ce problème (et j’ai aussi pris le temps d’échanger avec l’équipe produits SharePoint sur le sujet) c’est de faire un timerjob sans aucune dépendance qui va venir vérifier si nos dépendances sont là et si elles sont absentes redéployer les solutions.

    Vous trouverez un exemple ici.

    Encore une fois, si vous pouvez faire des apps au lieu de solutions full trust, envisagez-le, vous n’aurez pas ce genre de problème ;-)

    PS : je tiens à remercier les gars de mon équipe pour avoir passé du temps à réfléchir sur le sujet à savoir Benoit, Pascal, Yann, Sébastien, Jeff et Jordan.

    • 9/6/2015

    Déplacement des Javascript des Apps (add-ins) SharePoint

    Chez Negotium nous avons récemment rencontré un problème assez étrange.

    Imaginez que vous avez bâti une app pour SharePoint précédement (Provider-Hosted)

    Imaginez maintenant que vous avez mis à jour vers la dernière version du SDK (mise à jour de Avril/Mai)

    Maintenant imaginez que votre tenant a été mis à jour récemment (v16.0.4121.1212 ou supérieure).

    Comme c’était préconisé lorsque Microsoft a livré le modèle d’applications, il y a de fortes chances que vous chargiez les SP.*.js et MicrosoftAjax.js (dont dépendaient SP.*.js) depuis <HostWebUrl>/_layouts/15/fichierjs.js ou bien <AppWebUrl>/_layouts/15/fichiersjs.js

    Cependant cela fait plusieurs années que MicrosoftAjax.js est déprécié (il a été remplacé par les nouveautés d’EcmaScript 5 et par jqueryval)

    http://stackoverflow.com/questions/8782697/are-microsoftajax-js-microsoftmvcajax-js-and-microsoftmvcvalidation-js-obsolete

    Du coup cette dernière mise à jour de tenant supprime le fichier en question.

    Autre chose, la mise à jour du sdk (16.1.3912.1204) apporte la majorité des fichiers javascript SP*.js comme on peut le voir dans le dossier javascript du nuget Microsoft.SharePointOnline.CSOM.

    Il semblerait donc que Microsoft ait changé de stratégie et préconise maintenant d’inclure les fichiers JS au sein de son application.

    Personnellement j’ai créé un dossier SharePoint dans mon dossier Scripts et ajouté le bundle suivant

    bundles.Add(new ScriptBundle("~/bundles/sharepoint").Include(

                   "~/Scripts/sharepoint/*.js"));

     

    Oui mais voilà vous remarquerez qu’il manque le fichier SP.UI.Dialog.js (qui permet de faire des barres de notification) et ce fichier dépend toujours de MicrosoftAjax.js (à cause de Type.RegisterNamespace…)

    Je pense qu’on verra une nouvelle version arriver très probablement dans une mise à jour du SDK, mais en attendant j’ai dû ajouter MicrosoftAjax.js et SP.UI.Dialog.js à mon dossier en les copiant depuis un vieux tenant. (ou une installation on prem, au choix)

    En espérant que ça vous permettra d’anticiper par rapport au problème et de ne pas vous retrouver devant quand vos clients auront reçu la mise à jour de leur tenant.

    • 2/6/2015

    Azure – Bug avec la définition de paramètres depuis Azure WebSites

    Bonjour à tous,

    Pour ceux qui ne le savent pas déjà, vous pouvez définir les paramètres « appSettings » de votre application depuis l’interface azure.

    Le fait d’utiliser cette technique plutôt que celle de transformation xsl a plusieurs avantages notamment :

    • Uniquement l’admin connait les paramètres finaux, ils ne sont pas sur le contrôle de code source

    • Interface conviviale

    • Les paramètres peuvent être liés au slot (case à cocher), cela permet d’avoir des scenario du type « c’est mon paramètre de staging avec celle valeur, et telle autre valeur pour la prod, et ces paramètres ne swap pas quand je swap l’application »

    J’ai récemment trouvé une coquille avec cet outils. Admettons qu’on définisse uniquement les clefs dans le web.config comme ceci car on estime que de toute manière la valeur va être fournie par le service de configuration.

    Evidemment les clefs/valeurs sont bien définies au niveau des paramètres.

    Cependant après déploiement, si on explore à l’aide de kudu (https://votrenomazure.scm.azurewebsites.net) et qu’on édite le web.config résultant on s’apperçoit que les valeurs n’ont pas été définies.

    Pour résoudre ce problème il m’a suffi de rajouter value="" dans le fichier d’origine web.config.

    En espérant que ça vous évite de perdre du temps pour rien.

    • 27/5/2015

    Conférencier au MSDEVMTL – Développement office 365

    Le 8 Juin prochain j’aurai l’occasion d’intervenir au MSDEVMTL pour parler du développement office.

    Au programme :

    • Opportunités

    • Développement Office

    • Développement SharePoint

    • Développement Office 365

    L’objectif étant de démontrer que le développement office/office 365/SharePoint a bien évolué ces dernières années aux développeurs .NET « classiques » et que les méthodologies de développement sont bien plus similaires à ce qu’ils connaissent.

    Quand on parle de développement office (au sens large) c’est un marché de 1.4 milliards de clients potentiels dont on parle, une opportunité à ne pas rater à mon sens.

    Cette session se déroulera chez Microsoft Montréal et est accessible à tout le monde pour 5 dollars (ou gratuit si vous êtes déjà membres du groupe usagers)

    Toutes les informations pour s’inscrire sont par ici. http://www.meetup.com/msdevmtl/events/208688922/

    PS : si vous n’êtes pas déjà inscrit au groupe, faites-le, il y a énormément de contenu intéressant tout au long de l’année.

    • 25/5/2015

    Conférencier au SharePoint Saturday New York City 2015

    Cette année encore j’aurai l’honneur d’être conférencier au SharePoint Saturday de New York City http://www.spsevents.org/city/nyc/nyc2015

    Ma présentation sera à propos de l’importance des métadonnées en entreprise. (en Anglais)

    Nous allons commencer par effectuer un rappel théorique des différents types de métadonnées et quels sont les avantages et inconvénients de chacun. Ensuite nous verrons ce qui est supporté par SharePoint et quels sont les outils existants à disposition. Enfin nous terminerons avec l’importance de la mise en place de ces outils en entreprise et comment ils vont vous aider à effectuer une transition vers le Graph et améliorer la trouvabilité du contenu.

    Rappel : il y a beaucoup d’autres très bonnes sessions qui se dérouleront lors de cet évènement gratuit du 25 Juillet. N’hésitez pas à nous rejoindre.

    • 21/5/2015

    Conférencier au SharePoint Saturday Montréal 2015

    Cette année encore j’aurai l’honneur d’être conférencier au SharePoint Saturday de Montréal http://microsofttouch.fr/default/b/vincent/archive/2015/03/04/sharepoint-saturday-montr-al-2015

    J’ai aussi eu l’occasion d’aider à l’organisation aussi cette année, c’est une expérience intéressante et je tiens à remercier Serge, Nico, Luc, Philippe, Seb, Fabrice et Alain pour leur implication sur le projet, c’est beaucoup plus de travail qu’on imagine !

    Ma présentation sera à propos de l’importance des métadonnées en entreprise.

    Nous allons commencer par effectuer un rappel théorique des différents types de métadonnées et quels sont les avantages et inconvénients de chacun. Ensuite nous verrons ce qui est supporté par SharePoint et quels sont les outils existants à disposition. Enfin nous terminerons avec l’importance de la mise en place de ces outils en entreprise et comment ils vont vous aider à effectuer une transition vers le Graph et améliorer la trouvabilité du contenu.

    Rappel : il y a beaucoup d’autres très bonnes sessions qui se dérouleront lors de cet évènement gratuit du 23 Mai. N’hésitez pas à nous rejoindre.

    A Samedi donc !

    • 19/5/2015

    Conférencier au SPBizConf

    Les 17 et 18 Juin 2015 se déroulera la spbizconf (http://www.spbizconf.com/ )

    Cette conférence orientée principalement business (avec un peu de technique aussi) est gratuite, en ligne et se déroulera en Anglais.

    Allez vite vous inscrire !

    Pour ma part j’aurais la chance d’animer une session sur le Graph. On va faire un peu de théorie pour bien poser les bases, parler du Graph de Microsoft et de la vision puis finir par les cas d’utilisation réels et expliquer ce à quoi ça pourrait servir dans votre entreprise.

    Plus d’informations :

    http://www.spbizconf.com/events/using-office-graph-apis/

    • 12/5/2015

    Ce que j’ai retenu de l’ignite (SharePoint)

     Je n’ai pas eu la chance d’être à Chicago cette semaine pour assister à l’Ignite. Je ne m’étendrai pas sur les détails mais disons que pas mal de récents changements internes chez www.negotium.com  ont fait qu’on n’a pas pu s’organiser comme il fallait à temps.

    Cela ne m’a pas empêché de suivre de près (enfin à distance hein) ce qu’il s’est passé durant cette semaine, et ça a été riche en annonces… (surtout si on prend les annonces faites lors de la build la semaine d’avant)

    Avant de démarrer, je vais restreindre le périmètre, je vais principalement parler des annonces et contenu que j’ai retenu sur Office 365 et SharePoint (pas de skype for business ou exchange ici donc) et ce sera principalement orienté pour les itpros et les développeurs (pas de « ils ont sorti telle app pour ipad » donc).

    Autre chose, vue le volume de nouveautés, la liste ne sera sûrement pas exhaustive, aussi n’hésitez pas à commenter !

    Le Graph

    J’ai pas mal joué avec ces derniers temps, attendez-vous à voir des articles sur le sujet arriver. Changement de nom pour commencer, Office Graph devient Microsoft Graph : la raison est simple il va surfacer beaucoup plus de données (notamment Azure Active Directory, la gamme Dynamics,…)

    Dans ce Graph nous retrouvons plusieurs choses, pour commencer une unification des API Office 365 (mail, fichiers, calendrier…).

    Quels sont les avantages d’un tel changement ? Un seul point d’authentification, un seul point de connexion pour les données professionnelles et personnelles. En effet ces API vont permettre aussi d’intégrer les versions grand public des services (OneDrive, Outlook,…)

    Si vous voulez en savoir plus voici quelques sessions :

    http://channel9.msdn.com/Events/Ignite/2015/BRK3199

    http://channel9.msdn.com/Events/Ignite/2015/BRK3154

    http://channel9.msdn.com/Events/Ignite/2015/BRK3193

    Ou bien vous pouvez assister à la session en ligne de Sébastien Levert le 14 Mai http://mvp.microsoft.com/en-us/virtualconference.aspx  ou la mienne le 17 Juin http://www.spbizconf.com/events/using-office-graph-apis/

    SharePoint 2016

    Nous avions déjà eu quelques annonces avant l’Ignite, celle d’une sortie décalée de SharePoint 2016 : la beta sortira au dernière trimestre 2015 et la version publique au second trimestre 2016.

    https://blogs.office.com/2015/04/16/sharepoint-server-2016-update/

    Mais c’est avec la session de Bill Baer qu’on comprend pourquoi :

    Le profil utilisateur sort de SharePoint

    Longtemps critiqué (notamment pour sa difficulté à démarrer et ses problèmes de synchronisation fréquents) le moteur de synchronisation va sortir de SharePoint pour se retrouver dans un service externe et transverse à la suite de serveurs office (Exchange, SP, Skype for business)

    Nouveau service de gestion de la charge

    On peut dire que Microsoft a beaucoup appris en opérant SharePoint sur de larges installations (office 365), un des bénéfices de cette expérience est l’apparition d’un nouveau système de répartition de la charge dans SharePoint. Ce service prendre en compte des paramètres avancés tels que la santé du serveur, sa charge courante, est-ce qu’il est en train d’installer des patchs…

    Nouvelles limites et meilleures performances Comme on peut s’y attendre pour chaque nouvelle version de SharePoint les limitations, les recommandations et les performances vont encore évoluer.

    Nouveau service d’analytics et de suivit de la consommation

    Toujours grâce à l’expérience que Microsoft a acquise sur le web avec SharePoint, un nouveau service d’analyse du trafic et de l’espace ainsi que des performances va faire son apparition

    Nouvelle application de service de recherche

    L’objectif de Microsoft est de permettre aux organisations qui veulent encore fonctionner avec des systèmes on premices de pouvoir le faire. Encore mieux de pouvoir mettre en place des solutions hybrides totales et de bénéficier de tous les avantages possibles. De plus Microsoft est en train de réaliser de gros investissement dans le graph, et ils ne peuvent pas se passer des données qui seront chez le client. C’est pour cela qu’un nouveau service de recherche hybride complétement intégré va faire son apparition, on ne sait pas encore s’il existera un jour une version du graph pour on prem uniquement. (personnellement j’en doute)

    Liens “durables” (persistent? )

    A la manière de bit.ly SharePoint va maintenant fournir des liens courts et persistent vers le contenu qui se trouve dans SharePoint. Et ce peu importe si le contenu est déplacé ou autre.

    Assistant de configuration d’authentification hybride

    Avez vous déjà configuré l’authentification hybride pour SharePoint ? Avec sa bonne cinquantaine de commandes powershell, ses échanges de certificats, les règles firewall, les entrées DNS à changer… Et surtout toutes les erreurs qui peuvent se glisser en court de route ? Microsoft va nous fournir un assistant qui va permettre de configurer toute la partie SharePoint et nous indiquer ce qu’il reste à faire sur le reste de l’infrastructure.

    Intégration native du contenu de project

    Toujours pour améliorer les performances des deux produits, les données project server vont bénificier d’une intégration native dans SharePoint, est-ce qu’on s’en va vers une fusion des deux d’ici 2020 ?

    Création rapide de collections de sites

    L’idée de cette fonctionnalité est de permettre aux administrateurs de ferme SharePoint de créer des collections de sites « maitresses » au sein de leur infrastructure. Une fois ces copies principales créées, la création d’autres collections de sites à partir de ces dernières sera beaucoup plus rapide puisqu’elle ne passera plus pas les étapes d’activation des fonctionnalités.

    Nouveau service de cache distribué

    Qui n’a pas eu des problèmes de stabilité avec le service de cache distribué de SharePoint 2013 ? Microsoft a effectué des améliorations (sans nous dire lesquelles) de ce côté. Mon avis c’est qu’ils ont remplacé appfabric par Redis, mais ce n’est que mon avis personnel.

    Apparition de nouveaux rôles au sein des fermes SharePoint

    Toujours afin de s’adapter au web, d’avoir de meilleures performances et une répartition de la charge mieux spécialisée, Microsoft introduit de nouveaux rôles au sein de SharePoint 2016 : - WFE - APP - Spécialisé (services nécessitant un serveur dédié, je pense à la recherche, ce genre de choses) - Cache L’installation standalone (celle qui embarquait un SQL Server Express) disparait du paysage. Microsoft donne vraiment à SharePoint une dimension adéquat au web et non plus de « petit server qui traine dans un coin » SharePoint 2016 ne supportera plus non plus les installations dans un groupe de travail (non active directory)

    Mise à jour sans interruption de service

    Autre promesse de cette version 2016: celle de pouvoir passer des mises à jour sans avoir à mettre les services hors ligne. En théorie ceci devrait nous permettre de garder une ferme en production (pendant le temps de la mise à jour) avec des serveurs qui ont un niveau de patch différent. Cela devrait grandement simplifier la vie des admins…

    Conformité des serveurs

    Toujours dans l’optique d’aider à la mise à jour et la maintenance des fermes SharePoint, une nouvelle colonne fait son apparition dans la gestion des serveurs : conformité

    Support chiffrement SMTP

    Tout est dans le titre, ça faisait longtemps qu’on le demandait celui là

    Autres

    D’autres annonces ont été faites, si vous voulez plus de détails, la session incontournable : http://channel9.msdn.com/Events/Ignite/2015/BRK2188

    Conclusion

    L’année à venir va être riche en nouveautés, et vous quelles sont celles qui ont attiré votre attention ?

    • 7/4/2015

    MVP Virtual Conference

    J’ai le plaisir de vous annoncer que les MVP American (US, Canada, Latin…) organisent deux jours de conférences en ligne gratuits les 14 et 15 Mai prochains.

    Pour savoir quelles sont les sessions c’est par ici

    http://mvp.microsoft.com/en-us/virtualconference-agenda.aspx

    Pour vous inscrire http://mvp.microsoft.com/en-us/virtualconference-sessions.aspx

    Personnellement je serai le modérateur de Sébastien Levert sur sa session « introduction to AngularsJS applications in Office 365 »

    C’est une superbe opportunité pour échanger avec des experts du monde entier.

    • 4/4/2015

    Renouvelé MVP SharePoint pour la deuxième année et retour d’expérience

    Version courte

    J’ai le plaisir de vous annoncer que j’ai été renouvelé Microsoft Most Valuable Professional pour la deuxième année. C’est reparti pour un tour !

    Introduction

    Pour ceux qui me suivent depuis quelques temps voici la suite d’une série que je publie depuis plus de 5 ans (depuis que je suis devenu MSP). Je vous l’avais promis l’an dernier, voici un retour d’expérience d’un an en tant que MVP.

    Si vous voulez avant ça lire l’épisode précédent (qui contient les liens de tous les épisodes précédents) pour vous mettre dans le bain, c’est par ici.

    Les avantages

    On va commencer par l’aspect « matériel » de la chose. Quand on devient MVP on a accès à de nombreux avantages et goodies, fournis par Microsoft ou non par exemple :

    • Le compte MSDN qui est bourré d’avantages, crédit sur Azure, tous les logiciels Microsoft…

    • Pluralsight, vidéos de formation en ligne

    • Softwares divers et variés du genre camstasia etc...

    • Le totem MVP, c’est la classe sur le bureau

    Le contact avec les autres, et les équipes produits

    Une des choses les plus intéressante d’être MVP c’est d’avoir accès à une communauté internationale d’autres MVP dans sa technologie (mais pas que) et aux équipes produits (si si les gars qui codent les produits que vous manipulez au quotidien). Je vous laisse imaginer la valeur que cela représente dès lors qu’on se retrouve avec une question plus complexe que d’habitude et qui ne trouve pas sa réponse sur Internet.

    De plus l’équipe produit est à l’écoute de ses MVP’s, en effet pour eux nous sommes une vraie mine d’or de retour d’expérience du terrain et des clients. Cela leur permet de se reconnecter avec la réalité et d’ajuster le tir. Chaque équipe organise des Product Group Interaction (PGI’s) entre tous les mois et toutes les semaines, dépendamment de l’activité du produits au moment en question. Tout en sachant que SharePoint par exemple n’est pas codé par une équipe mais par une équipe pour le social, une pour la collab, une pour les sites internet… Et on est aussi de temps à autres invités par les équipes d’autres produits. En définitive j’ai entre une à deux interactions en moyennes avec eux par semaine.

    Durant ces PGI’s les équipes vous présentent les futures fonctionnalités du produits (ou solutions techniques) et vous demandent votre avis. Ou bien ils vous disent « voici ce qu’on a déjà, qu’est-ce que vous feriez différemment et pourquoi ? » C’est super motivant d’avoir un tel poids sur le produit avec lequel on travaille au quotidien.

    Les communautés

    Un autre point positif en tant que MVP c’est qu’on a plus de poids dans les communautés. Les gens se disent « ce gars-là il est reconnu par Microsoft ». Loin de moi l’idée d’en abuser mais l’aspect bénéfique c’est qu’on vous accorde plus de place. Personnellement par exemple j’ai eu plus d’opportunités que jamais l’an dernier pour animer des sessions lors d’évènements. Vu qu’on dispose d’un réseau beaucoup plus grand, il y a toujours quelqu’un pour vous aider lorsque vous cherchez à organiser quelque chose pour la communauté.

    Le MVP summit

    Chaque année en Novembre Microsoft invite les MVP du monde entier (bientôt 4000 personnes), toutes technologies confondues à la maison mère, Redmond, près de Seattle pour une semaine.

    Je dirai que c’est à la fois une forme de remerciement pour notre investissement tout au long de l’année mais aussi et surtout une façon pour eux d’avoir des retours d’expérience de manière intensive. Les journées s’organisent de la manière suivante :

    • Entre 6 et 8h, petit déj

    • 8h à 18h sessions d’une à deux heures avec les équipes produits

    • 18h à 21h évènement

    • 21h à 4h « réseautage autour d’un verre » (histoire de rester politiquement correct ;-) )

    C’est vraiment cool d’avoir ceux qui codent le produit en avant qui notent des trucs quand tu fais une intervention pertinente, on a l’impression d’avoir de l’impact.

    Quel genre d’évènements ? Généralement une soirée avec les MVP de votre pays, une soirée avec votre division produit, une soirée de bienvenue et une soirée en ville de clôture. Cette année Satya Nadella est même venu nous parler 20 minutes.

    Parenthèse : Microsoft Corp comprend de nombreux Français, anciens MVP’s ou MSFT France, toujours sympa de les revoir.

    Conclusion

    Je me répète mais être MVP c’est faire d’incroyables rencontres, échanger avec des gens très bons techniquement voir même ceux qui font la technologie que vous utilisez au quotidien.

    C’est aussi voyager parce qu’en un an mon rôle de MVP m’aura amené à aller à Toronto, NYC, Ottawa, Nashua (près de Boston), Seattle.

    Cela représente une belle reconnaissance pour l’investissement fait au sein de la communauté.

    L’expérience est tout simplement géniale et j’espère le rester tant que je serais assez en forme pour survivre au MVP summit.

    • 1/4/2015

    Veille technologique et places de cinéma

    Un des aspects que je préfère dans mon métier est aussi celui qui est le plus difficile : l’obligation d’apprendre en continu.

     

    En effet je trouve ça génial d’avoir l’opportunité d’apprendre de nouvelles choses quotidiennement, c’est ce qui garde le métier intéressant même si les années passent. C’est aussi une pression importante : on sait qu’un développeur qui ne se forme pas pendant plusieurs années d’affilée devient très vite « obsolète ».

    C’est d’autant plus difficile que beaucoup d’entre nous ont des impératifs de production sur leurs heures de travail et pas beaucoup de temps en dehors de ça.

    Comment est-ce que je fais pour me tenir à jour ?

    Voici quelques astuces.

    Communautés

    C’est tout bête mais simplement le fait de se rendre régulièrement à des groupes usagers permet de se maintenir à niveau. En plus ce n’est pas cher, après le travail et on peut échanger avec la personne en face.

    Flux RSS

    Rien de nouveau là-dedans j’agrège énormément de flux RSS pour me tenir au courant des actualités

    Microsoft Virtual Academy

    Si vous n’êtes pas encore inscrits allez-y maintenant ! Ce sont des modules de formation faits par Microsoft et animés par des experts de la communauté et/ou des employés Microsoft. C’est gratuit et c’est super pratique !

    En plus en ce moment Microsoft Canada organise un concourt qui vous permettra peut-être de gagner des places de cinéma 3D !! (résidents au Canada uniquement)

    Cliquez ici pour tenter votre chance

    Azure

    En tant que MVP j’ai la chance d’avoir du crédit gratuit pour Azure. Si vous ne connaissez pas déjà il y a énormément à apprendre de ce côté et le marché qui est en train de s’ouvrir est gigantesque. Au-delà de jouer avec les technologies présentes, cela me permet de provisionner rapidement des labs sans avoir à avoir un cluster à la maison (ce que je faisais il y a quelques années).

    Cliquez ici pour avoir 220CAD de crédit d’essai sur Azure gratuitement

    MSDN

    MSDN vous donne accès à de nombreux avantages, dont du crédit sur Azure, les téléchargements de tous les logiciels Microsoft, de la formation, du support… C’est clairement un atout en puissance, on ne se pose plus la question de savoir si on a les outils, on les a.

    Cliquez ici pour en savoir plus

    Voici une vidéo qui détaille un peu les avantages http://channel9.msdn.com/Blogs/Breakpoint/s02e07

    Projets personnels

    Grâce à tous ces avantages je peux régulièrement « jouer » avec ce que j’ai besoin d’apprendre au travers de projets personnels.

    Livres

    Rien de tel qu’un bon bouquin pour se plonger dans une technologie.

     

    Voilà j’espère que ce court article vous aura donné quelques perspectives. Et vous comment est-ce que vous faites ? Est-ce que vous avez quelque chose à me recommander ? N’hésitez pas à commenter !

    • 8/3/2015

    Nombre d’éléments fournis pour la génération des facettes

    Depuis SharePoint 2010 vous avez la possibilité d’améliorer l’expérience de recherche en définissant des facettes de recherches personnalisées. Mieux vous pouvez même en développer de nouvelles si vous le souhaitez. Pour rappel les facettes de recherches se situent sur la gauche de la page de résultats et vous permettent de filtrer ces résultats pour arriver plus vite aux éléments qui vous intéressent. (type de fichier, auteur, date de modification…)

    Voici quelques ressources complémentaires si jamais vous désirez en savoir plus.

    Chez Negotium nous avons un produit d’analyse linguistiqu (Attribute) qui permet d’extraire automatiquement des concepts (idées), des entités (personnes, lieux…) et une classification (basée sur la taxonomie). Une fois ces métadonnées extraites nous nous en servons pour générer des facettes de recherche afin d’améliorer votre expérience de recherche.

    Seulement voilà, une question s’est vite posée : sur un ensemble de documents retournés par la recherche important, combien sont retournés à notre facette pour générer les valeurs de filtres ?

    Pourquoi se soucier de cela ? Dépendamment du jeu de résultats fourni cela peut avoir un impact sur l’exactitude du comptage, sur la pertinence des filtres suggérés, etc…

    En effet il semblerait que l’équipe produit SharePoint ait décidé de fournir moins d’éléments pour des raisons de performance, cependant ce n’est indiqué nulle part dans la documentation officielle (en date de ce post). J’ai donc dans un premier temps tenté de poser la question aux autres MVP SharePoint et à l’équipe produit (un des privilèges MVP). Aucune réponse ne m’a été fournie sur le sujet.

    Nous avons donc dû passer du temps avec mon équipe à effectuer de la rétro-ingénierie sur SharePoint.

    Voici les conclusions que nous avons pu en tirer :

    • Par défaut SharePoint ne considère que 80% des résultats retournés pour déterminer quelles facettes sont éligibles

    • Un maximum de 100 résultats sont passés à la facette pour qu’elle génère ses valeurs de filtre

    • Ces valeurs sont définies en dur et nullement configurable

    • Le jeu de résultats fourni dépend de la pagination (pas toujours, il peut laisser plusieurs pages avant de se mettre à jour)

    En espérant que cela vous aide à concevoir et comprendre le comportement des facettes. De mon côté je vais suggérer à l’équipe produit d’ajouter ces informations à la documentation officielle et si possible de rendre une partie de ces valeurs configurable.

    PS : merci à Jean-François pour son temps passé sur le sujet.


    • 4/3/2015

    SharePoint Saturday Montréal 2015

    Cette année aussi Montréal aura le droit à sa propre édition du SharePoint Saturday.

    Pour rappel les SharePoint Saturday ce sont :

    • Des évènements gratuits

    • Dans le monde entier

    • Dédiés à SharePoint/Office 365

    • Le Samedi

    • Avec énormément de sessions de qualités et de conférenciers expérimentés

    Informations pratiques

    Cette édition se déroulera le 23 Mai 2015 au collège Maisonneuve. Il suffit de s’inscrire à cette adresse http://www.spsevents.org/city/montreal/montreal2015

    L’an dernier le SPS MTL a regroupé 200 personnes. Cette année on vise encore plus de monde avec 4 pistes de sessions (20 sessions au total)

    Envie d’aider ?

    Nous sommes à la recherche de bénévoles pour aider au déroulement de cette journée. (enregistrement, manteaux, assistance aux conférenciers…) Contacter Sps@sharepointquebec.org

    Envie de donner une session ?

    Si vous avez des connaissances à partager sur SharePoint/Office 365 n’hésitez pas à postuler pour donner une session : http://www.spsevents.org/city/Montreal/Montreal2015/_layouts/15/SPSEvents/Speakers/SessionForm.aspx

    Une opportunité pour faire du business

    C’est aussi une très bonne opportunité pour atteindre une audience très spécialisée à un coût modeste. Si votre compagnie fait du service et/ou des produits sur SharePoint n’hésitez pas à en parler à votre département Marketing.

    http://www.spsevents.org/city/Montreal/Montreal2015/_layouts/15/SPSEvents/Sponsors/SponsorForm.aspx

    Réseau sociaux

    Twittez #SPSMTL !

    Allez vite vous inscrire, j’espère vous voir là-bas !

    • 16/2/2015

    Participez à la conception de SharePoint 2016!

    Depuis bientôt une semaine Microsoft a mis à disposition un user voice pour SharePoint 2016.

    http://sharepoint.uservoice.com/forums/282887-customer-feedback-for-sharepoint-server

    Le principe? Assez simple, chacun propose des idées et si vous jugez une idée intéressante votez pour elle.

    L'équipe produit regarde régulièrement les idées des fonctionnalités qui ont le plus de votes et les intègre à la roadmap (ou bien vous explique pourquoi ça n'en fera pas partie et ferme l'idée).

    Vous avez un maximum de jetons de vote, une fois que une des fonctionnalités pour lesquelles vous avez votées fermée, vos jetons vous sont remis et vous pouvez voter à nouveau.

    C'est gratuit, rapide et vous pouvez même utiliser un compte Facebook ou gmail pour vous identifier. Allez vite participer au débat pour faire en sorte que SharePoint 2016 ça soit votre idée aussi ;-)

    • 29/1/2015

    Evènements - Annonce des sessions de l’Ignite

    Si vous ne le saviez pas déjà, Microsoft va organiser une conférence du 4 au 8 Mai à Chicago. Cette conférence va regrouper la SharePoint, Exchange, Lync, Project conférence ainsi que les teched nord Amérique. Nous y retrouverons aussi du contenu en rapport avec azure, windows, visual studio. Cet évènement va être un des évènements majeurs en informatique dans l’année, à ne pas manquer donc.

    Aujourd’hui Microsoft vient de publier un article donnant plus de détails sur la conférence, voici l’url.

    http://channel9.msdn.com/Blogs/MicrosoftIgnite/IntrotoSessionCatalog

    On y retrouve notamment la liste des sessions qui seront données (les speakers seront sélectionnés plus tard).

    http://ignite.microsoft.com/Sessions#fbid=mGcNAILg5r6

    Le 3 février Microsoft organisera aussi un tweetjam hashtag #ignitejam pour répondre à toutes vos questions sur l’évènement. (9H PDT soit 18h Paris, 12h Montréal)

    http://twubs.com/ignitejam

    Lien sur le blog office

    http://blogs.office.com/2015/01/28/introducing-microsoft-ignite-session-catalog/

    • 4/12/2014

    Build automatisé de solutions SharePoint (full trust) 2013 – Où sont mes solutions?

    Suite de la série sur le build automatisé de solutions SharePoint 2013 (full trust) avec tfs 2013 et visual studio 2013.

    http://microsofttouch.fr/default/b/vincent/archive/2014/10/29/build-automatis-233-de-solution-sharepoint-server-fulltrust-avec-visual-studio-online.aspx

    Si vous avez suivit ma série vous avez dû vous rendre compte que les dll étaient compilées mais que les wsp étaient absents.

    C’est parce que par défault msbuild ne package pas vos solutions. C’est dommage hein ?

    Voici un peu de documentation supplémentaire qui indique d’ajouter IsPackaging=true à la définition de build en tant que paramètre.

    http://msdn.microsoft.com/en-us/ff622991.aspx

    Ce qui nous donne au final /p:VisualStudioVersion=12.0;IsPackaging=true

    A bientôt pour la suite des articles.

    • 1/12/2014

    Visual Studio 2013 Update 4 et build automatisé de solutions SharePoint (full trust)

    Pour faire suite à ma série sur le build automatisé de solutions full trust pour SharePoint voici une mise à jour de mon correctif.

    En effet si vous regardez la seconde erreur expliquée ici vous verrez qu’il faut remplacer des lignes pour faire fonctionner le tout.

    Avec l’update 4 on sent que Microsoft prépare l’arrivée complète du 64 bits puisque les nouvelles lignes de remplacement sont désormais.

    <Import Condition="'$(Language)' == 'C#'" Project="$(MSBuildExtensionsPath32)\Microsoft\Windows Workflow Foundation\v3.5\Workflow.Targets" />

    <Import Condition="'$(Language)' == 'VB'" Project="$(MSBuildExtensionsPath32)\Microsoft\Windows Workflow Foundation\v3.5\Workflow.VisualBasic.targets" />

    Vous noterez l’ajout du 32 dans le paramètre (le paramètre précédent n’a plus l’air disponible).

    Bons builds !

    • 28/11/2014

    Mise à jour de Novembre des outils développeurs Office

    Si vous faites du développement SharePoint vous avez sûrement remarqué que les outils ont une nouvelle mise à jour de disponible.

    Avec les précédentes versions, les dll’s Microsoft.SharePoint.Client.Search et Microsoft.SharePoint.Client.Search.Applications n’étaient pas présentes (probablement un oubli).

    Deux solutions s’offraient alors à vous :

    • Vous assurer que tous vos développeurs avaient les binaires de SharePoint installés sur leur machine

    • Embarquer une copie de la dll prise sur une machine SharePoint

    Dans les deux cas ce n’était pas pratique.

    Ces dll sont maintenant présentes en version 15 et 16 à cet endroit C:\Program Files\Common Files\microsoft shared\Web Server Extensions\

    De plus si vous aviez des références à une copie embarquée, en réouvrant le projet, la référence devrait se mettre à jour automatiquement (pas toujours le cas).

    Je n’ai pas trouvé de changelog officiel de la part de Microsoft à ce sujet mais j’ai pensé qu’il était intéressant que ce soit écrit quelque part.

    Bons développements

    http://aka.ms/OfficeDevToolsForVS2013

    • 29/10/2014

    Build automatisé de solution SharePoint server (fulltrust) avec visual studio online

    Introduction

    Depuis plusieurs articles j’évoque le fait que nous (Negotium, la compagnie où je travaille) avons migré vers visual studio online (TFS Online). Ce service offre une majorité des fonctionnalités offertes par la version on premises de Team Foundation Server 2013 et même certaines fonctionnalités exclusives.

    Si vous n’avez qu’une vague idée de ce que peut faire TFS2013/VSO et que vous voulez en apprendre plus je vous recommande très fortement Professional Application Lifecycle Management de chez Wrox.

    Les grands axes de Visual Studio Online

    De manière générale TFS2013/VSO s’articule et intègre fortement les uns avec les autres les axes suivants :

    • Planification : Permet de planifier le travail à effectuer (agile ou cascade,...), suivre l’avancement, voir l’évolution de la capacité de travail...

    • Code : Permet de centraliser le code, suivre l’évolution du code, tout ce que faire un contrôle de code source digne de ce nom de manière générale.

    • Compilation : Permet de générer des versions compilées et versionées du code, suivies, avec un résumé des changements.

    • Tests : Permet de s’assurer de la qualité des versions en exécutant des tests unitaires, des déploiements, des tests fonctionnels automatisés ou non.

    Méthodologie de mise en place

    Bien évidement tous ces éléments sont liés les uns aux autres ce qui permets des scénarios du genre « tel test automatisé utilise telle portion du code et a planté, remontée des rapports et des traces au développeur concerné et ajout des éléments pour suivre la correction du bug ».

    Quand on commence à apprendre comment fonctionne cette industrie logicielle on s’aperçoit qu’il faut mettre les choses en place dans un certain ordre. En Juillet nous avons migré notre code existant (ok pas dans l’ordre mais dû à la migration), tout de suite après ça nous avons reconsolidé nos backlogs et réorganisé les équipes en scrum. Nous étions déjà en scrum par le passé mais suite à de nombreux mouvements d’équipes, la méthodologie s’était un peu relâchée.

    Compilation automatisée – avantages

    L’étape suivante était donc la mise en place de compilation automatisée avec les objectifs principaux suivants :

    • Suivit, versionnement et constitution de notes de versions des livrables (déjà fait mais à la main)

    • Avancer vers la mise en place de tests automatisés

    • Gain de temps

    Les options avec Visual Studio Online

    Vous avez deux possibilités pour effectuer de la compilation automatisée avec Visual Studio Online :

    • Utiliser le service de build préconfiguré en ligne

    • Configurer votre propre machine et la connecter au service

    L’avantage évident du service de build hébergé c’est de ne pas avoir à passer du temps en configuration de l’environnement et de ne payer que pour les minutes de compilation que vous consommez et non pour le reste du temps où la machine serait inutilisée.

    Si l’on se fie à cette page http://www.visualstudio.com/en-us/get-started/hosted-build-controller-vs.aspx#software il est indiqué que SharePoint 2010 et 2013 (ainsi que de nombreux autres composants) sont installés sur les environnements de build fournis par Visual Studio Online. J’ai donc naturellement commencé à configurer mon plan de build pour utiliser ce service.

    Cependant ce qui n’est pas préciser c’est que l’édition de SharePoint installée est Foundation. Mon projet se basant sur certains des dll’s de l’édition Server (publication, traduction…) deux choix s’offraient à moi :

    • Embarquer une copie locale des dll’s manquantes sur mon contrôle de code source

    • Monter ma machine de build

    Il est évident qu’embarquer les dll’s manquantes va nettement alourdir le poids des sources, risque de causer des conflits et nécessitera de les mettre à jour régulièrement. Je me suis donc tourné vers la seconde option.

    Configurer sa machine de build pour SharePoint Server 2013 (full trust)

    Les étapes de configuration de la machine de build ne sont pas si compliquées que ça ce que j’ai eu à faire :

    • Installer SharePoint server 2013 (uniquement les binaires, pas de psconfig à passer)

    • Installer Visual Studio 2013

    • Installer les Office dev tools (depuis web platform installer)

    • Installer le contrôleur et l’agent de build TFS, puis le connecter à mon visual studio online (http://msdn.microsoft.com/en-US/library/ms181712#deploy )

    Première erreur : version passée par MSBuild

    Une fois terminé j’ai eu le droit à un beau message d’erreur de ce genre : cannot find build process template for project type SharePoint…

    Ceci est dû au fait que pour je ne sais quelle raison, le framework MSBuild (c’est la technologie qui gère le processus de build) estime que c’est la version 11 (2012) de visual studio qu’il faut utiliser. Cela ne correspond pas à la version de visual studio et des outils de développement Office installés.

    Pour fixer ce problème il suffit d’éditer la définition de build, dans l’onglet process, puis avancé, puis spécifier /p:VisualStudioVersion=12.0 pour MS Build Arguments.

    Seconde erreur : Version du tooling SharePoint

    Une fois que c’est fait, une autre erreur, principalement liée au même problème : avec l’arrivée de la nouvelle version de workflows, les process templates de workflows traditionnels ont été déplacés mais les références pas mises à jour. Je suis d’ailleurs surpris que 2 ans après la sortie des première versions des outils cela n’ait toujours pas été corrigé.

    Commencez par faire un backup du fichier C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\SharePointTools\Microsoft.VisualStudio.SharePoint.Workflow.targets puis éditez le.

    Au lignes 37 et 38 remplacez

    <Import Condition="'$(Language)' == 'C#'" Project="$(MSBuildFrameworkToolsPath)\Workflow.Targets" />

    <Import Condition="'$(Language)' == 'VB'" Project="$(MSBuildFrameworkToolsPath)\Workflow.VisualBasic.targets" />

    Par

    <Import Condition="'$(Language)' == 'C#'" Project="$(MSBuildFrameworkToolsPath)\Microsoft\Windows Workflow Foundation\v3.5\Workflow.Targets" />

    <Import Condition="'$(Language)' == 'VB'" Project="$(MSBuildFrameworkToolsPath)\Microsoft\Windows Workflow Foundation\v3.5\Workflow.VisualBasic.targets" />

     

    Mot de la fin

    Et voilà! Maintenant les builds automatisés de projets full trust pour SharePoint Server 2013 sont en place. A noter que c’est valable pour Team Foundation Server 2013 comme pour Visual Studio Online. Aussi ma machine de build est hébergée dans Azure mais qu’elle pourrait l’être on prem dans les deux cas de figure.

    La prochaine fois je vous parlerai probablement d’incrémentation des numéros de version des assemblies et/ou de scripts pré/post build puisque ce sont les deux éléments qui me manquent avant de pouvoir commencer à mettre en place du test automatisé.

    • 4/10/2014

    Conversion d’un certificat protégé par mot de passe (pfx) en certificat non protégé (snk)

    Au travail je suis en train de mettre en place du build automatisé pour des projets SharePoint (full trust) sur visual studio online. (Attendez-vous à voir plusieurs articles à ce sujet au fur et à mesure que je rencontre et résous des erreurs)

    Qui dit développement SharePoint dit assemblies signés par un certificat. Lorsque l’on initialise le projet on a deux options :

    • Certificat est protégé par mot de passe : (extension pfx) c’était au début du tooling SharePoint, ou bien si vous avez monté la structure de solution (visual studio) vous-même avec plusieurs assemblies.

    • Certificat non protégé : (extension snk) option par défaut du tooling depuis quelques années

     

    Dans mon cas le certificat était protégé par mot de passe, cependant le problème c’est qu’il faut taper ce mot de passe lorsque l’on veut compiler pour la première fois les sources sur une nouvelle machine. Ce n’est vraiment pas pratique lorsque l’on fait du build automatisé (pas d’humain pour taper un mot de passe lors de la compilation). Ce qui nous donne des messages d’erreur de ce genre.

    Cannot import the following key file: cert.pfx. The key file may be password protected. To correct this, try to import the certificate again or manually install the certificate to the Strong Name CSP with the following key container name: VS_KEY_XXXXXXXXXXXXXXX

    C’est d’autant moins pratique lorsque l’on essaie de configurer ça avec les hosted build machines. Ces machines sont des machines pré configurées par Microsoft pour éviter d’avoir à monter sa propre machine de build. (on ne peut donc pas les administrer).

    Le framework msbuild ne fournit pas de manière simple de rentrer le mot de passe et l’outil en ligne de commande sn.exe (sert à importer les certificats dans le store de la machine) prompte lui aussi pour le mot de passe. En fait c’est logique : un mot de passe doit être mémorisé mais écrit nulle part. (principe de sécurité de base).

    Il me restait donc à supprimer le mot de passe du certificat, seulement l’interface visual studio ne permet pas d’effectuer cela. Il n’y a qu’à générer un nouveau certificat dans ce cas ? Surtout pas ! Cela va changer la public key du nom d’assembly et potentiellement poser des problèmes pour tous les éléments enregistrés en base de données après la mise à jour ! (je pense notamment aux event receivers).

    La solution ? Convertir le certificat grâce à un bout de code (exécuté dans une app console) trouvé sur pastebin http://pastebin.com/dpMxqsK4

    X509Certificate2 cert = new X509Certificate2(@"KEY.pfx", "pfxPassword", X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);

    RSACryptoServiceProvider provider = (RSACryptoServiceProvider) cert.PrivateKey;

    byte[] array = provider.ExportCspBlob(!provider.PublicOnly);

     

    using (FileStream fs = new FileStream("FileName.snk", FileMode.Create,     FileAccess.Write))

    {

    fs.Write(array, 0, array.Length);

    }

    En espérant que cela vous fasse gagner du temps dans la mise en place de vos builds automatisés sur visual studio online.

     

    PS : idéalement votre entreprise devrait acheter un certificat intermédiaire public et monter une PKI. A partir de cette PKI vous devriez générer vos certificats protégés par mot de passe. Ces certificats devraient être importés une fois (via GPO si possible) sur les machines des développeurs et les machines de build. Cela permettrait de :

    • garder la clef privée protégée même en cas de vol des sources

    • ne pas avoir à donner le mot de passe aux développeurs ou à le mettre dans un script

    • permettre à vos clients de s’assurer que l’assembly qu’ils reçoivent a bien été publié par vous et non par un attaquant

    • mettre en place du build automatisé (sur vos machines uniquement pas celles hébergées par VS online)

    (voir authenticode http://msdn.microsoft.com/fr-fr/library/ms172240.aspx )