Einrichten von Continuous Integration Pipelines mit Drone unter Ubuntu 16.04

Einführung

Drone ist eine in Go geschriebene Plattform für kontinuierliche Integration und Bereitstellung. Durch die Integration mit vielen gängigen Versionskontrolldiensten können Sie Software automatisch erstellen, testen und bereitstellen, sobald Ihr Code aktualisiert wird.

In diesem Tutorial werden wir ein GitHub-Repository als Beispiel veröffentlichen und Drone verwenden, um das Projekt zu erstellen und zu testen.

Voraussetzungen

Bevor Sie dieses Tutorial starten, muss Drone installiert, konfiguriert und mit Ihrem GitHub-Konto verknüpft sein. Die folgenden Tutorials führen Sie dorthin:

Wenn Sie fertig sind, sollten Sie in Drone auf einem Bildschirm wie dem folgenden angemeldet sein:

Drone default logged in screen

Dies ist das Dashboard von Drone. Es zeigt, dass wir angemeldet sind, aber keine Repositorys in Drone eingerichtet haben. Erstellen wir jetzt ein Repository.

Beispiel-Repository aufteilen

Zunächst benötigen wir ein GitHub-Repository mit Code zum Erstellen und Testen. Sie können Drone mit vielen verschiedenen Versionskontroll-Repositorys verwenden. Unter den Voraussetzungen haben wir Drone jedoch mit einem GitHub-Konto verknüpft, sodass wir dies in diesem Lernprogramm verwenden werden. Melden Sie sich bei GitHub an und navigieren Sie zu folgendem Repo:

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

hello_hapi repository page

Klicken Sie oben rechts auf die SchaltflächeFork, um dieses Repository in Ihr eigenes Konto zu kopieren. Wenn Sie Zugriff auf mehrere GitHub-Organisationen haben, werden Sie möglicherweise gefragt, wohin Sie das Repository verschieben möchten. Wählen Sie Ihr normales Benutzerkonto. Nach wenigen Augenblicken werden Sie zum Repository vonhello_hapiweitergeleitet, das in Ihr Konto kopiert wurde.

Als Nächstes werfen wir einen Blick darauf, wie wir Drone zum Erstellen und Testen unseres Codes konfigurieren.

Grundlegendes zur .drone.yml-Datei

Drone sucht in Ihrem Repository nach einer Konfigurationsdatei mit dem Namen.drone.yml, um zu bestimmen, wie sie mit Ihrem Code umgehen soll. Diese Datei ist bereits in dem Repository enthalten, das wir gerade gegabelt haben:

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

Dies ist eineYAML-Datei, diepipeline definiert. Eine Pipeline ist ein kontinuierlicher Integrationsprozess, der mehrere Schritte nacheinander ausführt. In unserem Fall haben wir eine zweistufige Pipeline.

Der erste Schritt mit dem Namenbuild verwendet das Docker-Imagenode:latest, umnpm install in unserem Repository auszuführen. Dadurch werden alle Bibliotheken heruntergeladen und installiert, die zum Ausführen der Tests erforderlich sind.

Der nächste Schritt heißttest. Es wird dasselbe Docker-Image verwendet, um unsere Testsuite auszuführen. Oft führen Sie die Befehlebuild undtest in einem Schritt aus, aber wir haben sie aufgeteilt, um Pipelines besser zu demonstrieren.

Beachten Sie, dass sich die Schritte in einer Pipeline alle denselben Arbeitsbereich teilen, sodass die im ersten Schritt erstellten Dateien in späteren Schritten verfügbar sind. Drohne hat viele weitere Optionen, die mit.drone.yml konfiguriert werden können, über die Sie inDrone documentation lesen können. Einige dieser Funktionen umfassen:

  • Matrix Builds, bei denen Sie mehrere Versionen einer Bibliothek oder Laufzeitumgebung erstellen und testen, um die Kompatibilität zu überprüfen

  • Benachrichtigungen per E-Mail oder Nachrichtendienst

  • Veröffentlichung von Build-Produkten auf npm, Containerregistern oder statischen Site-Hosts

Als Nächstes weisen wir Drone an, nach Änderungen in unserem Repository zu suchen und dann einen Build auszulösen.

Kontinuierlichen Integrationslauf auslösen

