Dans cet article, nous allons démontrer le processus de création d'un projet de base de données, son intégration dans le controle de code source, puis la modification du Template de Build afin de déployer automatiquement le projet de base de données sur un serveur cible défini dans le manifest du projet de base de données
ETAPE 1 : Création du projet de base de données, configuration du déploiement et intégration dans le controle de code Source
Lancer Visual Studio 2010 puis créer un projet de base de données en utilisant le template SQL Server 2008 Wizard. Dans cet exemple nous nous baserons sur la base exemple adventureworks.Le wizard suivant se lance, cliquer sur Suivant
Choisir l'option base utilisateur et l'affichage par type d'objet comme monté ci dessous
En fonction du contexte projet, cocher les différentes options, A noter que ces options pourront être modifiées par la suite
Dans cette étape, cocher l'option importer le schéma existant, cliquer le bouton nouvelle connexion pour choisir la base de données dont on veut acquérir le schéma, puis cliquer sur suivant
Dans l'action de déploiement, choisir l'option "Créer un script de déploiement et déployer la base de données"
Cliquer sur Terminer, le processus de scriptage des objets est lancé, puis cliquer sur Terminer
Au bout de quelques secondes, le projet de base de données apparait dans l'explorateur de solutions comme montré ci dessous
A l'aide du bouton droit de la souris sélectionner la commande Propriétés du projet et configurer la section Connexion cible pour le déploiement de la base de données puis enregistrer la configuration
Pour vérifier le fonctionnement, en sélectionnant le Noeud du projet dans l'explorateur de solution, lancer la commande Déployer
La fenêtre d'Output affiche les informations de résultat du déploiement.
A partir du moment ou le projet de base de données compile et se déploie, nous allons pouvoir l'intégrer au controle de code source en utilisant la commande "Ajouter la solution au controle de code source" :
Configurer la localisatioin de la solution dans le dossier Database de la structure de code source pour lancer la commande Archiver (Check in) pour intégrer le projet de base de données dans le Controle de code source
Etape 2 : Implementation de l'intégration continue
La première étape consiste à modifier le processus de Buid pour intégrer la capacité de déploiement, cet étape est très simple et se déroule comme suit :
A partir de Team Explorer Créer une nouvelle définition de Build
Cliquer ensuite sur l'onglet Process puis cliquer sur le bouton Nouveau à droite de la liste des modèles
La fenêtre de dialogue "Nouveau modèle de processus de génération" s'ouvre, entrer DBDeploy dans la zone nom du nouveau fichier Template. Cette astuce nous permet de créer un clone du modèle de processus que nous allons adapter pour le déploiement de notre projet de base de données.
Valider, lorsque la fenêtre se referme, le nouveau modèle de processus apparait dans la liste et un hyperlien permet de le localiser dans le controle de code source, cliquer sur cet hyperlien
Cette action ouvre la fenêtre du Source Control Explorer et affiche notre fichier Template. Sélectionner le fichier, cliquer sur Obtenir la dernière version
Puis extraire le fichier pour le modifier
Double cliquer sur le fichier DBDeploy.xaml pour l'ouvrir. Le fichier s'ouvre dans le designer Workflow Foundation. Cliquer sur Réduire Tout afin de compacter l'affichage
Appuyer la séquence de touches CTRL Alt X pour afficher la boite à outils, Déplier la catégorie "Flux de Controle" puis glisser l'activité Séquence au dessous la dernière séquence du workflow existant. L'objectif étant en fin de build, si la solution a compilé et que les tests ont réussi, permettre le déploiement de la base de données
La séquence apparait comme suit
Renommer le titre de la séquence en "Deploy Database" par exemple.
Pour afficher la fenêtre de propriété, simplement cliquer sur F4 après avoir sélectionner ladite séquence
Sélectionner l'activité If et la glisser à l'intérieur de la séquence Deploy Database. On remarquera l'apparition de warning rouges indiquant que la configuration n'est pas correctement finalisée.
Double cliquer sur l'activité If afin de pouvoir finaliser sa configuration
Dans la section Activités Team Foundation Build, sélectionner l'élément InvokeProcess puis la glisser dans la zone Then du If. Cette activité est très puissante car permet de lancer tout type de fichier exécutable tout en lui passant des paramètres
Sélectionner l'activité InvokeProcess puis cliquer sur F4 pour afficher la fenêtre de propriété, cliquer sur le bouton en regard de la propriété arguments et entrer l'expression d'arguments comme montré ci dessous. Attention à remplacer dans la section manifest DBDeploy par le nom de manifest de votre projet de base de données (par défaut le nom du projet de base de données)
Pour la commande Invokeprocess, l'objectif est de lancer l'utilitaire VSDBCMD qui permet de déployer en ligne de commande un projet de base de données. Pour plus d'information sur les arguments consulter la page msdn : http://msdn.microsoft.com/en-us/library/dd193283(v=vs.100).aspx
InvokeProcess étant lancé à partir du serveur de build, il faut non seulement qu'il soit installé sur ce serveur (normalement par défaut si Visual Studio est installé) et de plus, il faut connaitre son chemin sur le disque afin de le renseigner dans la propriété Filename de l'activité. Ci dessous le chemin attendu de VSDBCMD
Copier coller le chemin dans la propriété FileName de l'activité InvokeProcess comme montré ci dessous
Puis entrer BuildDetail.DropLocation pour la propriété Working Directory. On remarquera la fonctionnalité d'intellisense qui permet de fiabiliser les saisies.
La configuration de l'activité de déploiement est maintenant terminée, il reste simplement à rajouter des activités de type message pour apporter de l'information sur le déroulement du déploiement dans la Log du Build. Double cliquer sur l'activité Invoke Process
Glisser une activité WriteBuild Message au dessous du champ stdOutput dans la section "Gérer la sortie standard", choisir High pour l'importance (voir capture d'écran ci dessous) et taper stdOuput dans la propriété Message, changer le nom en VSDBCMD Output
Procéder de meme pour la sortie d'erreur, entrer errOutput dans la propriété Message et configurer à High l'importance.
Sauvegarder le workflow et fermer le Designer. Puis procéder au check in du fichier afin de pouvoir le consommer à partir d'une nouvelle définition de Build.
Créer une nouvelle définition de build, choisir la solutin contenant le projet de base de données et dans la liste des modèles de processus choisir le template précédemment créé DBDeploy
A partir de Team Explorer Créer une nouvelle définition de Build
Cliquer ensuite sur l'onglet Process puis cliquer sur le bouton Nouveau à droite de la liste des modèles
La fenêtre de dialogue "Nouveau modèle de processus de génération" s'ouvre, entrer DBDeploy dans la zone nom du nouveau fichier Template. Cette astuce nous permet de créer un clone du modèle de processus que nous allons adapter pour le déploiement de notre projet de base de données.
Valider, lorsque la fenêtre se referme, le nouveau modèle de processus apparait dans la liste et un hyperlien permet de le localiser dans le controle de code source, cliquer sur cet hyperlien
Cette action ouvre la fenêtre du Source Control Explorer et affiche notre fichier Template. Sélectionner le fichier, cliquer sur Obtenir la dernière version
Puis extraire le fichier pour le modifier
Double cliquer sur le fichier DBDeploy.xaml pour l'ouvrir. Le fichier s'ouvre dans le designer Workflow Foundation. Cliquer sur Réduire Tout afin de compacter l'affichage
Appuyer la séquence de touches CTRL Alt X pour afficher la boite à outils, Déplier la catégorie "Flux de Controle" puis glisser l'activité Séquence au dessous la dernière séquence du workflow existant. L'objectif étant en fin de build, si la solution a compilé et que les tests ont réussi, permettre le déploiement de la base de données
La séquence apparait comme suit
Renommer le titre de la séquence en "Deploy Database" par exemple.
Pour afficher la fenêtre de propriété, simplement cliquer sur F4 après avoir sélectionner ladite séquence
Sélectionner l'activité If et la glisser à l'intérieur de la séquence Deploy Database. On remarquera l'apparition de warning rouges indiquant que la configuration n'est pas correctement finalisée.
Double cliquer sur l'activité If afin de pouvoir finaliser sa configuration
Dans la section Activités Team Foundation Build, sélectionner l'élément InvokeProcess puis la glisser dans la zone Then du If. Cette activité est très puissante car permet de lancer tout type de fichier exécutable tout en lui passant des paramètres
Sélectionner l'activité InvokeProcess puis cliquer sur F4 pour afficher la fenêtre de propriété, cliquer sur le bouton en regard de la propriété arguments et entrer l'expression d'arguments comme montré ci dessous. Attention à remplacer dans la section manifest DBDeploy par le nom de manifest de votre projet de base de données (par défaut le nom du projet de base de données)
Pour la commande Invokeprocess, l'objectif est de lancer l'utilitaire VSDBCMD qui permet de déployer en ligne de commande un projet de base de données. Pour plus d'information sur les arguments consulter la page msdn : http://msdn.microsoft.com/en-us/library/dd193283(v=vs.100).aspx
InvokeProcess étant lancé à partir du serveur de build, il faut non seulement qu'il soit installé sur ce serveur (normalement par défaut si Visual Studio est installé) et de plus, il faut connaitre son chemin sur le disque afin de le renseigner dans la propriété Filename de l'activité. Ci dessous le chemin attendu de VSDBCMD
Copier coller le chemin dans la propriété FileName de l'activité InvokeProcess comme montré ci dessous
Puis entrer BuildDetail.DropLocation pour la propriété Working Directory. On remarquera la fonctionnalité d'intellisense qui permet de fiabiliser les saisies.
La configuration de l'activité de déploiement est maintenant terminée, il reste simplement à rajouter des activités de type message pour apporter de l'information sur le déroulement du déploiement dans la Log du Build. Double cliquer sur l'activité Invoke Process
Glisser une activité WriteBuild Message au dessous du champ stdOutput dans la section "Gérer la sortie standard", choisir High pour l'importance (voir capture d'écran ci dessous) et taper stdOuput dans la propriété Message, changer le nom en VSDBCMD Output
Procéder de meme pour la sortie d'erreur, entrer errOutput dans la propriété Message et configurer à High l'importance.
Sauvegarder le workflow et fermer le Designer. Puis procéder au check in du fichier afin de pouvoir le consommer à partir d'une nouvelle définition de Build.
Créer une nouvelle définition de build, choisir la solutin contenant le projet de base de données et dans la liste des modèles de processus choisir le template précédemment créé DBDeploy
Sauvegarder la définition de Build et Tester, la base de données est déployée automatiquement sur le serveur cible défini dans le Manifest.
IMPORTANT: Le déploiement de la base de données est lancé avec l'identité du service de Build, il faut donc s'assurer de bien avoir donné les droits adéquats au serveur de Build sur le serveur de bases de données cible.
Pour aller plus loin : cet article décrit un processus de déploiement simple, il est possible d'enrichir ce modèle en s'appuyant sur des arguments qui permettront au moment du lancement du build de passer en paramètre le nom de la base de données à déployer ainsi que le nom du serveur de base de données cible ceci afin d'avoir plus de souplesse dans l'activité de déploiement multi environnements
Aucun commentaire:
Enregistrer un commentaire