Dernièrement il m’a été posé la question s’il était possible faire du DevOps avec VSTS et des sources sur Github.

Pour faire simple : oui.

Pour préciser les choses voici un POC que j’ai mis en place pour apprendre à faire une architecture micro services avec Docker.

Le source des services sont logés sur Github qui a été ma première approche avec un processus Commit sur Github, compilation avec Wercker et livraison dans Docker.

Création du projet VSTS

Même si les sources sont externes à VSTS il faut un projet pour gérer le processus de livraison.

Suite à la création je passe directement au build (Setup Build) :

Je vais utiliser ici le build pour récuperer les sources et les compiler. Il est tout a fait possible de juste récuperer les sources sans compiler (par exemple un site en php).

Création du build d’intégration continue

Démarrons par un Build vide :

Le build se présente ainsi :

Récupération des sources

Je sélectionne Get sources. Plusieurs choix sont possibles, ici je prends Github :

Je nomme ma connection et je clique sur le bouton de demande. Je suis le process pour permettre à VSTS d’accéder à mon Github. Je choisi mon projet et ma branche (ici la master). Ma branche de développement reste dans le processus Wercker.

Exemple d’un projet sans compilation

Build

Ajout d’une task

Je clique sur le + à coté de Phase 1 pour ajouter une nouvelle task.

Je prends la task « Publish Build Artifacts »

Dans « Path to publish » je prends le répertoire que je souhaite ici Multiservices.

Dans « Artifact name » je nomme mon répertoire de sortie ici deploy. Pour la livraison c’est ce répertoire qui servira de point d’entrée.

Activation de l’intégration continue

Dans l’onglet Triggers activez « Continuous integration ». A chaque modification le build sera activé.

Voilà pour la partie build (partie Dev du DevOps).

Release

Passons à la partie Ops en allant dans l’onglet Releases de VSTS. Ici je livrerai sur un FTP.

Nous créeons une nouvelle définition de release. Je prends comme pour la définition du Build un template vide :

Je défini l’artéfact de départ (le deploy du build). Je clique sur Add artifact. En source je prends Build. Je sélectionne le build créé précedemment.

En cliquant sur l’icone en forme d’éclair sur l’artéfact il est possible d’activer le « Continuous deployment trigger ».

Je renomme l’environnement par défaut en Dev. Dans l’onglet Task je prends l’environnement Dev pour ajouter une Task sur Agent phase.

Je cherche FTP et j’ai pour le moment 2 options « cURL Upload Files » et « FTP Upload » je prends le classique Ftp Upload. Afin de sécuriser les données je vais créer des variables dans l’onglet Variables.

J’ajoute 3 variables par environnement : l’adresse du serveur FTP, l’identifiant et le mot de passe. Le cadenas permet de crypter les données sensibles (exemple user/mdp).

De retour dans les tasks de Dev j’urilise les variables et je choisi la source et le répertoire où livrer (Remote directory) :

Il est possible de configurer plusieurs environnement et de conditionner la livraison à une approbation.