- 1 Abschnitt
- 10 Lektionen
- Um den Kurs in deinem Profil zu hinterlegen klicke oben auf Starten
- Versionsverwaltung11
- 1.1Einführung in die Versionsverwaltung
- 1.2Überblick über gängige Versionsverwaltungssysteme
- 1.3Installation und Einrichtung
- 1.4Grundlegende Befehle und Konzepte in Git
- 1.5Fortgeschrittene Git-Funktionen
- 1.6Zusammenarbeit und Workflows
- 1.7Integration und Automatisierung
- 1.8Best Practices und Fallstricke
- 1.9Versionsverwaltung8 Fragen
- 1.10Aufgaben
- 1.11Lösungen
Integration und Automatisierung
CI/CD-Integration
Continuous Integration (CI) und Continuous Deployment (CD) sind Praktiken, die sicherstellen, dass Codeänderungen kontinuierlich getestet, integriert und bereitgestellt werden. Git spielt eine zentrale Rolle in CI/CD-Pipelines, da es Änderungen am Code verfolgt und diese in automatisierte Workflows einbindet.
1. Einrichtung einer CI/CD-Pipeline:
GitHub Actions: GitHub Actions ist ein Automatisierungsservice, der direkt in GitHub integriert ist und CI/CD-Pipelines ermöglicht.
Beispiel für eine GitHub Actions Workflow-Datei:
name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run tests
run: |
pytest
- name: Generate coverage report
run: |
coverage run -m pytest
coverage report
- name: Upload coverage report
uses: actions/upload-artifact@v2
with:
name: coverage-report
path: coverage/
GitLab CI: GitLab CI ist ein integrierter CI/CD-Service in GitLab.
Beispiel für eine .gitlab-ci.yml-Datei:
stages:
- build
- test
build_job:
stage: build
script:
- echo "Compiling the code..."
- echo "Code compiled successfully."
test_job:
stage: test
script:
- echo "Running tests..."
- echo "Tests completed."
Jenkins: Jenkins ist ein Open-Source-Automatisierungsserver, der weit verbreitet in CI/CD verwendet wird.
Beispiel für eine Jenkins-Pipeline-Datei:
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
}
}
stage('Test') {
steps {
echo 'Testing...'
}
}
stage('Deploy') {
steps {
echo 'Deploying...'
}
}
}
}
Automatisierte Tests
Automatisierte Tests sind ein zentraler Bestandteil von CI/CD-Pipelines. Sie stellen sicher, dass Codeänderungen keine neuen Fehler einführen und die bestehende Funktionalität erhalten bleibt.
1. Arten von automatisierten Tests:
- Unit-Tests: Testen einzelne Funktionen oder Methoden.
- Integrationstests: Testen das Zusammenspiel verschiedener Komponenten.
- End-to-End-Tests: Testen das gesamte System von Anfang bis Ende.
2. Einbindung von automatisierten Tests in CI/CD:
Testausführung: Automatisierte Tests werden bei jedem Commit oder Pull Request ausgeführt, um sicherzustellen, dass alle Änderungen getestet werden.
Beispiel:
name: Run Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
Hooks und Skripte
Git-Hooks sind Skripte, die bei bestimmten Aktionen im Git-Repository automatisch ausgeführt werden. Sie ermöglichen es, Aufgaben zu automatisieren und sicherzustellen, dass bestimmte Bedingungen erfüllt sind, bevor Änderungen akzeptiert werden.
1. Arten von Hooks:
- Client-seitige Hooks: Laufen auf dem Entwicklerrechner, z.B.
pre-commit,prepare-commit-msg,post-commit. - Server-seitige Hooks: Laufen auf dem Git-Server, z.B.
pre-receive,post-receive,update.
2. Verwendung von Hooks:
Beispiel: Pre-Commit Hook zur Code-Formatierung:
- Erstelle eine Datei namens
pre-commitim Verzeichnis.git/hooks/und mache sie ausführbar:
#!/bin/sh
# Pre-Commit Hook zur Code-Formatierung mit Prettier
npm run format
Beispiel: Post-Receive Hook zur automatischen Bereitstellung:
- Erstelle eine Datei namens
post-receiveauf dem Server im Verzeichnishooks/des Bare-Repositorys und mache sie ausführbar:
#!/bin/sh
# Post-Receive Hook zur automatischen Bereitstellung
GIT_WORK_TREE=/var/www/myproject git checkout -f
Praxisbeispiel: Integration und Automatisierung
Beispiel: Einrichten einer GitHub Actions CI/CD-Pipeline
- Erstellen einer Workflow-Datei in deinem Repository:
- Erstelle eine Datei namens
.github/workflows/ci.yml:
name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run tests
run: |
pytest
- name: Generate coverage report
run: |
coverage run -m pytest
coverage report
- name: Upload coverage report
uses: actions/upload-artifact@v2
with:
name: coverage-report
path: coverage/
- Automatisierte Tests in den Workflow einbinden:
- Stelle sicher, dass deine Tests im Schritt
Run testskorrekt ausgeführt werden.
- Verwendung von Hooks zur Sicherstellung der Codequalität:
- Erstelle einen
pre-commitHook zur Code-Formatierung
#!/bin/sh
npm run format
