Industrialiser ses développements avec le SharePoint Framework 2/3 (Release)
Voici la suite de la série sur la mise en place de l'industrialisation des développements réalisés à l'aide du SPFx.
- Mise en place d'une build dans Visual Studio Online pour les applications SPFx
- Mise en place d'une release dans VSO pour les applications SPFx
- Scénarios et paramétrage avancés
Approche générale
Nous allons donc attaquer la partie Release avec pour objectif :
- Récupérer notre package à déployer
- Vérifier s'il n'est pas déjà présent dans le catalogue d'app et le retirer si nécessaire
- L'ajouter au catalogue
- L'activer sur un site (pour la recette par exemple)
Initialisation de la release
Pour notre release, partez d'une définition vide, avec Hosted VS2017 comme agent, puis ajoutez 3 tâches PowerShell. Pour cet article, j'ai découpé pour clarifier les différentes étapes en inline, mais vous pouvez bien entendu tout regrouper et/ou le gérer depuis un script à part.
PnP PowerShell
Comme expliqué dans le précédent article, nous allons avoir besoin des extensions PowerShell proposés par PnP et disponibles sur GitHhub : https://github.com/SharePoint/PnP-PowerShell
Ces extensions comprennent des cmdlets qui appellent les API ALM (REST) pour le SharePoint Framework.
Dans la première tâche PowerShell, on s'occupe donc d'installer le module Pnp PowerShell :
Faire place nette avant le déploiement de notre solution
Il est bien sûr possible de ne procéder qu'à une mise à jour, mais je pars ici du principe d'un déploiement complet à chaque fois. Voici le déroulé:
- Connexion au site via le Connect-PnPOnline
- Récupération des apps déclarées avec Get-PnpApp pour y trouver la notre
- Si elle est présente, on la désinstalle du site (Uninstall-PnpApp) puis on la retire du catalogue (Remove-PnPApp); une petite attente entre les 2 pour que la désinstallation ait le temps de se faire proprement
Déploiement du package
Dernière étape, et non des moindres, le déploiement !
On va donc cette fois-ci tout simplement appeler la commande Add-PnpApp pour ajouter l'application dans le catalogue. Vous pouvez potentiellement avoir besoin d'appeler Publish-PnpApp afin de la rendre effectivement disponible au sein du tenant, mais il ne semblait pas obligatoire. Enfin, Install-PnpApp l'installe effectivement sur le site.
Et les variables dans tout ça ?
Il nous manque en effet les variables utilisées dans la release, les voici :
On y retrouve le nom du package ainsi que celui de la solution, l'URL cible de déploiement de notre app mais aussi les credentials nécessaires au bon déploiement (il vous faut un compte administrateur bien sûr !). .Et afin d'éviter de laisser un mot de passe en clair se balader ainsi, je vous conseille d'utiliser le passage en variable "secrète" via le petit cadenas :
Le mot de passe ne sera ainsi pas récupérable directement, il faudra forcément le passer en paramètre à nos scripts pour qu'il soit utilisable.
Maintenant que vous maîtrisez la release, en avant pour les scénarios plus avancés.
Commentaires