Melden Sie sich bei Drone an, falls Sie dies noch nicht getan haben. Die Homepage wird ziemlich spärlich aussehen, bis wir sie eingerichtet haben. Die leere Seitenleiste fordert uns zuActivate your repositories to get started auf.

Drone default logged in screen

Klicken Sie auf den LinkActivate, um eine Liste aller Ihrer GitHub-Repositorys anzuzeigen:

Drone repository listing

Suchen Sie das Repo vonhello_hapiund klicken Sie auf den grauen Schalter in der rechten Spalte, um es zu aktivieren. Der Schalter wird umgedreht und wird grün. Hinter den Kulissen verwendet Drone die GitHub-API, um sicherzustellen, dass er Benachrichtigungen erhält, wenn sich unser Code ändert.

Kehren Sie zum Startseiten-Dashboard zurück, indem Sie auf das Drone-Logo in der oberen linken Ecke des Bildschirms klicken oder das Menü in der oberen rechten Ecke neben Ihrem Benutzersymbol verwenden:

dashboard link screenshot

Im Dashboard wird jetzt unser neues Repository in der linken Spalte aufgeführt. Es gibt noch keine Statusinformationen, da wir keinen Build ausführen:

dashboard with hello_hapi and no build info

Klicken Sie auf den Repository-Namen vonhello_hapi, um eine Detailansicht für das Repository aufzurufen. Es wird einige Registerkarten geben, auf denen wir die Einstellungen aktualisieren, Geheimnisse wie Token und Kennwörter hinzufügen und einbettbare Build-Status-Abzeichen erhalten können. Standardmäßig befinden wir uns auf der RegisterkarteBuilds, und es sind noch keine Builds aufgeführt.

hello_hapi repo details with no builds

Lass uns jetzt einen Build auslösen.

Lassen Sie Ihre Drone-Seite geöffnet und navigieren Sie zum GitHub-Repository vonhello_hapiin einem anderen Tab oder Fenster. Wir werden dem Projekt eine Datei hinzufügen, um einen Build auszulösen. Jede Datei reicht aus. Klicken Sie auf die SchaltflächeCreate new file oben in der Dateiliste Ihres Repos:

Create file button on GitHub screenshot

Wählen Sie einen beliebigen Dateinamen. In diesem Fall haben wirtrigger-file gewählt. Geben Sie einen beliebigen Inhalt ein:

Filename and content creation on GitHub screenshot

Scrollen Sie dann zum Ende des Inhaltseditors und klicken Sie auf die SchaltflächeCommit new file:

Commit new file on GitHub screenshot

Nach dem Festschreiben benachrichtigt GitHub unsere Drone-Installation über die Änderung. Drone startet dann einen neuen Build. Wechseln Sie zurück zu Ihrem Drone-Browserfenster. Die Benutzeroberfläche sollte ziemlich schnell aktualisiert werden und ein sich drehender Pfeil zeigt an, dass ein Build ausgeführt wird.

Drone dashboard with build in progress

Möglicherweise ist der Vorgang bereits abgeschlossen, wenn Sie einige Momente gebraucht haben, um zu Drone zurückzukehren. Schauen wir uns als nächstes die Build-Details an.

Anzeigen der CI / CD-Ergebnisse

Klicken Sie auf den Build, um eine Detailansicht aufzurufen. Wenn die Erstellung noch nicht abgeschlossen ist, können Sie jeden Pipelineschritt in Echtzeit beobachten.

Drone build details

Sie können für jeden Erstellungsschritt auf die Offenlegungspfeile klicken, um weitere Details anzuzeigen. Hier ist die Ausgabe unserestest-Schritts:

Drone build step details

Wenn der Schritt noch ausgeführt wird, wird durch Klicken auf die SchaltflächeFollow die Ausgabe angezeigt, sobald sie ausgeführt wird.

Beachten Sie, dass es eineclone-Stufe gibt, die wir in unserer.drone.yml-Datei nicht definiert haben. Dies ist immer vorhanden und gibt Aufschluss darüber, wie Drone Ihren Quellcode vor dem Build abgerufen hat.

Fazit

In diesem Tutorial haben wir ein Demonstrations-Repository gegabelt, die Konfigurationsdatei von.drone.ymluntersucht und unser Repository mit Drone erstellt und getestet.

Weitere Informationen zum Konfigurieren von Drone zum Erstellen, Testen und Bereitstellen Ihres Projekts finden Sie unterDrone documentation.