Comment configurer des pipelines d’intégration continue avec Drone sous Ubuntu 16.04

introduction

Drone est une plateforme d'intégration et de livraison continue écrite en Go. Grâce aux intégrations avec de nombreux services de contrôle de version populaires, vous pouvez l’utiliser pour créer, tester et livrer des logiciels automatiquement chaque fois que votre code est mis à jour.

Dans ce tutoriel, nous allons créer un exemple de référentiel GitHub et utiliser Drone pour générer et tester le projet.

Conditions préalables

Avant de commencer ce didacticiel, Drone doit être installé, configuré et lié à votre compte GitHub. Les tutoriels suivants vous y mèneront:

Une fois terminé, vous devriez être connecté à Drone, sur un écran similaire à celui-ci:

Drone default logged in screen

C’est le tableau de bord de Drone. Cela montre que nous sommes connectés, mais qu’aucun référentiel n’a été configuré dans Drone. Créons maintenant un référentiel.

Forking de l'exemple de référentiel

Premièrement, nous aurons besoin d’un référentiel GitHub avec du code à construire et à tester. Vous pouvez utiliser Drone avec différents référentiels de contrôle de version, mais dans les conditions préalables, nous avons associé Drone à un compte GitHub. Nous allons donc l'utiliser tout au long de ce didacticiel. Connectez-vous à GitHub et accédez au dépôt suivant:

https://github.com/do-community/hello_hapi

hello_hapi repository page

Cliquez sur le boutonFork dans le coin supérieur droit pour copier ce référentiel dans votre propre compte. Si vous avez accès à plusieurs organisations GitHub, il vous sera peut-être demandé de choisir l'emplacement de destination du référentiel. Choisissez votre compte d'utilisateur normal. Après quelques instants, vous serez redirigé vers le référentielhello_hapi qui a été copié dans votre compte.

Nous verrons ensuite comment nous configurons Drone pour générer et tester notre code.

Comprendre le fichier .drone.yml

Drone recherche un fichier de configuration nommé.drone.yml dans votre référentiel pour déterminer comment il doit gérer votre code. Ce fichier est déjà inclus dans le référentiel que nous venons de créer:

drone.yml
pipeline:
  build:
    image: node:latest
    commands: npm install
  test:
    image: node:latest
    commands: npm run test

Il s'agit d'un fichierYAML qui définit unpipeline. Un pipeline est un processus d'intégration continue qui exécute plusieurs étapes, l'une après l'autre. Dans notre cas, nous avons un pipeline en deux étapes.

La première étape, appeléebuild utilisera l'image Docker denode:latest pour exécuternpm install dans notre référentiel. Cela téléchargera et installera toutes les bibliothèques nécessaires pour exécuter les tests.

L'étape suivante est appeléetest. Il utilise la même image Docker pour exécuter notre suite de tests. Souvent, vous exécutez les commandesbuild ettest en une seule étape, mais nous les avons divisées pour mieux illustrer les pipelines.

Notez que toutes les étapes d'un pipeline partagent le même espace de travail. Par conséquent, les fichiers créés lors de la première étape seront disponibles ultérieurement. Drone a beaucoup plus d'options qui peuvent être configurées avec.drone.yml, que vous pouvez lire dans lesDrone documentation. Certaines de ces fonctionnalités incluent:

  • Les constructions Matrix, dans lesquelles vous construisez et testez plusieurs versions d'une bibliothèque ou d'une exécution pour vérifier la compatibilité

  • Notifications par e-mail ou services de messagerie

  • Publication de produits de compilation sur npm, des registres de conteneurs ou des hôtes de sites statiques

Ensuite, nous dirons à Drone de surveiller les modifications apportées à notre référentiel, puis de déclencher une construction.

Déclenchement d'une exécution d'intégration continue

Connectez-vous à Drone, si vous ne l’êtes pas déjà. La page d'accueil semblera assez clairsemée jusqu'à ce que nous la configurions. La barre latérale vide nous invite àActivate your repositories to get started.

Drone default logged in screen

Cliquez sur le lienActivate pour afficher une liste de tous vos référentiels GitHub:

Drone repository listing

Trouvez le repohello_hapi et cliquez sur le bouton gris dans la colonne de droite pour l'activer. La bascule basculera et deviendra verte. Dans les coulisses, Drone utilisera l’API de GitHub pour s’assurer qu’il reçoit des notifications chaque fois que notre code change.

Revenez au tableau de bord de la page d'accueil en cliquant sur le logo Drone dans le coin supérieur gauche de l'écran ou en utilisant le menu situé dans le coin supérieur droit à côté de l'icône de l'utilisateur:

dashboard link screenshot

Notre nouveau référentiel sera désormais répertorié dans le tableau de bord du tableau de bord. Il n’ya pas encore d’informations sur l’état, car nous n’avons pas effectué de build:

dashboard with hello_hapi and no build info

Cliquez sur le nom du référentielhello_hapi pour accéder à une vue détaillée du référentiel. Il y aura des onglets où nous pourrons mettre à jour les paramètres, ajouter des secrets comme les jetons et les mots de passe, et obtenir des badges d'état de construction intégrables. Par défaut, nous sommes dans l'ongletBuilds, et aucune compilation n'est encore répertoriée.

hello_hapi repo details with no builds

Laissons déclencher une construction maintenant.

Laissez votre page Drone ouverte et accédez au référentiel GitHub dehello_hapi dans un autre onglet ou une autre fenêtre. Nous allons ajouter un fichier au projet afin de déclencher une construction. Tout fichier fera l'affaire. Cliquez sur le boutonCreate new file vers le haut de la liste des fichiers dans votre dépôt:

Create file button on GitHub screenshot

Choisissez n'importe quel nom de fichier. Dans ce cas, nous avons choisitrigger-file. Entrez n'importe quel contenu:

Filename and content creation on GitHub screenshot

Ensuite, faites défiler vers le bas de l'éditeur de contenu et cliquez sur le boutonCommit new file:

Commit new file on GitHub screenshot

Lors de la validation, GitHub informera notre installation Drone de la modification. Drone va alors commencer une nouvelle construction. Revenez à la fenêtre de votre navigateur Drone. L'interface devrait se mettre à jour assez rapidement, et une flèche en rotation indiquera qu'une construction est en cours.

Drone dashboard with build in progress

Il est peut-être déjà terminé si vous avez pris quelques instants pour revenir à Drone. Regardons les détails de la construction ensuite.

Affichage des résultats de CI / CD

Cliquez sur la construction pour accéder à une vue détaillée. Si la construction est toujours en cours, vous pourrez observer chaque étape du pipeline en temps réel.

Drone build details

Vous pouvez cliquer sur les flèches de divulgation pour chaque étape de la construction pour afficher plus de détails. Voici la sortie de notre étapetest:

Drone build step details

Si l'étape est toujours en cours, cliquer sur le boutonFollow affichera la sortie telle qu'elle se produit.

Notez qu'il y a une étapeclone que nous n'avons pas définie dans notre fichier.drone.yml. Ceci est toujours présent et donne des détails sur la façon dont Drone a récupéré votre code source avant la construction.

Conclusion

Dans ce didacticiel, nous avons créé un référentiel de démonstration, exploré le fichier de configuration de.drone.yml et créé et testé notre référentiel avec Drone.

Pour plus d'informations sur la configuration de Drone pour créer, tester et déployer votre projet, reportez-vous auxDrone documentation.

Related