[Erstellen einer CI-Umgebung in 2 Stunden] Verfahren zum Erstellen eines Python-Webservers mit CircleCI und zum Bestehen eines HTTP-Kommunikationstests

Die Funktion von CircleCI besteht darin, dass Sie die CI-Umgebung kostenlos verwenden können, wenn Sie über eine Umgebung verfügen. Nach Abschluss der Umgebungskonstruktion wird der CI-Container für jedes Commit auf GitHub gestartet und der definierte automatisierte Test für den Container ausgeführt. In diesem Beitrag teste ich einen Webserver, der mit Python 3.5 und Flask auf CircleCI erstellt wurde und Anforderungen verwendet, um auf den Webserver im Container zuzugreifen und den HTTP-Statuscode 200 zurückzugeben.

Betriebsablauf der CI-Umgebung in 2 Stunden

Testen Sie einen mit Python3.5 + Flask erstellten Webserver

スクリーンショット 2016-02-26 21.06.22.png

In diesem Artikel starten wir einen Webserver mit Flask, einem Python-Webframework, auf CircleCI und führen einen einfachen Test durch, um auf den HTTP-Endpunkt zuzugreifen und den HTTP-Status zu überprüfen.

CircleCIs Denkweise über Jenkins Handwerkskunst

Das Problem der Handwerkskunst von Jenkins ist ein ungewöhnlich geprägtes Wort, das in meinem engen Beobachtungsbereich gesagt wird. Das Problem ist, dass, wenn Sie Jenkins als CI-Umgebung in PJ einfügen, im Allgemeinen Jenkins-Handwerker auftreten und magische Umbauten stattfinden und dies praktisch ist. Wenn die Jenkins-Umgebung jedoch beschädigt ist, obwohl sie nur mit Jenkins eingesetzt werden kann, werden die Handwerker eingesetzt Ich kann es nur reparieren. Ist oft das Problem. Ich denke, dass eine Tragödie oft in dem Stadium auftritt, in dem Jenkins zu einer unverzichtbaren Infrastruktur wird und es nicht erforderlich ist, nicht auf das Niveau der Produktionsumgebung zu fallen. Ein angesehener Senior sagte, er wolle sich nach Möglichkeit nicht in den Jenkins-Cluster einmischen.

CircleCI verursacht dieses Problem nicht, da alle Informationen zur CI-Umgebung ** in circle.yml ** zusammengefasst sind. Das Problem des Überpackens des SDK in einem Jenkins tritt auch nicht auf, da für jeden Test ein separater Container erstellt wird.

CircleCI Bauanleitung

