Wenn Sie nach einer Möglichkeit suchen, Ihre CircleCI Docker-Images zu testen und bereitzustellen, kann die Erstellung einer CI/CD-Pipeline einen langen Weg zur Verbesserung der Softwareauslieferung bedeuten.
In diesem Tutorial erfahren Sie, wie Sie potenziell eine CI/CD-Pipeline für Ihr Docker-Image mit CircleCI entwickeln können.
Lesen Sie weiter und stellen Sie Ihre Docker-Images bereit, nur wenn sie den Test bestehen!
Voraussetzungen
In diesem Tutorial wird eine praktische Demonstration durchgeführt. Wenn Sie mitmachen möchten, stellen Sie bitte sicher, dass Sie Folgendes haben:
- A GitHub account and GitHub repository that is already set up.
- A CircleCI account linked to your GitHub account.
- A Linux machine – This tutorial uses Ubuntu 20.04.3 LTS.
Erstellen eines Docker-Images einer Python-basierten Anwendung
Bevor Sie mit der Erstellung einer CI/CD-Pipeline beginnen, erstellen Sie zunächst ein Docker-Image, das auf einer Python-Anwendung basiert, die Texte in einem Webbrowser anzeigt. Sie gehen kurz darauf ein, wie die Anwendung erstellt wird, schreiben die Testfälle für die Anwendung und containerisieren dann die Anwendung.
1. Öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl aus, um Flask und Pytest zu installieren
. Flask ist ein Framework, das zur Entwicklung von Webanwendungen in Python verwendet wird, während Pytest zum Schreiben von Tests für Python-Code verwendet wird.
2. Erstellen Sie als nächstes ein Projektverzeichnis mit Ihrem bevorzugten Namen, das Projektverzeichnis heißt jedoch in diesem Beispiel flask-circleci
. In diesem Verzeichnis werden die Ressourcen für dieses Tutorial gespeichert.
3. Erstellen Sie eine Datei namens flask-circleci/main.py und füllen Sie den folgenden Code ein.
Der untenstehende Code zeigt den Text „Willkommen auf meiner Flask-App“ auf einer Startseite im Browser an.
4. Erstellen Sie nun eine weitere Datei namens flask-circleci/test_main.py und kopieren/Einfügen Sie den folgenden Code.
Der untenstehende Code erstellt einen Testclient für Ihre Anwendung.
Pytest erfordert, dass der Name Ihrer Testdatei mit test_ beginnt, wie unten gezeigt.
5. Führen Sie die folgenden Befehle aus, um zu Ihrem Projektverzeichnis (flask-circleci
) zu navigieren und den Test für Ihr Projekt auszuführen.
Wenn der Test erfolgreich ist, erhalten Sie 100% Fortschritt, wie unten gezeigt.

6. Erstellen Sie als nächstes eine Textdatei (requirements.txt), um Ihre Abhängigkeiten im Stammverzeichnis zu dokumentieren, und füllen Sie den untenstehenden Text aus. Diese Datei ist wichtig beim Erstellen Ihres Docker-Images, damit es ordnungsgemäß funktioniert.
7. Erstellen Sie zuletzt eine neue Datei (flask-circleci/Dockerfile) und schreiben Sie die Anweisungen unten in die Dockerfile, um Ihr Docker-Image zu erstellen.
Die Anweisungen in der Dockerfile führen folgendes aus:
- Erstellen Sie eine Datei in Ihrem Image.
- Kopieren Sie alle Dateien im aktuellen Verzeichnis (flask-circleci).
- Führen Sie Ihren Code aus.
Erstellen einer CircleCI CI/CD-Pipeline
Jetzt haben Sie Ihr Docker-Image bereit, Sie werden eine CI/CD-Pipeline erstellen, um Ihren Code zu testen, und wenn alle Tests bestanden sind, wird das Docker-Image auf Docker Hub hochgeladen. Docker Hub ist ein Dienst ähnlich wie GitHub, jedoch für Docker-Images, der Ihnen dabei hilft, Container-Images mit Ihrem Team oder anderen Entwicklern zu finden und zu teilen.
Um die CI/CD-Pipeline zu erstellen, befolgen Sie die folgenden Schritte:
1. Öffnen Sie Ihren bevorzugten Webbrowser und melden Sie sich bei Ihrem Docker Hub-Konto an.
2. Klicken Sie auf der Startseite von Docker Hub auf die Option Repository erstellen, um ein Repository auf Docker Hub zu erstellen.

3. Legen Sie einen eindeutigen Namen für Ihr Repository fest. In diesem Tutorial wird ein Repository namens circleci-tutorial verwendet, wie unten gezeigt.

