Was ist CI?
Continuous Integration, CI, ist das Zusammenführen von Arbeitskopien aller Entwickler zu einer gemeinsamen Hauptlinie mehrmals täglich. (wikipedia)
Es ist ein Rätsel, die Integration zu hören, aber es ist im Grunde eine Entwicklungsmethode, die das Erstellen, Testen und Bereitstellen automatisiert. Durch die Einführung von CI scheint die Softwareentwicklung effizient durchgeführt werden zu können.
In diesem Artikel möchten wir eine Umgebung erstellen, in der CircleCI und Github verknüpft sind, sodass Tests automatisch ausgeführt werden, wenn der Python-Entwicklungscode übertragen wird. Referenzartikel: https://scotch.io/tutorials/continuous-integration-with-python-and-circle-ci
Registrieren Sie ein Konto und verknüpfen Sie CircleCI und Github.
Erstellen Sie eine Projektdatei wie unten gezeigt.
Ordnerstruktur
+-- pyhton-ci
+-- src
| +-- match.py
+-- tests
+-- math-test.py
src/math.py
def addition(value1, value2):
if not isinstance(value1, int) and not isinstance(value2, int):
return 'Invalid input'
else:
return value1 + value2
tests/math-test.py
import unittest
from src.math import addition
class MathTest(unittest.TestCase):
def test_addition(self):
actual = addition(3,4)
expected = 8 #Entspricht dem Ausführungsergebnis
self.assertEqual(actual, expected)
Führen Sie unittest über die Befehlszeile aus
nosetests tests/math-test.py
Bestätigen Sie, dass "AssertionError: 7! = 8" ausgegeben wird und der Test fehlgeschlagen ist.
Fügen Sie Ihrem Projekt die folgenden Dateien hinzu
+-- pyhton-ci
+-- src
| +-- match.py
+-- tests
| +-- math-test.py
+-- requirements.txt
+-- .circleci
+-- config.yml
Abhängigkeitsverwaltungsdatei
requirements.txt
nose==1.3.7
circleCI-Konfigurationsdatei
version: 2
jobs:
build:
working_directoyr: ~/python-ci
docker:
- image: circleci/python:3.6.4
steps:
- checkout
- run:
command: sudo pip install -r requirements.txt
- run:
command: nosetests tests/math-test.py
Erstellen Sie ein neues Github-Repository und verschieben Sie den gesamten Projektordner in den Entwicklungszweig.
git push origin develop
Wählen Sie im CircleCI-Bildschirm Projekte-> Repository-> Build starten-> Manuell hinzufügen-> Build starten Und wählen Sie
Die Testergebnisse werden auf dem Bildschirm Pipelines angezeigt.
Wählen Sie im Github-Repository Einstellungen-> Zweige-Registerkarte-> Regel hinzufügen
Geben Sie "Entwickeln" (Name des Entwicklungszweigs) in das Muster des Zweignamens ein
Require status checks to pass before merging
Require branches to be up to date before merging
Aktivieren Sie das Kontrollkästchen.
Schneiden Sie den Arbeitszweig entsprechend ab und senden Sie eine Pull-Anfrage zur Entwicklung. Anschließend wird die folgende Statusprüfung auf dem Bildschirm für die Pull-Anforderung durchgeführt.
Ändern Sie den Testcode wie folgt und drücken Sie erneut.
math-test.py
class MathTest(unittest.TestCase):
def test_addition(self):
actual = addition(3,4)
expected = 7 #Entspricht dem Ausführungsergebnis
self.assertEqual(actual, expected)
Ich konnte bestätigen, dass es den Test bestanden hat!
Recommended Posts