Unsere Docker-Datei erstellt die Anwendungsumgebung (z. B. env-Variablen, Installieren von Bibliotheken mit apt-get usw.). Außerdem wird der Python-Anwendungscode aus seinem Git-Repo abgerufen und kopiert.
Wir diskutieren jedoch, ob die Anwendungstests (einige Einheiten, einige Integrationen) in einen Docker- RUN
Befehl (z. B. RUN /bin/bash -c "source activate cool_env; pytest"
) oder nach dem Build mithilfe des CI-Stacks (z. B. Jenkins, Openshift) eingefügt werden sollen, um die Tests für den erstellten Container auszuführen.
Was sind die Vor- und Nachteile von jedem?
Antworten:
Ich unterstütze J.Does Vorschlag für separate Docker-Dateien für jede Build- und Testphase. Ein solcher Ansatz ermöglicht Ihnen auch:
quelle
Wenn Sie alles im selben Container ausführen ...
PRO: Sie haben die CasC-Herausforderung für die Inline-Konfiguration der Testumgebung gelöst
CON: Sie vermissen den Blackbox-Testteil. Stellen Sie sich vor, Ihr Container würde keine Verbindungen von außen akzeptieren. Autsch!
Mögliche Lösung: Ich würde mich daher für eine mehrstufige deklarative Docker-basierte Pipeline entscheiden: eine Docker-Umgebung für jede Phase, in der Artefakte entlang kaskadieren.
quelle