mirror of
https://github.com/fhswf/aki_prj23_transparenzregister.git
synced 2025-05-14 17:58:45 +02:00
Short text on how devops developed in the course of the project (#490)
This commit is contained in:
parent
8b405c9187
commit
9777b75409
@ -0,0 +1,77 @@
|
|||||||
|
# DevOps - in der Nutzung (Philipp Horstenkamp)
|
||||||
|
|
||||||
|
Die meisten Aspekte von DevOps und CI/CD wurden bereits zur Zwischenpräsentation ausführlich beschrieben.
|
||||||
|
Hier konzentriere ich mich auf Änderungen seit der Präsentation und teile Erfahrungsberichte aus dem Team.
|
||||||
|
|
||||||
|
## Poetry
|
||||||
|
|
||||||
|
Poetry kam erfolgreich zum Einsatz.
|
||||||
|
Wir nutzten Abhängigkeitsgruppen wie `root`, lint, test, doc und develop.
|
||||||
|
Dabei enthält nur die `root`-Gruppe Laufzeitabhängigkeiten.
|
||||||
|
Zusätzlich wurden Extras wie `ingest`, `transformation` und `webserver` verwendet.
|
||||||
|
|
||||||
|
- `ingest` umfasst Abhängigkeiten, die ausschließlich für das Data-Mining benötigt werden.
|
||||||
|
- `transformation` beinhaltet Werkzeuge zur Weiterverarbeitung, wie Sentimentanalysen und `rapidfuzz` für das Matching von Firmennamen.
|
||||||
|
- `webserver` umfasst Abhängigkeiten, die nur für die Darstellung von Ergebnissen auf dem Webserver eingesetzt werden.
|
||||||
|
|
||||||
|
Unser Ziel war es, Ressourcen bei Ausführung und Installation zu schonen.
|
||||||
|
|
||||||
|
## GitHub
|
||||||
|
|
||||||
|
### Dependabot
|
||||||
|
|
||||||
|
Wir setzten zusätzlich zu den GitHub Workflows Dependabot ein.
|
||||||
|
Ich bin weiterhin der Meinung, dass es für das aktiv entwickelte Projekt nicht essenziell war.
|
||||||
|
Allerdings wollte ich den Umgang damit erlernen und aktivierte es daher zusätzlich.
|
||||||
|
Die benötigte Konfiguration war wie folgt:
|
||||||
|
```yaml
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: github-actions
|
||||||
|
directory: /
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
- package-ecosystem: pip
|
||||||
|
directory: /
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
open-pull-requests-limit: 5
|
||||||
|
ignore:
|
||||||
|
- dependency-name: '*'
|
||||||
|
update-types: ['version-update:semver-major']
|
||||||
|
```
|
||||||
|
|
||||||
|
Die erstellten PRs müssen vom Nutzer nur noch überprüft und gemerged werden.
|
||||||
|
|
||||||
|
### Zusätzliche Workflows
|
||||||
|
|
||||||
|
Während der Entwicklung des Projektes wurden die folgenden `workflows` hinzugefügt:
|
||||||
|
|
||||||
|
- **Dependabot-auto-merge**\
|
||||||
|
aktiviert das automatische Mergen von PRs durch Dependabot und `github-actions[bot]`, sobald Änderungen genehmigt werden.
|
||||||
|
Dieser Workflow wurde erstellt, um die GitHub-Berechtigungen besser zu verstehen.
|
||||||
|
- **Auto Maintenance Cycle**\
|
||||||
|
ist ein täglich ausgeführter Workflow, der routinemäßige Arbeiten verrichtet:
|
||||||
|
- Löschen alter Docker Images, deren Tags überschrieben wurden.
|
||||||
|
- Aktualisieren von `pre-commit` zur Nutzung aktueller Linter.
|
||||||
|
|
||||||
|
Die ursprünglichen Workflows wurden konzeptionell nur minimal verändert.
|
||||||
|
Installierte Gruppen, Caching und Ausführungstrigger wurden optimiert, um die Ausführung zu verbessern.
|
||||||
|
|
||||||
|
## Code Qualität
|
||||||
|
|
||||||
|
Die Einarbeitung in Linter und automatisierte Tests stellte für einige Teammitglieder eine große Herausforderung dar.
|
||||||
|
Dies lag insbesondere daran, dass ganze Programmteile in Jupyter-Notebooks erstellt wurden und die Code-Struktur überdacht und angepasst werden musste.
|
||||||
|
Das nachträgliche Hinzufügen von Tests war anfangs eine Hürde.
|
||||||
|
Für Teammitglieder ohne CI/CD-Erfahrung war dies besonders frustrierend.
|
||||||
|
Nach dem ersten Beitrag zur zentralen Codebasis und der Überführung von Jupyter-Code auf den `main`-Branch verbesserte sich dies jedoch.
|
||||||
|
In der Rückmeldung wurde betont, dass die Werkzeuge zur Qualitätssicherung nach einer Eingewöhnungsphase als lernfördernd empfunden wurden.
|
||||||
|
Besonders die Erfahrung, wann Einwände von `ruff` oder `mypy` übergangen werden müssen, war wertvoll.
|
||||||
|
Mit zunehmender Erfahrung wurden einzelne Entwicklungsstränge kürzer und besser integriert.
|
||||||
|
Es wurde berichtet, dass `ruff` durch das Durchsetzen von Code-Standards in einigen Situationen Sicherheit bot.
|
||||||
|
Tools wie `mypy` waren besonders hilfreich, wo Code von verschiedenen Teammitgliedern verzahnt wurde.
|
||||||
|
Es ist schwer zu sagen, wie die Situation ohne diese Werkzeuge gewesen wäre.
|
||||||
|
Ein nachträgliches Hinzufügen von Lintern wäre jedoch nicht möglich gewesen.
|
||||||
|
|
||||||
|
Ein Versuch, ChatGPT als Code-Reviewer für Pull Requests einzusetzen, scheiterte.
|
@ -56,6 +56,7 @@ The timeline to reach this goal is:
|
|||||||
|
|
||||||
seminararbeiten/DevOps/Seminarpraesentation.ipynb
|
seminararbeiten/DevOps/Seminarpraesentation.ipynb
|
||||||
seminararbeiten/Datenspeicherung/00_Datenspeicherung
|
seminararbeiten/Datenspeicherung/00_Datenspeicherung
|
||||||
|
Ergebnisse/Abschlussbericht_und_Praesentation/PhHo/05-DEV-OPS
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:glob:
|
:glob:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user