4. Erstellen Sie eine neue Datei (flask-circleci/config.yml) im Stammverzeichnis Ihres Projekts und kopieren Sie den unten stehenden Code in die Datei config.yml.
Der folgende Code verwendet ein fertiges Python-Image, um die Abhängigkeiten zu installieren und die Unittests auszuführen, um Ihr Docker-Image zu erstellen und in Ihr Repository Docker Hub hochzuladen.
Für ein Live-Projekt möchten Sie normalerweise Ihren Benutzernamen und Ihr Passwort innerhalb von CircleCI schützen oder vielleicht in einer .env-Datei speichern.
5. Führen Sie abschließend die folgenden Befehle im Stammverzeichnis Ihres Projekts aus, um den Code mit commit
und push
in Ihr GitHub-Repository hochzuladen (flask-circleci/config.yml).
Aktivieren der CircleCI CI/CD-Pipeline
Sie haben gerade Ihre CircleCI CI/CD-Pipeline erstellt, aber im Moment tut sie nicht viel. Sie müssen Ihre Pipeline aktivieren, indem Sie ein Projekt in Ihrem CircleCI-Konto einrichten.
1. Melden Sie sich mit Ihrem GitHub-Konto in Ihrem CircleCI-Konto in Ihrem Webbrowser an.
2. Klicken Sie anschließend auf die Registerkarte Projekte in der linken Seitenleiste und klicken Sie auf die Schaltfläche Projekt einrichten auf der rechten Seite Ihres Projekts, um die CircleCI-Pipeline für das Projekt zu aktivieren.
Da Sie sich bei CircleCI mit Ihrem GitHub-Konto angemeldet haben, werden Ihre Projekte mit CircleCI synchronisiert, wie im Bild unten dargestellt.

3. Navigieren Sie zurück zur Registerkarte Dashboard und Sie sehen den Status Erfolg. Der Status Erfolg zeigt an, dass alles wie erwartet ausgeführt wurde und das Bild in Ihr Docker Hub-Repository hochgeladen wurde.
Klicken Sie auf „Build“, um alle Schritte anzuzeigen, die in der Pipeline ausgeführt wurden.

Unten sehen Sie die Liste der Schritte, die CircleCI ausgeführt hat, um die Pipeline auszuführen.

4. Wechseln Sie schließlich zu Ihrem Docker Hub-Repository zurück und Sie sehen das Bild, das Sie über die CircleCI-Pipeline auf Docker Hub hochgeladen haben.

Änderungen in GitHub hochladen, um die CircleCI-Pipeline auszulösen.
1. Derzeit haben Sie bereits eine funktionierende CircleCI-Pipeline. Aber vielleicht haben Sie Änderungen an Ihrem Projekt vorgenommen. Wenn ja, wie würden Sie wissen, ob die Pipeline noch funktioniert? Sie können CircleCI auslösen, indem Sie Änderungen an Ihrem GitHub-Repository hochladen und sehen, ob der Test erfolgreich ist.
1. Ersetzen Sie auf Ihrem lokalen Computer den Code, den Sie in test_main.py haben, durch den untenstehenden Code. Der folgende Code stellt absichtlich sicher, dass der Test fehlschlägt, weil sich der Statuscode von 200
auf 400
geändert hat.
2. Ersetzen Sie als nächstes die Schritte
in der config.yml, die das Docker-Image erstellen und es in Docker Hub hochladen, durch den untenstehenden Code.
Im folgenden Code ändern Sie nur die Version, um sicherzustellen, dass nur neue Änderungen in Ihr GitHub-Repository hochgeladen werden.
3. Führen Sie die folgenden Befehle im Stammverzeichnis Ihres Projekts aus, um den Code in Ihr GitHub-Repository zu übernehmen
und zu hochladen
.
4. Navigieren Sie nun zu Ihrem CircleCI-Dashboard, und Sie werden feststellen, dass der Build fehlgeschlagen ist, wie unten gezeigt.
Klicken Sie auf „Build“, um die Schritte zu sehen, die unternommen wurden, um die Änderungen zu überprüfen, und bestätigen Sie, was den Build-Fehler verursacht hat.


5. Navigieren Sie schließlich zu Ihrem Docker Hub-Repository und bestätigen Sie, dass die Änderungen nicht übertragen wurden.
Wie Sie im Bild unten sehen können, wurde v2 nicht hochgeladen, weil der Test fehlgeschlagen ist.

Schlussfolgerung
In diesem Tutorial haben Sie gelernt, wie Sie Tests schreiben und Ihre Python-Anwendung dockerisieren können. Sie haben eine CI/CD-Pipeline mit CircleCI erstellt, die den Test für Ihre Anwendung ausführt und Ihr Docker-Image in Docker Hub hochlädt.
Zu diesem Zeitpunkt haben Sie bereits ein grundlegendes Verständnis dafür, wie man eine CI/CD-Pipeline mit CircleCI entwickelt. Wie beabsichtigen Sie, dieses neu gewonnene Wissen zu nutzen? Vielleicht indem Sie eine CI/CD-Pipeline erstellen, die Ihr Docker-Image auf Heroku bereitstellt?
Source:
https://adamtheautomator.com/circleci-docker-images/