lundi 20 mars 2017

VSTS et Déploiement automatisé de bases de données avec DACPAC

Dans le précédent article nous avons vu l'avantage et la simplicité de mise en oeuvre de projets de bases de données DACPAC. Nous allons voir comment intégrer simplement dans nos processus d'intégration continue et déploiement continu nos développements de bases de données.
Notre projet DACPAC est donc sous controle de code source Git sous VSTS dans notre exemple.
La première étape va consister à créer une Build permettant de compiler et générer en sortie le fichier DacPac et le profile de publication de manière à ce qu'il puisse être consommé par une Release du module Release Management dont la responsabilité sera de déployer le package fabriqué par la build sur un instance SQL Azure dans notre exemple
Pour la création de la build, il s'agit d'une Build Standard à laquelle nous allons rajouter deux taches de copies, une pour le fichier Dacpac et une pour le fichier de publication
Ci dessous la structure de la build avec l'ajout de deux taches "Copy Files"de la librairie standard
La configuration des taches de copies est pour Dacpac: cette tache va copier dans la Drop location dans un sous dossier database le fichier Dacpac du projet de base de données

Pour le fichier de publication nous avons : ce fichier se trouve généralement à la racine du projet et va contenir les informations pour la mise à jour de la base de données.
Pour vérifier que la build fonctionne correctement, il suffit simplement de la lancer, une fois terminée afficher les détails de la build et cliquer sur l'onglet Artifacts : 
Cliquer sur le bouton Explore à droite de Drop, les deux fichiers doivent être présents dans le dossier Database

La build fabrique bien le package nécessaire à Release Management pour déployer les modifications effectuées sur la base de données.
L'étape suivante va consiter à créer une Release Definition permettant de déployer ce package sur une instance SQL Azure dans notre exemple, pour cela accèder à l'onglet Release et cliquer sur le bouton New Definition
Configurer le projet et la build à utiliser pour le déploiement puis cliquer sur Create

Etant donné que nous avons un compte SQL admin pour le déploiement, nous pouvons définir des variables pour le compte et le mot de passe pour le déploiement comme montré ci dessous (penser à utiliser le cadenas pour passer ces données en secret!)

Pour la partie environnment, renommer en Dev par exemple puis rajouter une tache de déploiement  : Azure SQL Database Deployment , cliquer sur Add puis Close


La dernière étape va simplement consister à configurer le déploiement : 
Le prérequis est d'avoir provisionné un Service Endpoint de type Azure Resource Manager pour votre projet VSTS afin de permettre à la release definition de communiquer avec la ressource Azure cible, comme montré ci dessous : 
Puis procéder à la configuration comme montré  ci dessous : 

Une fois la configuration terminée, il ne reste plus qu'à tester, pour cela, nous allons rajouter un champ Description dans la table Countries, archiver le code, ce qui va lancer la Build automatiquement et provisionner le package, ci dessous la table modifiée:

La build est alors déclenchée, lorsque terminée, nous lançons une release : 
 Puis simplement configurer la build à utiliser (noter qu'en cas de déploiement auto, on peut configurer l'utilisation de la dernière build) puis cliquer sur Create
Le déploiement est alors en progression

Au bout de quelques minutes, la release est déployée

Si l'on se connecte à l'instance cible avec le server Explorer de Visual Studio par exemple, on verra que la colonne Description a bien été créée dans la table Countries de la base de données cible

Nous avons donc vu que l'intégration des développements de base de données s'intégraient de manière simple sur l'ensemble du cycle de vie de développement tel qu'exposé par VSTS et nous permet d'inscrire nos développements de base de données dans une démarche Devops.

Aucun commentaire: