Objectif
L’objectif de cet article est de vous présenter comment mettre en place une chaine de déploiement continue sur un serveur IIS local, hébergé sur votre réseau, à partir de code source stocké dans Visual Studio Team System.
Contexte
Vous stockez sur VSTS les code sources de vos différents projets applicatifs, mais vous aimeriez mettre en place un chaine de déploiement continue sur vos propres serveurs OnPremise n’ayant pas accès à internet à partir du code source contenu dans votre environnement VSTS.
La solution est de passer par un serveur build intermédiaire qui effectuera aussi le déploiement en local. Ce dernier aura donc un accès à VSTS et au serveur cible IIS hébergé dans le réseau interne.
Serveur de Build
Nous avons utilisé dans notre cas un serveur de Build avec Windows Server 2012 R2. Mais il est possible d’utiliser le poste de développement en guise de serveur de Build, à condition de respecter les prérequis suivant :
- Windows 7 to Windows 8.1
- Windows Server 2012 R2 (64-bit)
- PowerShell 3.0 or higher
L’environnement de développement doit être installé sur le serveur de build et l’agent de build, afin que celui-ci puisse effectuer la compilation du code source contenu dans le VSTS.
Installation et Configuration
Environnement de développement
Il est préférable d’installer et de configurer l’environnement de développement avant de configurer l’agent de build, car ce dernier détecte automatiquement l’environnement du serveur lorsqu’il se connecte à VSTS.
Dans notre cas nous avons installé :
- Visual Studio 2015 Enterprise, version minimum recommandée
- NodeJs pour la compilation des less avec gulp
- Framework 4.6.2
Agent de build
Prérequis de sécurité
Pour installer et configurer l’agent de build, utiliser un compte qui soit à la fois Administrateur du Serveur de build et qui soit administrateur dans VSTS.
Authentification avec un « Personal Access Tokens »
- Connectez vous sur votre VSTS avec le compte administrateur que vous souhaitez utiliser
- Ouvrez le profil du compte
- Allez dans sécurité
- Allez dans Personal Acces Tokens
- Cliquez sur
- Cochez seulement le scope Agent Pools (Read, manage), et veillez à laisser les autres décoché
- Cliquez ensuite sur
- Copiez le token ainsi obtenu
Note : Veillez à conserver précieusement le token généré, il sera utile pour configurer et supprimer l’agent.
Installation
Pour installer l’agent sur le serveur de build :
- Connectez vous sur le serveur de build, avec un compte administrateur
- Depuis le serveur, connectez vous sur votre VSTS avec un compte administrateur.
- Allez dans Settings\Agent Pools
- Cliquez sur
Une fenêtre contenant les commandes à effectuer pour installer sur différent OS s’ouvre.
Lancer le téléchargement à la fin de celui-ci exécuter les commandes PowerShell du bloc Create Agent. Ceci décompressera le zip précédemment téléchargé dans le répertoire C:\agent.
Configuration
Création du pool
Lors de la configuration de l’agent de build, nous allons le rattacher à un pool que nous avons spécialement créé :
- Connectez vous sur votre VSTS avec un compte administrateur.
- Allez dans Settings\Agent Pools
- Cliquez sur « New Pool… »
- Dans la fenêtre de saisie, entrez le nom du nouveau pool : « Interne »
Agent de build
Nous pouvons passer, maintenant, à la configuration de l’agent de build :
- Dans la console PowerShell en tant qu’administrateur, placez vous dans le répertoire où a été installé l’agent
- Exécuter la commande :
Un assistant de configuration en ligne de commande PowerShell démarre :
Connexion à VSTS :
- Saisissez l’URL VSTS : https://{your-account}.visualstudio.com
- Sélectionnez le type authentification PAT (précédemment configuré avec le compte que vous utilisé)
- Saisissez le jeton précédemment généré
Inscription de l’agent sur VSTS :
- Saisissez le nom du pool d’agent précédent créé : Interne
- Saisissez le nom de l’agent, par défaut il vous propose le nom du serveur : BuildInterne
- Saisissez le dossier de travail de l’agent : _workVSTS
- Choisissez de l’exécuter en tant que Service, en saisissant ‘O’
- Choisissez le compte par défaut
Résultat :
- Connectez vous sur votre VSTS
- Allez dans Settings\Agent Queues
Vous devez voir le résultat suivant :
Vous pouvez utiliser maintenant le pool Interne dans la configuration de vos Builds.
Note : Sur un serveur de build, vous pouvez installer plusieurs agent de build, il faut juste les utiliser des répertoires d’installation différents.
Création d’un Build VSTS
- Connectez sur VSTS
- Allez dans « Build & Realease »/Builds
- Cliquez sur New
- Sélectionnez le Template ASP.NET et cliquez sur « Apply »
- Allez dans l’onglet « Triggers » pour activer l’intégration continue
- Préciser la branche à surveiller
- Allez dans l’onglet « Options » pour sélectionner l’agent interne précédemment créé
- Allez dans l’onglet « Variables » Afin de modifier :
- BuildConfiguration selon la configuration souhaitez (Release, Debug, ou une que vous avez créée dans votre solution). Dans notre cas, nous avons créé la configuration de Build « Developpement »
- Cliquez sur « Save »
- Cliquez sur « Save »
Déploiement automatique
L’objectif est déployer automatiquement sur le serveur cible IIS, le dernier package compilé par le pool de build que nous venons de créer avec l’agent « BuildInterne ».
Configuration du serveur Cible
Dans notre cas nous effectuons le déploiement automatique sur un serveur web IIS Windows server 2012 R2.
Sur ce dernier, il faut activer WinRM : Remote Management.
WinRM
Pour activer WinRM sur Windows Server 2012 :
- Connectez vous sur le serveur Cible
- Ouvrir sur le serveur Server Manager > Local Server
Site Web Cible
Dans notre exemple, nous allons mettre en place un déploiement automatique sur un site web existant que nous allons créer sur le serveur manuellement. mais cette action est parfaitement automatisable dans le processus de déploiement automatique.
- Connectez vous sur le serveur cible
- Ouvrir sur le serveur IIS manager
- Ajouter un nouveau site Web, par exemple : WebInterne sur un port libre
Note : Pensez bien à ouvrir le port utilisé sur le serveur cible
Créer une release
- Connectez sur VSTS
- Allez dans « Build & Realease »/Releases
- Cliquez sur « Create release definition »
- Sélectionnez Empty et cliquez sur Next
- Sélectionnez votre projet
- Sélectionnez la définition du build que vous avez précédemment créé
- Cochez « Continuous Deployement », pour le déploiement s’exécute à chaque nouveau build.
- Cliquez sur Create
Ajout de tâches
Maintenant que la release a été créé vide, il faut lui ajouter des tâches à exécuter.
- Modifier le nom de la Release : Interne
- Liez la release à un package de déploiement :
- Cliquez sur « Link to an artifact source «
- Cliquez sur « Link to an artifact source «
- Sélectionnez la queue de déploiement :
- Celle que nous avons précédemment créée : Interne
- Cliquez sur « Add tasks » :
- Windows Machine File Copy
- Ajouter la tache « Windows Machine File Copy », afin de copier le package à déployer sur le serveur cible.
- Configurez cette tache de copie :
- Sélectionner le fichier compresser dans le package précédemment lié,
- Sélectionner le fichier compresser dans le package précédemment lié,
- Ajouter la tache « Windows Machine File Copy », afin de copier le package à déployer sur le serveur cible.
- WinRM – IIS Web Deployment
- Ajoutez la tache « WinRM – IIS Web Deployment »
- Si cette dernière n’est pas disponible, il faut ajouter l’extension à votre VSTS depuis le market Visual Studio ici.
- Configurez la tache :
- WinRM :
- Machines : Nom réseau du serveur cible
- Admin Login/Password : Login et Password d’un compte admin sur le serveur cible
- Protocol : Sélectionnez le protocole utilisez par le WinRM sur le serveur cible
- Deploiement :
- Web Deploy Package : Nom et chemin de copie du package de déploiement, définie dans la tache précédente
- Website Name : Name du site web précédemment créé : Interne
- WinRM :
- Ajoutez la tache « WinRM – IIS Web Deployment »
- Windows Machine File Copy
- Allez dans l’onglet « Triggers » :
- Cochez « Continuous Deployment »
- Sélectionnez le nom du build à surveiller et pour quelle branche le build a été effectué