Der Inhalt des dritten Tages der Studiensitzung des Titels wird beschrieben. Auf der folgenden Übersichtsseite finden Sie den Inhalt des ganzen Tages.
--Erstellen eines Container-Images zum Testen
Erstellen Sie einen Container, um einen einfachen Test auszuführen. Senden Sie eine Anfrage mit "Python" und bestimmen Sie das Ergebnis. Wenn der an die Anforderung zurückgegebene Inhalt die Zeichenfolge "puyopuyo" enthält, die den Vorgang ausführlich erläutert, endet er normalerweise mit "sys.exit (0)". Im Gegenteil, wenn es nicht enthalten ist, endet es abnormal mit "sys.exit (1)". Dies führt zum späteren "GitLab CI / CD".
import os
import requests
import sys
url = os.getenv('URL', 'http://localhost:3000')
check_str = os.getenv('CHECK_STR', 'Puyopuyo')
try:
r_get = requests.get(url)
response = True if r_get.ok else r_get.reason
print(r_get.text)
if r_get.text.find(check_str) == -1:
print(check_str + "Es ist kein Problem! !!")
sys.exit(1)
else:
print(check_str + "Also ist es okay.")
sys.exit(0)
except requests.exceptions.RequestException as e:
response = str(e)
sys.exit(1)
Dieser Test kann auch auf der lokalen Python ausgeführt werden. In der lokalen "Python" -Umgebung müssen "Anfragen" im Voraus "Importieren" sein. Sie können den Test ausführen, indem Sie die folgenden Schritte ausführen.
docker-compose up -d app
http: // localhost: 3000
zugreifen könnenpython test/test.py
Bereiten Sie zunächst eine Docker-Datei vor, um einen Container zu erstellen. alpine
enthält keine Anfragen
, also habe ich es installiert.
■ Dockerfile
FROM python:3.6-alpine
WORKDIR /app
COPY ./*.py /app/
RUN pip install requests
CMD ["python", "test.py" ]
Fügen Sie basierend auf dieser Docker-Datei den Testdienst mit docker-compose.yml hinzu.
■ docker-compose.yml
version: '3'
services:
app:
build:
context: ./app #Dockerfile-Speicherort
image: registry.gitlab.com/tamoco-mocomoco/k8s-test/express:latest
ports: #Portverbindung
- 3000:5000
environment:
PORT: 5000
test:
build:
context: ./test
environment:
URL: http://app:5000
CHECK_STR: "Puyopuyo"
Die Umgebungsvariable überschreibt die URL des Verbindungsziels und die zu überprüfende Zeichenfolge. Was hier zu beachten ist, ist, dass, da die Verbindung innerhalb des Containers hergestellt wird, es sich um "App" handelt oder der Port "5000" ist, was die Portnummer in der Anwendung ist. Als ich es früher mit dem lokalen "Python" ausgeführt habe, habe ich auf die URL und die Portnummer zugegriffen, nachdem ich von "Docker-Compose" übertragen wurde. Es ist jedoch wichtig zu wissen, wo aus dem Container heraus eine Verbindung hergestellt werden soll. Werden.
Sie können einen Container mit Docker-Compose erstellen und testen.
■ Führen Sie den Test in einem Container aus (Erfolg)
$ docker-compose run test
<!DOCTYPE html>
<html>
<head>
<title>Puyopuyo Wadao</title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1>Puyopuyo Wadao</h1>
<p>Willkommen in Puyopuyo Wadao</p>
</body>
</html>
Es ist Puyopuyo, also ist es okay.
Wenn Sie es in einem Container ausführen, müssen Sie es erneut erstellen, wenn sich die ursprüngliche Quelle ändert. Es scheint besser, hier Funktionen wie Hot Reload (ein Mechanismus, der die Quelle im Container automatisch aktualisiert) hinzuzufügen.
Übrigens, wenn Sie möchten, dass der Test fehlschlägt, ändern Sie die Zeichenfolge "Puyopuyo" in "app / express / route / index.js" in "Peeling" usw. und es wird fehlschlagen.
■ Führen Sie den Test im Container aus (Fehler)
$ docker-compose run test
<!DOCTYPE html>
<html>
<head>
<title>Wadao schälen</title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1>Wadao schälen</h1>
<p>Willkommen bei Peeling Wadao</p>
</body>
</html>
Es ist nicht Puyopuyo, also ist es ein Problem! !!
Fügen Sie .gitlab-ci.yml
einen zu testenden Mechanismus in einem Testcontainer hinzu. Wurde geändert, um das Container-Image zu erstellen, wenn der Test bestanden wurde.
■ .gitlab-ci.yml
image: docker:latest
stages:
- test
- build
variables:
DOCKER_DRIVER: overlay
services:
- docker:dind
before_script:
- docker info
- apk update
- apk upgrade
- apk add docker-compose
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker-compose build
test:
stage: test
script:
- docker-compose up -d app
- sleep 5s
- docker-compose run test
build:
stage: build
script:
- docker-compose push
Es wurde bestätigt, dass der Test wie in der Abbildung unten gezeigt durchgeführt wurde.
Bei Erfolg werden die folgenden Ausführungsergebnisse angezeigt.
Wenn dies fehlschlägt, können Sie das Ausführungsergebnis wie folgt überprüfen.
Anfangs bereitete ich einen einfachen Test vor, um das Ergebnis durch Ausführen von "curl" in einem Shell-Skript zu ermitteln. Ich nahm einen Mechanismus an, um "apk add curl" auszuführen, um "curl" zum Container auf CI hinzuzufügen und ihn zu testen, aber ich war ein wenig süchtig danach, also entschied ich mich, ihn mit "python" zu verkleinern.
Wenn Sie tatsächlich einen Testcontainer erstellen, ist es meiner Meinung nach besser, einen Container zu verwenden, der "e2e" -Tests wie "Zypresse" ausführen kann.