JavaRush /Java-Blog /Random-DE /Kontinuierliche Integration
Nikita Koliadin
Level 40
Днепр

Kontinuierliche Integration

Veröffentlicht in der Gruppe Random-DE
Grüße, Kollegen! Sind Sie es leid, Ihren Computer ständig dazu zwingen zu müssen, ein Projekt zu erstellen? Dann ist dieser Artikel genau das Richtige für Sie! Kontinuierliche Integration – 1In diesem Artikel werde ich versuchen, das Material zur kontinuierlichen Integration (im Folgenden kurz CI) kurz und klar darzustellen und so einfache Fragen zu beantworten wie: „Was ist das?“, „Warum?“ und warum?" und ich werde ein Beispiel eines Testprojekts geben. Dieser Artikel richtet sich an einen erfahrenen Benutzer, der zumindest mit Build System: Maven vertraut ist , weiß, wie man Git verwendet und weiß, wie man Projekte auf GitHub pusht ;

„Was ist kontinuierliche Integration?“

Sehen wir uns an, was Wiki uns zu dieser Frage sagt : Kontinuierliche Integration (CI, engl. Continuous Integration) ist eine Softwareentwicklungspraxis, die darin besteht, Arbeitskopien mehrmals täglich in einem gemeinsamen Hauptentwicklungszweig zusammenzuführen und zu Beginn häufig automatisierte Builds des Projekts durchzuführen Erkennung potenzieller Fehler und Lösungen für Integrationsprobleme. Beängstigend, nicht wahr? Versuchen wir, diesen Begriff mit einfachen Worten zu erklären: Kontinuierliche Integration ist ein System zum Erstellen und automatisierten Testen von Software mit bestimmten Konfigurationen auf bestimmten Maschinen, um Fehler und Inkompatibilitäten zu erkennen. Okay, kein Problem, wir haben es herausgefunden, aber es stellt sich folgende logische Frage:

Warum brauchen wir CI?

Stellen wir uns einfach vor, Sie schreiben ein großes Projekt und müssen Funktionen hinzufügen/ändern. Sie schreiben es erfolgreich, schreiben Tests, starten es und alles scheint in Ordnung zu sein, aber nein. Es gibt Situationen, in denen sich eine Änderung einer Funktionalität auf eine andere, eine andere auf eine dritte usw. auswirkt, bis irgendwo ein Fehler auftritt und ein Fehler auftritt. Ja, man kann sagen, dass es sich höchstwahrscheinlich um ein schlecht konzipiertes Projekt handelt, und vielleicht haben Sie Recht, aber was ist, wenn das nicht der Fall ist und diese Verbindungen wirklich vorhanden sein sollten? Und was ist, wenn Sie ein Projekt mehr als einmal schreiben und erstellen, was häufig der Fall ist? Sie haben Ihre neu geschriebene Funktionalität getestet und ein positives Ergebnis erhalten. Sie haben schnell eine Zusage gemacht, dann irgendwohin gedrängt und schon darüber nachgedacht, wie Sie zu Hause eine Zigarre rauchen und dabei teuren Whiskey trinken, aber nein. Leider sagt Ihr Kollege oder Chef, egal wer, dass aufgrund Ihres Commits der gesamte Build abgestürzt ist. Sie sagen fassungslos, dass Sie Programmierer sind und alles getestet haben. Aber oft fehlt einfach die Zeit, das gesamte Projekt ständig zu testen, und Sie haben nur den Teil des Codes getestet, an dem Sie Änderungen vorgenommen haben, und nicht die gesamte Assembly als Ganzes. Hier kommt uns CI zu Hilfe. Bei jedem Push auf eine beliebige Ressource erstellt CI Ihr Projekt von Grund auf, führt ALLE Tests durch und nur wenn alle Tests bestanden und das Projekt erstellt wurde, erhält der Build den Status „Bestanden“ . Andernfalls haben Sie die Möglichkeit, ein Comeback zu machen und zu sehen, was schief gelaufen ist. Es ist also an der Zeit, die Frage zu stellen : „Warum das und nicht anders?“ und werfen Sie einen Blick auf die Softwareimplementierung. Beispiel Wie ich bereits sagte, richtet sich der Artikel an diejenigen, die sich mit Maven und Git auskennen. Daher hoffe ich, dass Sie wissen, wie und was ich neben dem Einrichten von CI usw. mache.
  1. Lassen Sie uns zunächst ein einfaches Maven-Testprojekt erstellen und darin eine Klasse erstellen, die „Hello World!“ ausgibt. und führt eine einfache Operation aus. Schreiben wir den einfachsten Test für diese Klasse.

    Als Ergebnis sollten wir eine primitive Projektstruktur haben:

    Kontinuierliche Integration – 2

    Alle Quellen werden auf meinem GitHub sein. Es spielt keine Rolle, was Sie in Ihrem Main schreiben und welche Tests es geben wird.

  2. Wir pushen unser Projekt auf GitHub.

  3. Jetzt kommt der spaßige Teil. Von CI habe ich mich aufgrund der Verfügbarkeit und Zuverlässigkeit für Travis CI entschieden. Travis verwendet GitHub, um seinen Quellcode zu hosten.

    Gehen Sie also zur Travis CI- Website und melden Sie sich über GitHub an. Im Profil verbinden wir unser Projekt:

    Kontinuierliche Integration – 3

    Mit jedem Druck ist alles montagebereit, aber die Frage ist: WIE wird der Zusammenbau durchgeführt?

  4. Wir kehren zu unserer geliebten IDEA zurück und erstellen eine .travis.yml- Datei

    Diese Datei ist für die Travis-Build-Konfiguration verantwortlich. Schauen wir uns die beliebteste Einstellung an:

    • Sie müssen die Sprache angeben , in der das Projekt implementiert wird;
    • Geben Sie den Pfad zu Verzeichnissen an , um den Build schneller zu machen.
    • Geben Sie die Methode für Benachrichtigungen über erfolgreiche oder fehlgeschlagene Montage an.

    So sollte eine typische Travis-Konfiguration aussehen:

    # https://docs.travis-ci.com/user/languages/java/
    language: java
    jdk: oraclejdk9
    
    # Improve Build Speed https://dzone.com/articles/travis-ci-tutorial-java-projects
    cache:
      directories:
      - $HOME/.m2
    
    # Notifications https://docs.travis-ci.com/user/notifications/
    notifications:
      email:
        recipients:
          - qThegamEp@gmail.com
        on_success: always # default: change
        on_failure: always # default: always

    Der Übersichtlichkeit halber habe ich Kommentare mit Links hinzugefügt.

  5. Wir pushen erneut zu GitHub und öffnen die Travis- Website , wählen das Projekt aus und überwachen den Build. Als Ergebnis erhalten wir eine Benachrichtigung über einen erfolgreichen Build:

    Kontinuierliche Integration – 4 Kontinuierliche Integration – 5

    Außerdem können wir auf der Seite ein Abzeichen mit der erfolgreichen Montage unseres Projekts sehen, das wir in unsere README.md einfügen können:

    Kontinuierliche Integration – 6
Nützliche Links: Der Text kann Fehler und Auslassungen enthalten. Vielen Dank für Ihre Aufmerksamkeit!
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION