Le Cloud de Vincent - Blogueurs - MicrosoftTouch

Le Cloud de Vincent

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

    Nouvelles tâches de build/release disponibles pour les projets dotnetcore et vsts

    Il y a quelques mois je vous avais écrit une suite d’articles sur la mise en place d’un release pipeline pour les projets dotnetcore/dnx vers Azure web apps.

    Cette suite d’articles demandait de mettre en place un certain nombre de scripts et de les exécuter à l’aide de tâches powershell.

    Vous n’avez désormais plus besoin de faire ça (sauf pour la partie tests) car deux extensions sont désormais disponibles sur le marketplace :

    Personnellement j’ai pu remplacer ce que je faisais à l’aide des tâches fournies par VSTS DNX Tasks.

    Les anciens articles pour référence

    http://microsofttouch.fr/default/b/vincent/archive/2016/02/03/erreur-lors-de-la-publication-de-sites-web-asp-net-5-core-vers-azure (remplacé par les nouvelles tâches)

    http://microsofttouch.fr/default/b/vincent/archive/2016/02/19/build-dnx-avec-agent-build-vnext-install-tfs-vsts (toujours valable si vous avez votre propre agent)

    http://microsofttouch.fr/default/b/vincent/archive/2016/03/01/tests-unitaires-xunit-avec-visual-studio-team-services-de-projets-dnx (toujours valable si vous faites des tests unitaires)

    http://microsofttouch.fr/default/b/vincent/archive/2016/03/03/mise-jour-maitris-e-de-schema-sql-avec-entity-framework-code-first-dans-un-processus-de-livraison-continue (toujours valable si vous faites du déploiement de base de données)

    Bonne automatisation !

    • 15/6/2016

    Déterminer si la librairie SharePoint est utilisée avec la nouvelle expérience

    Microsoft vient de commencer le déploiement de la nouvelle expérience des librairies de document SharePoint.

    Nombreux d’entre nous avons bâti des personnalisations graphiques et/ou des composants logiques qui interagissent avec l’aspect des librairies de documents. (je pense notamment aux ScriptLink )

    Aussi vous aurez peut-être besoin de déterminer dans quelle expérience vous vous trouvez afin d’exécuter du code adapté.

    Après quelques recherches voici un exemple de solution.

    https://gist.github.com/baywet/8fbb587023f306ee40bad00b3a23961a

    Bons développements

    • 11/4/2016

    Build de projets WSP/FTC SharePoint 2016

    Avec la sortie de SharePoint 2016 et les MinRole, vous allez être nombreux à vouloir tester la migration de vos applicatifs encore en full trust code.

    Pour cela, en plus d’avoir une machine de dev 2016 installée (avec vs 2015 à jour et le sdk office à jour), il faudra installer le preview 2 du sdk office

    https://www.microsoft.com/en-us/download/details.aspx?id=51683&WT.mc_id=rss_alldownloads_all&utm_source=twitterfeed&utm_medium=twitter

     

    Ensuite il ne vous rester plus qu’à mettre à jour les références et versions de SharePoint ciblées.

    Merci à Etienne Bailly d’avoir partagé le lien alors que je cherchais la solution à mon problème de visual studio qui crashait (sans la mise à jour mais après avoir mis à jour mes solutions)

    • 6/4/2016

    Renouvelé MVP pour l’année 2016

    Bonjour à tous,

    Pour ceux qui ne me suivent pas sur les réseaux sociaux et qui ne le savent pas déjà, j’ai l’immense privilège de vous annoncer que j’ai été renouvelé comme MVP pour l’année 2016.

    Suite aux changements dans le système des awards et expertises, je suis désormais MVP Office Servers and Services.

    C’est reparti pour un an de code, de partage, de conférences et de rencontres !!

    A très bientôt

    • 4/4/2016

    Conférencier au SharePoint Saturday Calgary 2016

    J'ai le privilège d’être conférencier au SPS de Calgary (première fois!!). J’animerai cette fois une session autour des métadonnées en entreprise « Make Graph data useful for your company  » (en anglais donc).

    Nous verrons comment nous pouvons tirer parti de la nouvelle API Microsoft Graph et des outils de Machine Learning pour bâtir des applications métier « intelligentes ».

    Si vous êtes dans le coin le Samedi 23 Avril 2016 n’hésitez pas à vous inscrire et à participer. Pour rappel les SPS ce sont des évènements gratuits organisés par la communauté avec des sessions de qualité. Une très bonne occasion de réseauter, d’apprendre plein de choses et de passer une bonne journée.

    En espérant vous voir là-bas.

    http://www.spsevents.org/city/calgary/calgary2016

    • 1/4/2016

    Conférencier au SharePoint Saturday Houston 2016

    J'ai le privilège d’être conférencier au SPS de Houston (première fois!!). J’animerai cette fois une session autour des métadonnées en entreprise « Setting up your release pipeline for SharePoint and Office 365 developements » (en anglais donc).

    Nous verrons au cours de cette session les outils de build et de release de visual studio online (Team foundation services), comment mettre en place des plans de build, de release etc etc. Tout l’outillage pour automatiser un maximum d’actions et rendre votre équipe de développement beaucoup plus productive.

    Si vous êtes dans le coin le Samedi 9 Avril 2016 n’hésitez pas à vous inscrire et à participer. Pour rappel les SPS ce sont des évènements gratuits organisés par la communauté avec des sessions de qualité. Une très bonne occasion de réseauter, d’apprendre plein de choses et de passer une bonne journée.

    En espérant vous voir là-bas.

    http://www.spsevents.org/city/houston/houston2016

    • 30/3/2016

    Conférencier au SharePoint Saturday Montréal 2016

    Cette année encore j’aurai l’honneur d’être conférencier au SharePoint Saturday de Montréal

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

    Je présenterai une session sur la mise en place de votre cycle de release pour vos développements SharePoint/Office 365

    Nous verrons au cours de cette session les outils de build et de release de visual studio online (Team foundation services), comment mettre en place des plans de build, de release etc etc. Tout l’outillage pour automatiser un maximum d’actions et rendre votre équipe de développement beaucoup plus productive.

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

    http://www.spsevents.org/city/montreal/montreal2016

    A Samedi donc !

    • 3/3/2016

    Mise à jour maitrisée de schema SQL avec Entity Framework Code First dans un processus de livraison continue

    Introduction

    Entity Framework est une technologie établie dans le domaine des ORM et dans le monde du .NET.

    Note : Object Relational Mapping, qui fait le lien entre la persistance des données et le code plus « métier »

    Il y a plusieurs méthodes pour établir le modèle de données l’une d’entre une étant le « code first » c’est-à-dire que c’est notre code qui va piloter l’évolution du schéma SQL. (ce qui simplifie énormément de choses et qui vous permet de vous concentrer sur le code métier et non les implémentation techniques)

    Lorsque l’on choisit cette approche il existe deux possibilités pour mettre à jour le schéma et lancer les migrations SQL :

    - La console nuget ou DNX, c’est-à-dire qu’un développeur devra s’en charger lors du déploiement sur un environnement

    - L’auto migration : c’est-à-dire que c’est Entity Framework qui va s’en charger automatiquement lorsqu’il détecte qu’il y a une mise à jour au démarrage de l’application. Si cette approche est séduisante pour les petits projets, elle apporte un certain nombre d’inconvénients : dégradation des performances au démarrage de l’application, moins de maitrise de « quand » va se faire la mise à jour

    Par que nous sommes des fainéants , parce que nous voulons éviter les erreurs, les oublis, faire gagner du temps à tout le monde, nous allons automatiser ce processus de façon maitrisée.

    Les exemples que vous verrez sont faits sur une base de projet DNX, mais pour des projets .NET « classiques » c’est très similaire, simplement les commandes qui changent un peu.

    Note : cet article prend pour acquis que vous avez suivi quelque chose de similaire à ça pour votre projet contenant le dbcontext

    http://docs.efproject.net/en/latest/platforms/aspnetcore/new-db.html

    Processus de build ou de release ?

    Dans notre cas nous utilisons l’industrie logicielle de Visual Studio Team Services pour nos développements logiciels. Une partie des services fournis sont ceux de build et de release management.

    Dans notre cas nous avons une séparation évidente entre le processus de build et de release.

    Le processus de build a la responsabilité de :

    - Transformer le code source en livrable (compilation, transpilatation,…)

    - Transmettre les artifacts additionnels de release (scripts)

    - Exécuter les tests unitaires

    Le processus de release a la responsabilité de :

    - Déployer les livrables sur les environnements cibles

    - Migrer les données

    - Configurer les environnements

    - …

    Du coup il est logique pour nous d’effectuer la mise à jour du schéma dans le processus de release. Selon la manière dont est « monté » votre cycle de livraison continue ce sera peut-être un peu différent et il faudra adapter les exemples

    Configuration des définitions dans VTSTS

    Script d’exécution de la mise à jour

    La première chose qu’on va vouloir ajouter à notre « code » est un script qui va demander à dnx d’exécuter la mise à jour de la base de données ainsi qu’un élément de configuration qui va permettre de configurer le contexte de base de données.

    Heureusement pour vous c’est du travail que j’ai déjà fait voici donc les deux gist.

    https://gist.github.com/baywet/9931ba2f45043dba9bdb

    https://gist.github.com/baywet/ad41ccb8ad0bb12184ae

    Récupération des sources et des scripts

    Ce qu’il faut bien comprendre c’est que DNX se base sur le code source qu’il va compiler à la volée pour effectuer la migration. Il n’y a pas pour le moment et à ma connaissance de possibilité d’effectuer cela sur une librairie DNX (un nuget en clair) déjà compilée.

    Ce que ça veut dire c’est que nous allons avoir besoin des sources afin de pour exécuter la migration entity framework. Sources que vous avez déjà sous la main si vous effectuez ça depuis le processus de build. Dans notre cas on effectue cela dans le processus de déploiement cependant.

    Ce que ça signifie c’est que si, comme nous, vous effectuez votre mise à jour de base de données depuis le processus de release, il va falloir ramener les sources, sinon vous pouvez passer cette étape.

    Rendez vous donc dans votre processus de build, et dans l’étape « copy files » rajouter une ligne src\** (toutes nos sources se trouvent dans src\, c’est la pratique avec DNX) et une ligne *.ps1 pour ramener le script récemment ajouté.

    Mise à jour du schéma pendant le déploiement

    Enfin la dernière étape est de demander à votre processus de release d’effectuer la mise à jour de la base de données. Pour cela simplement rajouter une étape powershell avec en paramètre le chemin du script et en argument la connection string de la base de données à mettre à jour.

    Conclusion

    Comme vous pouvez le voir il est assez simple d’automatiser et de maitriser la mise à jour des schémas de base de données avec Entity Framework code first dans un release pipeline. Et ce avec DNX ou non.

    J’espère que cet article vous fera gagner du temps à tous et vous évitera des problèmes de déploiement.

    • 1/3/2016

    Tests unitaires xUnit avec Visual Studio Team Services de projets DNX

    Tests unitaires xUnit avec Visual Studio Team Services de projets DNX

    Introduction

    Avec DNX qui va bientôt passer en version finale vous allez être de plus en plus nombreux à vouloir effectuer des tests unitaires afin de vous assurer de la qualité des développements effectués.

    Idéalement ces tests seront exécutés dans un processus d’intégration continue afin de s’assurer qu’il n’y a pas eu de régressions techniques, fonctionnelles et/ou de performance.

    Dans le monde du .NET il existe historiquement plusieurs outils pour mettre en place cela :

    -          MSTest/VSTest

    -          Nunit

    -          xUnit

    -         

    (une liste non exhaustive https://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C.23 )

    Dans notre cas nous avions fait le choix d’utiliser xUnit car en plus d’être largement utilisé et supporté par la communauté, c’est l’un des rares à supporter DNX.

    Autre chose, vous avez dû le remarquer au travers de mes billets précédents, nous utilisons massivement l’industrie logicielle fournie par Visual Studio Team Services (VSO) avec notamment le build2015 et le release management.

    Pour rappel DNX = « nouveau framework » ce qui veut dire que l’outillage doit être adapté et recompilé pour le supporter correctement.

    Tests locaux et projet de tests

    Après avoir suivi ce tutoriel, il nous a été possible d’écrire des tests dans un projet de librairie dnx (qui donne un nuget à la fin) et d’exécuter ces tests en local via la console (dnx test) ou bien via le test explorer.

    http://asp.net-hacker.rocks/2015/12/15/unit-testing-dnx-libraries-with-xunit.html

    http://xunit.github.io/docs/getting-started-dnx.html

    Note vous pouvez aussi utiliser yeoman pour générer le projet de tests en tapant yo aspnet et en sélectionnant l’entrée correspondant aux tests.

    Maintenant la question est la suivante : comment faire pour que VSO/VSTS exécute et rapatrie le résultat de ces tests dans les informations de build/test ?

    Exécution des tests dans l’agent

    La première étape c’est de demander à l’agent VSO d’exécuter les tests, pour cela rien de plus facile, il suffit d’exécuter un script powerhell.

    dnx -p ".\src\BizDesk365ContentService.Tests\" test -xml TestResults.xml

    Le premier paramètre est le chemin relatif de mon projet de tests. Le second demande au runner dnx de xunit de produire les résultats dans un fichier xml dont nous auront besoin plus tard.

    Dans mon exemple ici j’ai rajouté des lignes qui me permettent de m’assurer que dnvm, mon runtime et dnx sont bien là, mais selon votre configuration ce n’est pas forcément obligatoire.

    https://gist.github.com/baywet/4daabc875cab427ef1bc

    Récupération des résultats de tests

    Maintenant il faut indiquer à VSTS de récupérer les résultats de tests et de les interpréter, pour cela ajouter une étape publish test results

    Dans le type sélectionner xunit et indiquer l’emplacement de votre fichier de résultat.

    Conclusion

    Les résultats de tests remontent avec notre build dans VSTS et on peut voir qu’avec un peu de configuration et de scripts il est facile d’automatiser les tests unitaires pour des projets DNX.

    Bons tests !


    • 19/2/2016

    Build DNX avec agent build vnext installé (TFS , VSTS)

    Avec DNX/DNU qui va bientôt arriver en RTM vous allez êtres nombreux à vouloir builder et déployer de l’ASP.NET Core 1 (appelé asp.net mvc 5 il n’y a encore pas si longtemps que ça)

    Si la procédure est assez bien décrite dans le cadre où vous utilisez les agents fournis par visual studio team services (ceux hébergés dans azure) c’est un peu plus complexe dans les faits quand on veut le faire en local.

    https://msdn.microsoft.com/en-us/Library/vs/alm/Build/azure/deploy-aspnet5?f=255&MSPPError=-2147217396

    Sur votre agent vous avez installé visual studio à jour et c’est tout non ?

    Premièrement vous aurez toujours besoin du script prebuild pour aller chercher le runtime adéquat. Mais une fois cela en place dans votre processus de build vous rencontrerez des erreurs du genre :

    dnx.win32.dll could not be loaded. Last error: 126

    Cela vient du fait que par défaut l’agent VSO (build 2015, pas le vieil agent XAML) tourne en tant que local system et que donc il essaie d’installer tout ce qui est relative à dnx ici

    C:\Windows\system32\config\systemprofile\.dnx

    Simplement ce dossier étant dans system32 il est protégé et ça pose problème.

    La solution la plus viable à mon sens est de faire tourner le service de build avec un compte de service (non administrateur !). Pour effectuer cela il faut ré-exécuter le script de configure agent.

    Bon builds !

    • 10/2/2016

    Conférencier au SharePoint Saturday Vancouver 2016

    J'ai le privilège d’être conférencier au SPS de Vancouver (première fois!!). J’animerai cette fois une session autour des métadonnées en entreprise « The Importance of metadata in your company » (en anglais donc).

     

    Si vous êtes dans le coin le Samedi 12 Mars 2016 n’hésitez pas à vous inscrire et à participer. Pour rappel les SPS ce sont des évènements gratuits organisés par la communauté avec des sessions de qualité. Une très bonne occasion de réseauter, d’apprendre plein de choses et de passer une bonne journée.

     

    En espérant vous voir là-bas.

    http://www.spsevents.org/city/vancouver/2016

    • 3/2/2016

    Erreur lors de la publication de sites web asp.net 5 (core) vers Azure

    Si vous faites du développement asp.net core et que vous essayez de publier votre site web vers un azure website il se peut que vous ayez rencontré l’erreur suivante en suivant cette documentation

    https://msdn.microsoft.com/en-us/Library/vs/alm/Build/azure/deploy-aspnet5?f=255&MSPPError=-2147217396

    [error]Error: The specified credentials cannot be used with the authentication scheme 'Basic'.

     [error]Error: Default credentials cannot be supplied for the Basic authentication scheme.

     [error]Parameter name: authType

     

    Cela vient du fait que le script fournit dans la documentation ne supporte pas les sites qui ont des slots de déploiement.

    En cherchant la solution je suis tombé sur le thread suivant qui n’était pas résolu http://stackoverflow.com/questions/34417649/vso-vsts-azure-powershell-the-specified-credentials-cannot-be-used-with-the-a/35494779#35494779

    J’ai donc continué d’investigué et modifié le script pour qu’il prenne en charge les slots de déploiement azure

    https://gist.github.com/baywet/f7ed425c48ccde4399c7

    Bons déploiements !

    • 11/1/2016

    Migration Git – nettoyage des références TFS

    J’ai récemment dû migrer plusieurs contrôles de code source depuis TFS vers Git (Git sur vsonline). Pour ce faire j’ai utilisé Git-Tfs https://github.com/git-tfs/git-tfs qui fait très bien le travail et est vraiment bien documenté https://github.com/git-tfs/git-tfs/blob/master/doc/usecases/migrate_tfs_to_git.md

     

    A une étape de la documentation on vous conseille de supprimer les fichiers *.vspscc, *.vssscc et de nettoyer les fichiers *.sln et *.*proj des références vers TFS.

    Ceci permet d’éviter que Visual Studio tente de se reconnecter à TFS à chaque fois que l’on ouvre projet/solution.

    J’ai été surpris de ne pas trouver de script tout fait sur le web pour le faire, j’ai donc pris le temps de développer ce script. Me disant que ça pouvait en intéresser certains d’entre vous le voici : https://gist.github.com/baywet/bcbed5e52c59f4201e7c

     

    Il suffit de l’appeler en passant en paramètre le répertoire git (penser à le faire une fois par branche au besoin)

    Bonne migrations !

    PS : j’ai aussi ouvert une discussion sur le projet Git-tfs pour intégrer le script à leur repo, n’hésitez pas à venir participer https://github.com/git-tfs/git-tfs/issues/904

    • 18/11/2015

    Incrémenter automatiquement le numéro de version de fonctionnalité SharePoint avec le build 2015

    Depuis quelques mois Microsoft a livré un nouveau système de build automatisé avec visual studio online / tfs 2015.

    Ce système est bien plus ouvert que les anciennes build XAML, à base de tâches et plus facile à personnaliser.

    Une des tâches existantes permet d’exécuter un script powershell.

    Supposons que pour une raison quelconque vous souhaitiez incrémenter automatiquement le numéro de version de vos fonctionnalités SharePoint (au sein de votre solution) au moment du build.

    Si vous examinez le fichier « .feature » vous verrez que l’attribut ressemble à un objet sérialisé (au lieu d’être simplement la version au format numérique), c’est donc autrement plus compliqué de que simplement après un fichier XML.

    Si la solution pour les builds XAML est assez bien documentée, il n’y en a encore aucune pour le nouveau système.

    http://blogs.msdn.com/b/sharepointdev/archive/2011/04/28/incrementing-the-feature-version-through-msbuild.aspx

     

    J’ai donc pris le temps d’investiguer la solution et de vous mettre à disposition un script powershell qui effectue une opération similaire et que vous pourrez faire évoluer à souhait. Bons builds !

    https://gist.github.com/baywet/de2fba740adb70332ca8

     

    • 10/11/2015

    Conférencier au SharePoint Saturday Ottawa 2015

    Cette année encore j’ai l’occasion d’être conférencier au SPS d’Ottawa. J’animerai cette fois une session autour de l’ALM des développements SharePoint/Office 365 avec Azure « Setting up your release pipeline for SharePoint in Azure » (en anglais donc).

    Si vous êtes dans le coin le Samedi 21 Novembre 2015 n’hésitez pas à vous inscrire et à participer. Pour rappel les SPS ce sont des évènements gratuits organisés par la communauté avec des sessions de qualité. Une très bonne occasion de réseauter, d’apprendre plein de choses et de passer une bonne journée.

     

    En espérant vous voir là-bas.

     

    http://www.spsevents.org/city/Ottawa/Ottawa2015/

    • 3/11/2015

    Désactiver les fonctionnalités de SEO de SharePoint

    J’ai récemment eu le cas où un client voulait désactiver les fonctionnalités de SEO (search engine optimization) de SharePoint 2013, celles-ci incluant :

    • La génération de sitemap

    • La génération d’url canoniques

    • Des métadonnées sur les pages

    • La génération de titres explicites

    • Etc..

    La raison principale étant que ce client voulait réaliser du développement pour changer le comportement de ces fonctionnalités (besoins très spécifiques).

    Le problème c’est que cette fonctionnalité est cachée et qu’elle est activée par défaut avec les sites de type publication.

    Le moyen le plus simple pour la désactiver reste de le faire en utilisant powershell, voici donc la commande, au cas où cela puisse servir à quelqu’un d’autre

    Disable-spfeature [Guid]"17415B1D-5339-42F9-A10B-3FEF756B84D1" –Url http://urldelasitecollection

    • 23/10/2015

    Conférencier au SharePoint Saturday New Hampshire 2015

    Cette année encore j’ai l’occasion d’être conférencier au SPS de Nashua (New Hampshire). J’animerai cette fois une session autour du de multilinguisme dans SharePoint « Translating SharePoint from beginning to ending » (en anglais donc).

    Nous y parlerons des options pour gérer le multilinguisme dans SharePoint et de comment effectuer une implémentation réussie.

    Si vous êtes dans le coin le Samedi 24 Octobre 2015 n’hésitez pas à vous inscrire et à participer. Pour rappel les SPS ce sont des évènements gratuits organisés par la communauté avec des sessions de qualité. Une très bonne occasion de réseauter, d’apprendre plein de choses et de passer une bonne journée.

    En espérant vous voir là-bas.

     

    http://www.spsevents.org/city/nh/spsnh2015

    • 7/10/2015

    Ajout Programmatique de permissions à « tout le monde » dans SharePoint Online

    Il se peut que vous vouliez ajouter des permissions au « groupe » « tout le monde » dans SharePoint.

    En effet cela permet de donner des droits à tous les usagers qui ont déjà accès au site (parce qu’ils sont dans d’autres groupes où ont déjà des permissions). Ce « groupe » est différent de « NT AUTHORITY\authenticated users » qui représente tous les usagers qui sont capables de s’authentifier (plus large donc)

    Seulement voici la subtilité, ce « groupe » n’en est pas un, donc inutile d’itérer sur tous les groupes de la collection de sites en espérant le trouver. C’est en fait un utilisateur spécial. Pour le trouver il suffit d’utiliser son login à savoir : "c:0(.s|true"

     

    Voici un exemple de code en CSOM qui vous montre comment le faire :

    var user = item.ParentList.ParentWeb.EnsureUser("c:0(.s|true");

    var roleBindings = new RoleDefinitionBindingCollection(context);

    roleBindings.Add(item.ParentList.ParentWeb.RoleDefinitions.GetByType(roleType));

    item.RoleAssignments.Add(principal, roleBindings);

    context.ExecuteQuery();

    • 5/10/2015

    Le yOS tour passe par Montréal !

    Je suis heureux de vous annoncer que le 29 Octobre 2015 le yOS tour passera par Montréal.

    Ce nouveau format d’évènement qui traite de Yammer, Office 365 et SharePoint (yOS) se tiendra dans les locaux de Microsoft Montréal (2000 av mcgill college).

    Cet évènement va se concentrer sur les retour d’expérience client et du terrain, pas de marketing, pas de speech de vente.

    De plus j’ai eu le privilège d’aider à l’organisation de l’évènement qui comptera une moitié de ses conférenciers venant de l'Europe

    Pour les informations (dates, sessions, inscription…) ça se passe par ici !

    A très bientôt au yos de Montréal !

    http://www.yos-tour.com/3-yos-day-a-montreal-en-octobre-2015/

     

    • 11/9/2015

    Conférencier au SharePoint Saturday de Toronto 2015

    Cette année encore j’ai l’occasion d’être conférencier au SPS de Toronto. J’animerai cette fois une session autour du graph « Making Graph data useful to your company » (en anglais donc).

    Nous y parlerons de Graph, de delve, yammer, machine learning et plein d’autres concepts intéressants avec une thématique orientées vers le développement.

    Si vous êtes dans le coin le Samedi 19 Septembre 2015 n’hésitez pas à vous inscrire et à participer. Pour rappel les SPS ce sont des évènements gratuits organisés par la communauté avec des sessions de qualité. Une très bonne occasion de réseauter, d’apprendre plein de choses et de passer une bonne journée.

    En plus ça se passe dans les locaux de Microsoft Toronto (Mississauga).

    En espérant vous voir là-bas.

    http://www.spsevents.org/city/toronto/toronto2015

     

    • 4/9/2015

    Erreur: unable to find version '3.1.2' of package 'appforsharepointonlinewebtoolkit'

    Avec les outils de développement office pour visual studio 2015 (et probablement aussi avec la mise à jour Aout 2015 pour VS2013, mais je n’ai pas testé) il est possible que vous obteniez l’erreur suivante :

    unable to find version '3.1.2' of package 'appforsharepointonlinewebtoolkit'

     

    Et ce lorsque vous effectuez un « update-package » dans la console nuget ou que vous avez une étape de restauration des packages dans votre processus de build. (impossible de vous en passer si vous n’incluez pas le dossier des packages dans votre contrôle de code source).

    Cette erreur est due au fait que le modèle d’applications SharePoint (provider-hosted MVC) embarque une version du nuget plus récente que ce qui est disponible sur nuget.org.

    La solution consiste à désinstaller la version 3.1.2 et à installer la version courante (install-package appforsharepointonlinewebtoolkit)

    Il y a effectivement une différence entre ces package dans SharePointContext.cs et .vb. Vous pouvez soit choisir d’ignorer ces différences ou bien choisir de copier/coller le code de la dernière version avant de désinstaller le package.

    Notez que si vous faites cela, le package sera marqué comme modifié et vous ne serez plus capable de faire des mises à jour. Il faudra à ce moment-là désinstaller le package à nouveau et installer la dernière version.

    J’ai prévenu les équipes de Microsoft et je vous tiendrai au courant si jamais une mise à jour intervient.

    Bons développements !

    • 3/9/2015

    Nouvelle conférence Microsoft la AzureCon

    Bonjour à tous,

    Billet rapide pour vous indiquer que Microsoft vient d’annoncer un nouvel évènement : la AzureCon. Première édition le 29 Septembre.

    Cet évènement en ligne et gratuit va se concentrer sur les technologies Cloud de Microsoft (principalement Azure) et traitera des nouveautés et de ce qui va être livré.

    Conférenciers de marque, contenu de qualité, c’est l’occasion d’en apprendre énormément sur les technologies Azure et leur utilisation.

    Cette conférence devrait se dérouler plusieurs fois par an (environ 4 fois), la raison principale étant la suivante : « avec des sorties et nouveautés toutes les 3 semaines sur chacun des services, on ne pouvait simplement pas attendre un an pour tout annoncer avec l’Ignite ou la Build » (PM Azure Microsoft)

    Pour vous inscrire c’est par là ! n’hésitez pas à en parle autour de vous !

    https://azure.microsoft.com/en-us/azurecon/?WT.mc_id=dx_MVP5000788

    • 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 !