chore: Add CI section to docs
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
CI / Backend Tests (pull_request) Has been skipped
CI / eslint (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 8s
CI / oxlint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 13s
CI / Docker backend validation (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Playwright (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 1m29s
All checks were successful
CI / Get Changed Files (pull_request) Successful in 10s
CI / Backend Tests (pull_request) Has been skipped
CI / eslint (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
Pull Request Labeler / labeler (pull_request_target) Successful in 8s
CI / oxlint (pull_request) Has been skipped
CI / Docker frontend validation (pull_request) Has been skipped
CI / prettier (pull_request) Has been skipped
Label PRs based on size / Check PR size (pull_request) Successful in 13s
CI / Docker backend validation (pull_request) Has been skipped
CI / test-build (pull_request) Has been skipped
CI / Playwright (pull_request) Has been skipped
Claude PR Review / claude-code (pull_request) Successful in 1m29s
This commit is contained in:
parent
e5155c072f
commit
59bb910f05
5 changed files with 77 additions and 20 deletions
|
@ -14,9 +14,12 @@
|
||||||
% einen Platzhalter der die Breite der linken Spalte bestimmt.
|
% einen Platzhalter der die Breite der linken Spalte bestimmt.
|
||||||
\begin{acronym}[WWWWW]
|
\begin{acronym}[WWWWW]
|
||||||
%\acro{API}{Application Programming Interface}
|
%\acro{API}{Application Programming Interface}
|
||||||
|
\acro{CI}{Continuous Integration}
|
||||||
|
\acro{CI/CD}{Continuous Integration/Continuous Deployment}
|
||||||
\acro{CLI}{Command Line Interface}
|
\acro{CLI}{Command Line Interface}
|
||||||
\acro{CRM}{Customer Relationship Management}
|
\acro{CRM}{Customer Relationship Management}
|
||||||
\acro{CRON}{Vorgangsausführung gemäß geplanten Zeitabläufen für UNIX Programme}
|
\acro{CRON}{Vorgangsausführung gemäß geplanten Zeitabläufen für UNIX Programme}
|
||||||
|
\acro{E2E}{End-to-End}
|
||||||
\acro{eCommerce}{Electronic Commerce}
|
\acro{eCommerce}{Electronic Commerce}
|
||||||
\acro{ERM}{Entity-Relationship-Model}
|
\acro{ERM}{Entity-Relationship-Model}
|
||||||
\acro{GUI}{Graphical User Interface}
|
\acro{GUI}{Graphical User Interface}
|
||||||
|
|
|
@ -1,27 +1,27 @@
|
||||||
% !TEX root = Projektdokumentation.tex
|
% !TEX root = Projektdokumentation.tex
|
||||||
\begin{titlepage}
|
\begin{titlepage}
|
||||||
|
|
||||||
\begin{center}
|
\begin{center}
|
||||||
\includegraphics[scale=0.25]{hitec-logo.png}\\[1ex]
|
\includegraphics[scale=0.25]{hitec-logo.png}\\[1ex]
|
||||||
|
|
||||||
\Large{\ausbildungsberuf}\\
|
\Large{\ausbildungsberuf}\\
|
||||||
\LARGE{\betreff}\\[4ex]
|
\LARGE{\betreff}\\[4ex]
|
||||||
|
|
||||||
\huge{\textbf{\titel}}\\[1.5ex]
|
\huge{\textbf{\titel}}\\[1.5ex]
|
||||||
\Large{\textbf{\untertitel}}\\[4ex]
|
\Large{\textbf{\untertitel}}\\[4ex]
|
||||||
|
|
||||||
\normalsize
|
\normalsize
|
||||||
Projektzeitraum: \projektZeitraum\\[3em]
|
Projektzeitraum: \projektZeitraum\\[3em]
|
||||||
\textbf{Projektteilnehmer:}\\
|
\textbf{Projektteilnehmer:}\\
|
||||||
Constantin Simonis\\
|
Constantin Simonis\\
|
||||||
Phan Huy Tran\\
|
Phan Huy Tran\\
|
||||||
Jan-Marlon Leibl\\
|
Jan-Marlon Leibl\\
|
||||||
Jan Klattenhoff\\
|
Jan Klattenhoff\\
|
||||||
Lea Ziemke\\
|
Lea Ziemke\\
|
||||||
|
|
||||||
\textbf{Projektaufsicht:}\\
|
\textbf{Projektaufsicht:}\\
|
||||||
Katrin Deeken\\
|
Katrin Deeken\\
|
||||||
Bernd Heidemann\\
|
Bernd Heidemann\\
|
||||||
\end{center}
|
\end{center}
|
||||||
|
|
||||||
\end{titlepage}
|
\end{titlepage}
|
|
@ -1,2 +1,3 @@
|
||||||
% !TEX root = Projektdokumentation.tex
|
% !TEX root = Projektdokumentation.tex
|
||||||
\input{Inhalt/Einleitung}
|
\input{Inhalt/Einleitung}
|
||||||
|
\input{Inhalt/CI}
|
||||||
|
|
53
projektdokumentation/Inhalt/CI.tex
Normal file
53
projektdokumentation/Inhalt/CI.tex
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
% !TEX root = ../Projektdokumentation.tex
|
||||||
|
\section{Continuous Integration}
|
||||||
|
\label{sec:CI}
|
||||||
|
|
||||||
|
Das Projekt verwendet Gitea Actions\footnote{Gitea Actions - \url{https://docs.gitea.com/usage/actions/overview}} als \ac{CI/CD}-Pipeline, welche vollständig kompatibel mit GitHub Actions ist.
|
||||||
|
Entsprechend den Qualitätsanforderungen soll eine hohe Code-Qualität durch automatisierte Tests gewährleistet werden.
|
||||||
|
|
||||||
|
\subsection{Aufbau der CI-Pipeline}
|
||||||
|
\label{sec:ci-pipeline}
|
||||||
|
|
||||||
|
Die Haupt-\ac{CI}-Pipeline wird durch die Datei \Datei{ci.yml} definiert und bei Pull Requests ausgelöst. Aufgrund der separaten Frontend- und Backend-Komponenten
|
||||||
|
wurde eine \Fachbegriff{Change Detection} implementiert, welche nur relevante Tests für geänderte Bereiche ausführt.
|
||||||
|
|
||||||
|
Ein initialer Job identifiziert geänderte Dateien und ermöglicht eine selektive Ausführung:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Backend-Änderungen: \Datei{backend/**}
|
||||||
|
\item Frontend-Änderungen: \Datei{frontend/**}
|
||||||
|
\item Workflow-Änderungen: \Datei{.gitea/workflows/**}
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Backend-Qualitätssicherung}
|
||||||
|
Für Backend-Änderungen werden folgende Prüfungen durchgeführt:
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Unit Tests:} Ausführung mit \Eingabe{./gradlew test} in OpenJDK 23 Container
|
||||||
|
\item \textbf{Checkstyle:} Code-Style-Validierung mit Caching-Mechanismus
|
||||||
|
\item \textbf{Docker Build:} Überprüfung der Build-Funktionalität
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Frontend-Qualitätssicherung}
|
||||||
|
Für Frontend-Änderungen wird eine umfassende Testsuite ausgeführt:
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{ESLint:} Code-Qualitätsprüfung mit \Eingabe{bun run lint}
|
||||||
|
\item \textbf{Prettier:} Code-Formatierungsvalidierung
|
||||||
|
\item \textbf{Build-Test:} Produktions-Build-Validierung mit \Eingabe{bun run build}
|
||||||
|
\item \textbf{Playwright \ac{E2E} Tests:} End-to-End-Tests mit automatischem Backend-Start
|
||||||
|
\item \textbf{Docker Build:} Validierung der Container-Erstellung
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsection{Release-Management}
|
||||||
|
\label{sec:release-pipeline}
|
||||||
|
|
||||||
|
Das Release-Management erfolgt automatisiert durch die \Datei{release.yml} Pipeline bei Pushes auf den \texttt{main}-Branch.
|
||||||
|
Die Implementierung folgt \Fachbegriff{Semantic Versioning}\footnote{Semantic Versioning - \url{https://semver.org/}} und \Fachbegriff{Conventional Commits}\footnote{Conventional Commits - \url{https://www.conventionalcommits.org/}}.
|
||||||
|
|
||||||
|
Die Release-Pipeline umfasst:
|
||||||
|
\begin{enumerate}
|
||||||
|
\item \textbf{Semantic Release:} Automatische Versionierung basierend auf Commit-Nachrichten
|
||||||
|
\item \textbf{Docker Image Build:} Parallele Erstellung von Backend- und Frontend-Images
|
||||||
|
\item \textbf{Registry Push:} Upload zur privaten Gitea Docker Registry
|
||||||
|
\end{enumerate}
|
||||||
|
|
||||||
|
Die \ac{CI/CD}-Pipeline implementiert Performance-Optimierungen wie intelligentes Caching, Concurrency Control und selektive Job-Ausführung.
|
||||||
|
Diese Automatisierung gewährleistet eine hohe Software-Qualität bei effizienten Entwicklungsprozessen.
|
Binary file not shown.
Reference in a new issue