---
# System prepended metadata

title: CI/CD (Continuous Integration/Continuous Delivery) in Software-Entwicklungsprozessen

---

# CI/CD (Continuous Integration/Continuous Delivery) in Software-Entwicklungsprozessen

## Gliederung

### Teil 1: Einführung und Grundlagen von CI/CD (Sprecher 1)

1. **Einführung**
    - Definition von CI/CD
    - Warum ist CI/CD wichtig?

2. **Grundlagen von CI**
    - Was ist Continuous Integration?
    - Vorteile von CI
    - Beispiele für CI-Tools (z.B. Jenkins, Travis CI)

3. **Grundlagen von CD**
    - Was ist Continuous Delivery?
    - Was ist der Unterschied zwischen Continuous Delivery und Continuous Deployment?
    - Vorteile von CD
    - Beispiele für CD-Tools (z.B. Spinnaker, GoCD)

### Teil 2: Anwendung und Praxis von CI/CD (Sprecher 2)

4. **CI/CD in der Praxis**
    - Wie wird CI/CD in der realen Welt eingesetzt?
    - Fallstudien und Beispiele

5. **CI/CD-Pipeline**
    - Was ist eine CI/CD-Pipeline?
    - Wie sieht eine typische CI/CD-Pipeline aus?
    - Demonstration einer einfachen CI/CD-Pipeline

6. **Fazit und Ausblick**
    - Zusammenfassung der Vorteile und Erkenntnisse von CI/CD
    - Zukünftige Trends in CI/CD

## Aktives Lernen

Um aktives Lernen zu fördern, könnten wir folgende Methoden verwenden:

- **Fragen und Antworten**: Nach jedem Abschnitt könnten wir eine kurze Fragerunde einlegen, um sicherzustellen, dass die Zuhörer die vorgestellten Konzepte verstanden haben.

- **Interaktive Demonstration**: Während des Abschnitts über die CI/CD-Pipeline könnten wir eine interaktive Demonstration durchführen, bei der die Zuhörer die Möglichkeit haben, eine einfache Pipeline selbst zu sehen und dessen Funktion sehen zu können.

- **Diskussion**: Am Ende der Präsentation könnten wir eine Diskussion über die Vorteile und Herausforderungen von CI/CD anregen und die Zuhörer nach ihren eigenen Erfahrungen und Meinungen fragen.


## Interaktive Demonstration: Erstellen einer CI/CD-Pipeline

In dieser Demonstration werden wir eine einfache CI/CD-Pipeline mit GitHub Actions und Docker erstellen. Wir werden einen einfachen Python-Webserver verwenden, der in einem Docker-Container läuft.

### Schritt 1: Erstellen eines Python-Webserver-Projekt

Erstellen eines neuen Repository auf GitHub und hinzufügen einer einfachen Python-Webserver-Anwendung   Ein einfaches Beispiel für eine `helloworld.py`-Datei:

```python
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=80) # localhost:80

```
Und eine `requirements.txt`-Datei:

```txt
blinker==1.6.2
click==8.1.3
Flask==2.3.2
itsdangerous==2.1.2
Jinja2==3.1.2
MarkupSafe==2.1.3
Werkzeug==2.3.6
```
### Schritt 2 : Dockerfile erstellen

```dockerfile=
FROM python:latest

WORKDIR /app

COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD [ "python", "./helloworld.py" ]
```

### Schritt 3 : Git Hub Actions und Workflow Datei

Erstellen einer neuen Datei namens `.github/workflows/main.yml` in unserem Projekt:

```yaml=
name: CI/CD Pipeline

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2

    - name: Build Docker image
      run: docker build . -t my-python-app

    - name: Push Docker image to Docker Hub
      run: |
        docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} -p ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
        docker tag my-python-app:latest ${{ secrets.DOCKER_HUB_USERNAME }}/my-python-app:latest
        docker push ${{ secrets.DOCKER_HUB_USERNAME }}/my-python-app:latest

```

### Schritt 4: Demonstration

Jetzt können wir die Demonstration durchführen:

- **Schritt 1**: Push auf das Github Repo ausführen und zeigen wie die GitHub Actions den Docker-Build auslösen und das Image auf Docker Hub pushen.
- **Schritt 2**: Zeigen wie das aktualisierte Docker-Image automatisch auf Ihrem Kubernetes-Cluster bereitgestellt wird.
- **Schritt 3**: Öffnen der Anwendung in einem Webbrowser, um zu zeigen, dass sie funktioniert.

Diese Demonstration sollte den Zuhörern ein grundlegendes Verständnis dafür vermitteln, wie eine CI/CD-Pipeline funktioniert und wie sie die Softwareentwicklung erleichtern kann.

