Automatisches Code Deployment mit Git und Continuous Integration/Deployment (CI/CD)

Preparation

Local Machine (here MacBook Pro)

macOS

Homebrew
(package management)

Python
(programming language)

Visual Studio Code
(indegrated development environment)

Git
(version control)

GitHub
(collaboration & code deployment)

Docker
(containerization)

AWS CLI
(command line interface for Amazon Web Services)

Production Environment (here AWS EC2)

AWS EC2 – Windows Server

AWS-Berechtigungen konfigurieren
(um auf Ihre EC2-Instanz zugreifen zu können)

Python

Visual Studio Code

Git

GitHub

Docker

Set Up Local Repository

Neues Git-Repository initialisieren:

    • open Visual Studio Code (VS Code)
    • open a project folder in VS Code and name it with [project_name]
    • create .gitignore-file
      –> add files to be ignored
      –> save file
    • click „Terminal“
      –> click „New Terminal“
      (open integrated Terminal in VS Code)
    • type „git init“
      (initialize new local repository)

Dateien zum Repository hinzufügen und ersten Commit machen:

      • type „git add .“
        (add all files to staging area)
      • type „git commit -m „initial commit““
        (create first commit)

Set Up and Connect Remote-Repository

Remote-Repository (auf einer Plattform wie GitHub, GitLab oder Bitbucket) erstellen

  • Gehen Sie zurück zu github.com und melden Sie sich mit Ihrem Benutzernamen und Passwort an
    (Einloggen bei GitHub)
  • Klicken Sie nach dem Login in der oberen rechten Ecke auf das „+“-Symbol und wählen Sie „New repository“
    (Neues Repository erstellen)
  • type [project_name] as repository name
    (Inhalt oder Zweck des Repositorys)
    type description
    (erklären, worum es in Ihrem Repository geht)
  • choose „public“ or „private“ repository
  • Initialize this repository with
    (README-Datei,
    .gitignore-Datei,
    Lizenz)

Lokales Repository mit dem GitHub-Repository verbinden

  • type „git remote add origin https://github.com/[user_name]/[repository_name].git“
    (URL of remote repository)
    (add remote repository)
  • type „git push -u origin main“
    (push to remote repository)

Containerize Application

Dockerfile erstellen

# Verwenden Sie ein offizielles Python-Laufzeit-Image als Eltern-Image
FROM [python_version; e.g. „python:3.8-slim“]

# Setzen Sie das Arbeitsverzeichnis im Container
WORKDIR /[project_folder_name]

# Kopieren Sie die benötigten Dateien in das Arbeitsverzeichnis
COPY requirements.txt ./
COPY [main_script_name; e.g. „main.py“] ./

# Installieren Sie alle benötigten Pakete aus der requirements.txt
RUN pip install –no-cache-dir -r requirements.txt

# Startbefehl für den Container
CMD [„python“, „./[main_script_name; e.g. „main.py“]“]

COPY kopiert Dateien von Ihrem lokalen System in den Container.

RUN führt Befehle aus, hier zum Installieren von Python-Paketen.

CMD gibt den Befehl an, der beim Start des Containers ausgeführt wird.

Dockerfile testen

Docker-Image erstellen

  • type „docker build -t [mein-image-name]“

Erstelltes DockerImage überprüfen

  • type „docker images“

Docker-image ausführen

  • type „docker run -p 4000:80 [mein-image-name]“

Set Up Container Registry

  1. AWS Berechtigungen konfigurieren
  2. Container Registry einrichten

    Create a new repository in AWS Elastic Container Registry (ECR) and name it [repository-name]

    Authenticate Docker to your ECR

    • type „aws ecr get-login-password –region <your-region> | docker login –username AWS –password-stdin <your-account-id>.dkr.ecr.<your-region>.amazonaws.com“
  3. Build, Push and Check Docker Image

    Build the Docker image

    • type „docker build -t python-app .“

    Tag the Docker image for ECR

    • type „docker tag python-app:latest <your-account-id>.dkr.ecr.<your-region>.amazonaws.com/python-app:latest“

    Push the Docker image to ECR

    • type „docker push <your-account-id>.dkr.ecr.<your-region>.amazonaws.com/python-app:latest“

    Check the Docker-Image in AWS ECR

    • Open AWS Management Console
      –> login
    • Navigate toAmazon ECR
      –> type „ECR“ into search bar
      –> choose „Elastic Container Registry“.
    • check repository
      –> assure there is a repository and image

Set Up Production Environment

  1. EC2 für Deployment vorbereiten
    (EC2-Instanz für den Empfang der Updates konfigurieren)
    • SSH-Zugriff und erforderliche Berechtigungen der  EC2-Instanz sicherstellen
      (um Dateien zu empfangen und auszuführen)
  2. Connect to EC2 Instance
    • Open terminal on local machine
    • Connect with EC2 instance through SSH
      type „ssh -i ~/.ssh/ec2-key Administrator@your-ec2-instance-public-dns
  3.  Download and Execute Docker-Image from ECR
    • open AWS EC2
    • Connect to AWS ECR
      type „
      aws ecr get-login-password --region your-region | docker login --username AWS --password-stdin your-account-id.dkr.ecr.your-region.amazonaws.com
    • Download Docker-Image from ECR
      type „docker pull your-account-id.dkr.ecr.your-region.amazonaws.com/python-animal_facts_deployed:latest
    • Start Docker-Container
      type „docker run -d -p 80:80 --name python-animal_facts_deployed your-account-id.dkr.ecr.your-region.amazonaws.com/python-animal_facts_deployed:latest"

Set Up CI/CD-Pipeline

CI/CD-Tool auswählen (z.B. GitHub Actions (für GitHub), GitLab CI/CD (für GitLab) oder Jenkins)

  • open  GitHub repository
    –> click „Actions“
  • click „New workflow“
    –> choose „vorgefertigtes Workflow-Template“ or create „eigenen Workflow“

CI/CD-Pipeline konfigurieren/Deployment-Skript schreiben

  • Erstellen Sie eine Konfigurationsdatei „.github/workflows/deploy.yml“ (alternativ im Format .json) im Verzeichnis Ihres Repositories.
  • Schritte des Workflows definieren, z.B.:
      • Quellcode aus Repository prüfen
      • Auschecken des Repositorys: actions/checkout@v2.
      • Python-Umgebung einrichten: actions/setup-python@v2.
      • Python-Abhängigkeiten installieren: pip install -r requirements.txt.
      • Bei AWS ECR anmelden
      • Docker-Image bauen und zu AWS ECR pushen
      • (Optional) Ausführen von Tests.
      • SSH-Agenten einrichten
      • Über SSH mit AWS EC2 verbinden
      • Code zu AWS EC2 deployen (siehe nächster Schritt).
Sie müssen sich anmelden, um diesen Inhalt einsehen zu können. Bitte . Kein Mitglied? Werden Sie Mitglied bei uns

Kommentar verfassen

Nach oben scrollen