1. Haben Sie ein GitHub-Konto
2. Registrieren Sie sich als Benutzer auf der CircleCI-Anmeldeseite (https://circleci.com/signup/).
3. Wählen Sie ein GitHub-Repository aus und registrieren Sie es
4. Hallo Welt auf CircleCI

Erstellen Sie "circle.yml" im obersten Verzeichnis des Repositorys und schreiben Sie Folgendes zum Festschreiben. In dem Moment, in dem Sie sich verpflichten, wird es angeschlossen und der Test wird automatisch auf CircleCI gestartet.

circle.yml


test:
  override:
    - pwd ~
    - ifconfig
    - echo HelloWorld
    - exit 0

■ Ausführungsergebnis スクリーンショット 2016-02-26 19.23.07.png

5. Erstellen Sie eine Python 3.5-Umgebung auf CircleCI

In der offiziellen Dokumentation hier (https://circleci.com/docs/environment#python) finden Sie die von CircleCI unterstützten Python-Versionen. Wenn Sie ein Commit durchführen, wird der Test automatisch ausgeführt.

circle.yml


machine:
  python:
    version: 3.5.0

test:
  override:
    - pwd ~
    - ifconfig
    - echo HelloWorld
    - exit 0
6. Erstellen Sie eine Umgebung mit pip

pip ist ein Gem-Paketverwaltungssystem in Ruby. Die Standardmethode von CicleCI besteht darin, den Paketnamen und die Version in "require.txt" im obersten Verzeichnis des Repositorys aufzulisten. Weitere Informationen finden Sie in der offiziellen Dokumentation zu Python (https://circleci.com/docs/language-python).

circle.yml


machine:
  python:
    version: 3.5.0

dependencies:
  pre:
    - pip install -r ./requirements.txt

test:
  override:
    - pwd ~
    - ifconfig
    - echo HelloWorld
    - exit 0

requirements.txt


Flask==0.10.1
Flask-Script==2.0.5
pytz==2015.7
redis==2.10.5
requests==2.9.1
six==1.10.0
SQLAlchemy==1.0.11
gunicorn==19.4.5
pytest==2.8.5
7. Führen Sie den Server im Hintergrund aus

** Der Grund für die Ausführung im Hintergrund ist, dass der Prozess aufhört, auf den Abschluss des Runservers zu warten, wenn Sie nicht parallel ausgeführt werden, und der Test nicht beendet wird. ** ** **

Um das Python-Skript auf CircleCI auszuführen, müssen Sie Berechtigungen mit chmod erteilen und PYTHONPATH festlegen. Flask but manage.py ist der Effekt des Customizings mit Flask-Script. Flask-Script ist nützlich für erfahrene Django-Benutzer. Es ist praktisch, den Befehl curl in test: override: zu schreiben, um zu überprüfen, ob der Server ausgeführt wird.

circle.yml


machine:
  python:
    version: 3.5.0

dependencies:
  pre:
    - chmod -R 777 ./example
    - pip install -r ./requirements.txt
    - export PYTHONPATH="/home/ubuntu/flask_template/example/application"
    - python ./application/manage.py runserver:
          background: true
    - sleep 5

test:
  override:
    - pwd ~
    - ifconfig
    - echo HelloWorld
    - curl http://127.0.0.1/example
    - exit 0
8. Bestehen Sie den Test

Schreiben Sie einen Test mit py.test. Es ist so einfach wie das Überprüfen des HttpStatus. Diesmal handelt es sich um ein Beispiel, daher ist der Inhalt derselbe

■ Code für py.test

test_example.py


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import requests


def test_example():
    host = "127.0.0.1:5000"
    url = 'http://{}/example/'.format(host)
    print(url)
    response = requests.get(url)
    print(response.text)
    assert response.status_code == 200
    assert "Error" not in response.text

circle.yml


machine:
  python:
    version: 3.5.0

dependencies:
  pre:
    - chmod -R 777 ./example
    - pip install -r ./requirements.txt
    - export PYTHONPATH="/home/ubuntu/flask_template/example/application"
    - python ./application/manage.py runserver:
          background: true
    - sleep 5

test:
  override:
    - pwd ~
    - ifconfig
    - echo HelloWorld
    - curl http://127.0.0.1/example
    - py.test ./example/tests/test_example.py
    - exit 0

Wenn Sie ein Commit durchführen und der Test erfolgreich ist, ist die Arbeit abgeschlossen

9. Benachrichtigen Sie HipChat über die Ergebnisse

Sie können das Benachrichtigungsziel auf der Seite Projekteinstellungen> Benachrichtigungen festlegen. Ist es leicht zu verstehen, wenn Sie offizielles Dokument benachrichtigen lesen?

■ Benachrichtigt スクリーンショット 2016-02-26 20.47.16.png

Bereich, der in diesem Artikel nicht behandelt wird

Ich habe MySQL noch nicht ausprobiert, daher würde ich es gerne in Zukunft ausprobieren. Offizielle Einstellungen der Dokumentendatenbank

Eindrücke vom Berühren von CircleCI

Zuerst verstand ich die Argumentation nicht und die Lernkosten waren hoch, so dass der erste Schritt schwierig war. Ich fand es sehr gut, weil die offiziellen Dokumente umfangreich waren. Aufgrund der eingeschränkten Verwendung des Testens des Python-Webframeworks war ich der Meinung, dass es möglich wäre, eine Konfigurationsdatei in Massenproduktion zu erstellen, wenn jemand hart daran arbeitet, sie zu schreiben.

Recommended Posts

[Erstellen einer CI-Umgebung in 2 Stunden] Verfahren zum Erstellen eines Python-Webservers mit CircleCI und zum Bestehen eines HTTP-Kommunikationstests
Erstellen und testen Sie eine CI-Umgebung für mehrere Versionen von Python
Erstellen Sie einen leichtgewichtigen Server in Python und hören Sie sich die HTTP-Erweiterungen von Scratch 2 an
Erstellen einer Anaconda-Umgebung für Python mit pyenv
Starten Sie einen Webserver mit Python und Flask
Stellen Sie Docker in Windows Home und führen Sie einen einfachen Webserver mit Python aus
[Python] So erstellen Sie eine lokale Webserverumgebung mit SimpleHTTPServer und CGIHTTPServer
Erstellen einer R- und Python Docker-Arbeitsumgebung
Erstellen einer Umgebung für die Verarbeitung natürlicher Sprache mit Python
Vorgehensweise zum Erstellen einer CDK-Umgebung unter Windows (Python)
Installationsverfahren für Python und Ansible mit einer bestimmten Version
Bibliothek zur Angabe eines Nameservers in Python und Dig
Ein modernes Verfahren zum Erstellen von Umgebungen für diejenigen, die sofort mit Python beginnen möchten
Erstellen einer Docker-Arbeitsumgebung für R und Python 2: Japanische Unterstützung
Wie wäre es mit Anaconda zum Erstellen einer maschinellen Lernumgebung mit Python?
Erstellen einer Windows 7-Umgebung für eine Einführung in das maschinelle Lernen mit Python
Schreiben Sie einen HTTP / 2-Server in Python
Erstellen einer virtuellen Umgebung mit Python 3
Vorgehensweise zum Erstellen einer Kube-Umgebung unter Amazon Linux2 (aws) ~ (mit Bonus)
Erstellen Sie mit Docker eine CentOS Linux 8-Umgebung und starten Sie Apache HTTP Server
[GCP] Verfahren zum Erstellen einer Webanwendung mit Cloud-Funktionen (Python + Flask)
[Pyenv] Erstellen einer Python-Umgebung mit Ubuntu 16.04
[Python] Erstellen einer Umgebung mit Anaconda [Mac]
Erstellen einer Python 3.6-Umgebung mit Windows + PowerShell
Erstellen einer Python-Entwicklungsumgebung für die KI-Entwicklung
Hinweise von der Installation von Homebrew bis zum Erstellen einer Anaconda-Umgebung für Python mit pyenv
Auf der Suche nach einer effizienten Möglichkeit, eine Docker-Datei mit Python mit Gedichten zu schreiben
Erstellen Sie in 1 Minute eine Vim + Python-Testumgebung
Erstellen einer Umgebung zum Ausführen von Python-Skripten (für Mac)
Vorgehensweise zum Erstellen eines mit Python erstellten LineBot
Erstellen Sie eine virtuelle Umgebung mit conda in Python
Starten Sie mit Docker einen einfachen Python-Webserver
Richten Sie einen Test-SMTP-Server in Python ein.
Verschiedene Befehle zum Erstellen einer Umgebung mit Apache
[Python] Webentwicklungsvorbereitung (Erstellen einer virtuellen Umgebung)
Denken Sie daran, eine Python 3-Umgebung in einer Mac-Umgebung zu erstellen
Befehle zum Erstellen einer Python3-Umgebung mit virtualenv
Arbeiten Sie in einer virtuellen Umgebung mit Python virtualenv.
Verfahren zum Erstellen einer Python-Isolationsumgebung (venv-Umgebung)
Versuchen Sie, mit VisualStudioCode eine Umgebung für MayaPython zu erstellen
Vorgehensweise beim Erstellen von Ubuntu als virtuelle Umgebung mit Vagrant + Virtualbox für LPIC Level 1.
Automatisieren Sie das Entfernen des Hintergrunds für die neuesten Porträts in einem Verzeichnis mit Python und API
[Python] Erstellen einer Umgebung für die Wettbewerbsprogrammierung mit Atom (input () kann verwendet werden!) [Mac]
Erstellen Sie mit PyInstaller eine exe-Datei, die in einer Windows-Umgebung ohne Python funktioniert
Schreiben Sie über das Erstellen einer Python-Umgebung zum Schreiben von Qiita Qiita
Erstellen Sie mit Python eine interaktive Umgebung für maschinelles Lernen
Empfehlung zum Erstellen einer tragbaren Python-Umgebung mit conda
Erstellen Sie mit pyenv-virtualenv eine Python-Umgebung für jedes Verzeichnis
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Erstellen Sie einen Webserver in der Sprache Go (net / http) (1)
conda Hinweis: Erstellen einer Python-Umgebung mit Spacon ITO
Erstellen Sie mit Quarry einen gefälschten Minecraft-Server in Python
Konstruktionsnotiz für eine maschinelle Lernumgebung von Python
HTTP-Server und HTTP-Client mit Socket (+ Webbrowser) - Python3
Erstellen Sie mit AirtestIDE eine Umgebung für die Testautomatisierung (Tipps)
Verfahren von der Umgebungskonstruktion bis zum Betriebstest von testinfra, einem von Python erstellten Testwerkzeug für die Serverumgebung
[Sakura Rental Server] (Für Anfänger) So erstellen Sie eine Umgebung für Python, Pyenv und Flask. Für csh