Créer et récupérer des packages Nuget depuis VSTS

One platform to rule them all

Depuis que Microsoft a tourné sa stratégie vers les services dans le Cloud et l’avènement de la plateforme Azure, leurs produits ne cessent de s’enrichir et de proposer de nouvelles fonctionnalités.

L’une des fonctionnalités phare de VSTS est la possibilité d’intégrer un gestionnaire de package Nuget au sein même de l’outil.

Grâce à une extension qu’il est possible de récupérer depuis le Market, il est maintenant assez aisé de gérer des packages Nuget, et ceci de leur création à leur consommation par les projets .NET.

Dans cet article nous allons voir comment configurer cette extension et utiliser nos builds d’intégration continue et de déploiement continu pour arriver à ce but.

 

Installation de l’extension

La première chose que vous devrez faire est d’aller sur le Market place de VSTS pour installer l’extension adéquate.

Lien direct vers l’extension : Package Management

Une fois l’installation effectuée, un nouveau lien apparaît sous “build & release” ; il sera le point d’entrée pour gérer vos packages.

Est-ce payant?

Cette extension est gratuite pour les 5 premiers utilisateurs. Au-delà, il faudra passer par une formule payante. Pour obtenir une idée du prix, Microsoft propose un simulateur accessible ici :

Accéder au simulateur

Plus le nombre d’utilisateurs est élevé, moins le coût par utilisateur sera conséquent.

Création de votre premier feed

Les packages nuget sont regroupés par feed, il faut voir les feeds comme des containers où vous allez publier et consommer vos packages nuget.

Pour notre exemple, nous allons créer un feed de test pour y déployer notre premier package, la création se faisant depuis l’onglet “packages”.

Renseignez un nom et une description pour votre feed.

Il est possible de restreindre l’accès de ce feed à certains utilisateurs sous “Who can read” : nous pouvons donner les droits de lecture à une équipe en particulier, ou bien à tout le monde.

Même chose pour les contributions, nous pouvons donner l’autorisation -ou pas- aux membres de l’équipe de publier des packages.
Nota bene : Si vous souhaitez déployer vos packages par le biais d’un déploiement continu, assurez-vous que le compte de service possède bien cette autorisation.

Le projet qui servira de package nuget

Nous allons packager un simple projet qui contient une classe HelloWorldNugget que l’on instanciera et qui se contentera d’écrire dans la console.

Dans un premier temps, on se contentera d’utiliser les informations du csproj et de l’assembly pour documenter le package.

Tout d’abord, le nom du package nuget est renseigné dans le nom de l’assembly. Pour tester cela, nous allons donc le nommer “HelloNugetWorld” à partir des propriétés du projet.

Ensuite, nous allons renseigner la description du package nuget à l’aide du fichier AssemblyInfo.cs de notre solution :

Pour des cas plus complexes de packaging, il est possible de passer par un fichier nuspec. Mais pour la majorité des cas, cibler un csproj est largement suffisant et couvre la plupart des situations.

 

Création du build d’intégration continue

Pour créer votre build, allez sous l’onglet “Builds” et sélectionnez “New definition”. Je vous suggère de commencer par un template “.NET Desktop” qui contient la plupart des tâches dont on aura besoin.

Voici un exemple de build complet qui s’occupe de compiler la solution et de générer le fichier nupkg utilisé par la release.

Détails des étapes :

1) On récupère l’ensemble du code source nécessaire


2) Versionning du package nuget

Pour versionner mon package, j’utilise une extension pratique qui se trouve sur le Market “Update assembly info”, celle-ci permettant de modifier mon assembly.cs à la volée pendant mon intégration continue -> utile pour versionner son projet 😉

3) Au travers de “Nuget Tool Installer”, je demande explicitement à VSTS d’utiliser la version 4.1.0 de Nuget. Il est possible d’en choisir une autre ou de lui demander de toujours utiliser la dernière (ce que je déconseille pour une meilleure stabilité)


4) Restauration des packages Nuget du projet (si votre projet ne contient pas de dépendances, cette tâche n’est pas nécessaire)


5) Build complet de la solution


6) On ajoute la tâche qui va s’occuper de packager notre projet. Attention, à ce stade le package n’est pas publié sur notre feed, cette tâche ne servant qu’à générer le .nupkg que l’on va publier sur notre feed plus tard à travers une release

7) La tâche « Publish Artifact » va s’occuper de copier tous les fichiers nécessaires à la release dans un dossier dédié

Artifact Name : Le nom du dossier dans lequel vous voulez publier vos fichiers de release

Artifact Type: Sélectionnez “Server” pour que vos fichiers de release soient publiés sur le serveur de vsts

Il n’y a plus qu’à lancer le build d’intégration continue

-> Pour cela, appuyez sur « Queue » en haut à droite.

Si tout s’est bien passé, nous devrions avoir toutes nos tâches en vert comme dans la capture ci-dessous (et pouvoir enchaîner avec la création de la release)

Création de la release

À la fin de votre build, si tout s’est bien passé, vous pourrez créer une release :

Pour cela, cliquez sur le bouton “Release” et laissez-vous guider

Sélectionnez un template “Empty”

Donnez un nom à votre environnement. Dans notre cas, ça sera directement la production.

Il est maintenant temps de paramétrer les tâches de release.

Pour cela, ajoutez une tâche “Nuget” et paramétrez-la tel que ci-dessous:

  • La commande “push” indique que nous voulons publier le package
  • Nous avons écrit un pattern pour trouver notre nupkg à publier
  • Dans “Target feed location”, nous disons à VSTS qu’il faut publier le package dans notre feed privé “FeedTest”

 

Une fois la release créée et exécutée, nous pouvons retrouver le package nuget dans la liste des packages.

Et bien sûr, nous pouvons l’ajouter depuis un projet Visual Studio.

Utilisation du package dans un projet

Ajout du feed dans Visual Studio

Dans Visual Studio, accédez au paramétrage des feeds dans : Options -> Nuget package Manager -> Package Sources

Ajoutez l’URL de votre feed privé à cet emplacement. Dans mon exemple je l’ai nommé “Private Feed”.

Pour récupérer l’adresse de votre feed, allez dans “connect to feed” sur Visual Studio Team Service :

Une fois votre feed ajouté à Visual Studio, rendez-vous dans la gestion des packages nuget de votre projet.

Dans la liste déroulante, pensez bien à vous positionnez sur votre feed, et sous “Browse” vous devrez voir apparaître votre package nuget publié ! 🙂

(Notez la présence de notre dépendance à Newtonsoft.Json)

 

Il n’y a plus qu’à le tester dans une application cliente 🙂

Nous avons bien le petit message qui s’affiche sur la console ! 🙂

Vous savez maintenant publier et consommer des packages nuget depuis VSTS !

Nombre de vue : 115

AJOUTER UN COMMENTAIRE