spellcheck 12
This commit is contained in:
@@ -42,12 +42,12 @@
|
||||
\chapter{CI/CD Dokumentation}
|
||||
\section{CI/CD Dokumentation}\label{cicd-dokumentation}}
|
||||
|
||||
Dies ist die Dokumentation für die CI/CD Pipeline von dem \textit{<hier Java Webservice Name einsetzen>}
|
||||
Dokumentation für die CI/CD Pipeline von dem \textit{<hier Java Webservice Name einsetzen>}
|
||||
|
||||
\hypertarget{was-wird-automatisiert}{%
|
||||
\subsection{Was wird Automatisiert ?}\label{was-wird-automatisiert}}
|
||||
\subsection{Was wird automatisiert ?}\label{was-wird-automatisiert}}
|
||||
|
||||
Durch das CI/CD System werden folgende Prozesse Automatisiert
|
||||
Durch das CI/CD System werden folgende Prozesse automatisiert
|
||||
durchgeführt :
|
||||
|
||||
\begin{itemize}
|
||||
@@ -68,7 +68,7 @@ durchgeführt :
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
Modul-Test mit angebundenen externen Test Datenbank
|
||||
Modul-Test mit angebundener externen Testdatenbank
|
||||
\item
|
||||
Code-Coverage Report
|
||||
\end{itemize}
|
||||
@@ -86,7 +86,7 @@ durchgeführt :
|
||||
Analyse des Modul-Test Ergebnisses
|
||||
\end{itemize}
|
||||
\item
|
||||
\textbf{Package}: Cloudgerechtes packaging der Software
|
||||
\textbf{Package}: Cloudgerechtes Packaging der Software
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
@@ -173,7 +173,7 @@ Hier werden die verschiedenen Parameter aufgelistet, die die CI/CD Pipeline beei
|
||||
|
||||
Jenkins X erhält verschiedene Inputs, Trigger und Signale durch einen
|
||||
Webhook-Server namens \emph{Lighthouse}. An ihn werden
|
||||
Eventbenachichtigungen durch GitLab gesendet um anschließend ein
|
||||
Eventbenachichtigungen durch GitLab gesendet, um anschließend einen
|
||||
\textbf{CI-Run} zu starten.
|
||||
|
||||
Dabei wird ein \textbf{CI-Run} durch folgende Trigger und Konditionen
|
||||
@@ -182,15 +182,15 @@ gestartet:
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
Push auf den \textbf{master} branch auf GitLab
|
||||
Push auf den \textbf{master} Branch auf GitLab
|
||||
\item
|
||||
Push auf einen branch mit offenen \emph{Merge Request}
|
||||
Push auf einen Branch mit offenen \emph{Merge Request}
|
||||
\item
|
||||
Ausführen des Befehlt \texttt{jx\ start\ pipeline}
|
||||
\end{itemize}
|
||||
|
||||
\hypertarget{inputs-und-kontexte-daten}{%
|
||||
\subsection{Inputs und Kontexte Daten}\label{inputs-und-kontexte-daten}}
|
||||
\hypertarget{inputs-und-kontext-daten}{%
|
||||
\subsection{Inputs und Kontextdaten}\label{inputs-und-kontexte-daten}}
|
||||
|
||||
Diese Daten fliesen und beeinflussen den \textbf{CI-Build}:
|
||||
|
||||
@@ -199,11 +199,11 @@ Diese Daten fliesen und beeinflussen den \textbf{CI-Build}:
|
||||
\item
|
||||
Source-Code
|
||||
\item
|
||||
Branch von den die Pipeline getriggert wurde
|
||||
Branch, von dem die Pipeline getriggert wurde
|
||||
\item
|
||||
User, der die Pipeline ausgelöst hat.
|
||||
User, der die Pipeline ausgelöst hat
|
||||
\item
|
||||
Offene Mergerequests
|
||||
Offene Merge Requests
|
||||
\item
|
||||
Prow-Konfiguration
|
||||
\item
|
||||
@@ -214,7 +214,7 @@ Diese Daten fliesen und beeinflussen den \textbf{CI-Build}:
|
||||
|
||||
|
||||
\section{Pipeline Definitionen}
|
||||
Es existieren zwei verschiedene Pipelines die durch die Trigger
|
||||
Es existieren zwei verschiedene Pipelines, die durch die Trigger
|
||||
ausgelöst werden können:
|
||||
|
||||
\begin{itemize}
|
||||
@@ -228,14 +228,14 @@ ausgelöst werden können:
|
||||
\hypertarget{release}{%
|
||||
\subsection{Release}\label{release}}
|
||||
|
||||
Diese Pipeline kompeliert, testet, analysiert, verpackt und bereitet die
|
||||
Diese Pipeline kompiliert, testet, analysiert, verpackt und bereitet die
|
||||
Software zum Deployment vor.
|
||||
|
||||
Sie deployed jedoch die Anwendung nicht, sondern erstellt/modifiziert
|
||||
lediglich verschiedene Umgebungskonfigurationen, bei denen das
|
||||
automatische Deployment vorgesehen ist.
|
||||
|
||||
\textbf{Trigger}: Push oder Merge auf den \textbf{master} Branch.
|
||||
\textbf{Trigger}: Push oder Merge auf den \textbf{Masterbranch}.
|
||||
|
||||
\hypertarget{stage-setup-buildpack-maven}{%
|
||||
\subsubsection{Stage: Setup (Buildpack
|
||||
@@ -248,72 +248,76 @@ Befehle:
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
\texttt{echo\ \textbackslash{}\$(jx-release-version)\ \textgreater{}\ VERSION}
|
||||
Schreiben der neuen Software Version in eine Temporäre
|
||||
\texttt{VERSION} Datei um diese in späteren Schritten wieder abrufen
|
||||
zu können
|
||||
\texttt{echo\ \textbackslash{}\$(jx-release-version)\ \textgreater{}\ VERSION}:
|
||||
Schreiben der neuen Software Version in eine temporäre
|
||||
\texttt{VERSION} - Datei, um diese in späteren Schritten wieder abrufen
|
||||
zu können.
|
||||
\item
|
||||
\texttt{mvn\ versions:set\ -DnewVersion=\textbackslash{}\$(cat\ VERSION)}
|
||||
Setzen der Software Version in Maven um die neuen Software-Artefakte
|
||||
direkt mit richtigen namen und Tags zu versehen.
|
||||
\texttt{mvn\ versions:set\ -DnewVersion=\textbackslash{}\$(cat\ VERSION)}:
|
||||
Setzen der Softwareversion in Maven, um die neuen Software-Artefakte
|
||||
direkt mit richtigen Namen und Tags zu versehen.
|
||||
\item
|
||||
\texttt{jx\ step\ tag\ -\/-version\ \textbackslash{}\$(cat\ VERSION)}
|
||||
Setzen der Software Version in Jenkins X und in Git als Tag.
|
||||
\texttt{jx\ step\ tag\ -\/-version\ \textbackslash{}\$(cat\ VERSION)}:
|
||||
Setzen der Softwareversion in Jenkins X und in Git als Tag.
|
||||
\end{itemize}
|
||||
|
||||
\hypertarget{stage-build-buildpack-maven}{%
|
||||
\subsubsection{Stage: Build (Buildpack
|
||||
Maven)}\label{stage-build-buildpack-maven}}
|
||||
|
||||
In dieser Stage werden alle zum Build dazugehörigen komponenten und
|
||||
Tools ausgeführt. Bei einigen befehlen werden mehrere Tools und
|
||||
Komponenten gleichzeitig ausgeführt um den Buildprozess erfolgreich
|
||||
In dieser Stage werden alle zum Build gehörigen Komponenten und
|
||||
Tools ausgeführt. Bei einigen Befehlen werden mehrere Tools und
|
||||
Komponenten gleichzeitig ausgeführt, um den Buildprozess erfolgreich
|
||||
abzuschließen.
|
||||
|
||||
\textbf{Befehle}:
|
||||
|
||||
\begin{itemize}
|
||||
\item
|
||||
\texttt{mvn\ clean\ deploy} Durch diesen Befehl wird die eigentliche
|
||||
\texttt{mvn\ clean\ deploy}: Durch diesen Befehl wird die eigentliche
|
||||
Software gebaut. Der Bauprozess in Maven ist in verschiedene Phasen
|
||||
aufgeteilt, die in einer festen Reinfolge abgearbeitet werden. In
|
||||
jedem dieser Phasen wird ein anderes Tool/Plugin/Komponente
|
||||
jeder dieser Phasen wird ein anderes Tool/Plugin/Komponente
|
||||
aufgerufen. Nach dem Abschluss jeder Phase wird überprüft, ob die
|
||||
Phase erfolgreich abgeschlossen wurde. \textbf{Phasen}:
|
||||
Phase erfolgreich abgeschlossen wurde.
|
||||
|
||||
~
|
||||
|
||||
\textbf{Phasen}:
|
||||
|
||||
\begin{itemize}
|
||||
\item
|
||||
\texttt{clean} Bereinigt den Projekt Ordner von überresten eines
|
||||
\texttt{clean}: Bereinigt den Projekt Ordner von überresten eines
|
||||
vorherigen buildprozesses.
|
||||
\item
|
||||
\texttt{generate-sources} Erstellt mithilfe von
|
||||
\texttt{generate-sources}: Erstellt mithilfe von
|
||||
\textbf{openapi-generator.tech} Serverboilercode und API
|
||||
Schnittstellendefinitionen aus einer \emph{OpenAPI-Definitions
|
||||
Datei}. Diese liegt unter \texttt{src/main/resources/api.yaml} und
|
||||
ist in \emph{OpenAPI v3} formatiert.
|
||||
|
||||
Der generierte Code ist unter
|
||||
\texttt{target/generated-sources/openapi} abgelegt und wird
|
||||
\texttt{target/generated-sources/openapi}: abgelegt und wird
|
||||
automatisch in den \emph{Classpath} eingebunden.
|
||||
\item
|
||||
\texttt{compile} Erhebt alle Dependencys und stellt diese zu den
|
||||
entsprechenden Phasen des Buildvorgangs zuverfügung. Anschließend
|
||||
werden alle Sourcen die sich in dem Sourcepath befinden kompeliert.
|
||||
\texttt{compile}: Erhebt alle Dependencys und stellt diese zu den
|
||||
entsprechenden Phasen des Buildvorgangs zu Verfügung. Anschließend
|
||||
werden alle Sourcen, die sich in dem Sourcepath befinden kompiliert.
|
||||
\item
|
||||
\texttt{test} Führt UnitTests mithilfe von \emph{JUnit 5} aus.
|
||||
\emph{JUnit} scannt nach Aktivierten und Relevanten Tests und führt
|
||||
diese aus. Die Ergebnisse werden in Form eines XML-Reports in den
|
||||
\texttt{test}: Führt UnitTests mithilfe von \emph{JUnit 5} aus.
|
||||
\emph{JUnit} scannt nach aktivierten und relevanten Tests und führt
|
||||
diese aus. Die Ergebnisse werden in Form eines XML-Reports im
|
||||
\texttt{target} Ordner abgelegt. Bei der Ausführung der Tests wird
|
||||
zusätzlich die Code Coverage durch \emph{JaCoCo} erhoben und
|
||||
ebenfals ein Report unter \texttt{target} abgelegt.
|
||||
\item
|
||||
\texttt{package} Erzeugt eine ausführbare \texttt{.jar} Datei mit
|
||||
allen benötigten Dependencys um diese zu Containerisieren.
|
||||
\texttt{package}: Erzeugt eine ausführbare \texttt{.jar} Datei mit
|
||||
allen benötigten Dependencys, um diese zu containerisieren.
|
||||
\end{itemize}
|
||||
\item
|
||||
\texttt{skaffold\ build\ -f\ skaffold.yaml} Wird durch Jenkins X zu
|
||||
\texttt{skaffold\ build\ -f\ skaffold.yaml}: Wird durch Jenkins X zu
|
||||
Kaniko build umformatiert. Baut Container Image mit Parameter aus
|
||||
Jenkins X und veröffentlich diese in einem Container Registry
|
||||
Jenkins X und veröffentlicht diese in einem Container Registry
|
||||
\item
|
||||
Sonarqube Analyse (Custom addition)
|
||||
|
||||
@@ -331,7 +335,7 @@ abzuschließen.
|
||||
\end{Highlighting}
|
||||
|
||||
|
||||
Analysiert Projekt mit Hilfe von SonarQube und bricht die Pipeline ab
|
||||
Analysiert Projekt mit Hilfe von SonarQube und bricht die Pipeline ab,
|
||||
wenn Qualitätsprobleme gefunden wurden.
|
||||
\end{itemize}
|
||||
|
||||
@@ -341,7 +345,7 @@ Maven)}\label{stage-promote-buildpack-maven}}
|
||||
|
||||
In dieser Stage werden die erzeugten Artefakte in die zugehörigen
|
||||
Artefaktarchivierungssysteme hochgeladen und die verschiedenen
|
||||
Umgebungskonfigurationen modifiziert um den \emph{CD-Prozess} zu
|
||||
Umgebungskonfigurationen modifiziert, um den \emph{CD-Prozess} zu
|
||||
starten.
|
||||
|
||||
\textbf{Befehle:}
|
||||
@@ -349,26 +353,26 @@ starten.
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
\texttt{jx\ step\ changelog\ -\/-version\ v\textbackslash{}\$(cat\ ../../VERSION)}
|
||||
\texttt{jx\ step\ changelog\ -\/-version\ v\textbackslash{}\$(cat\ ../../VERSION)}:
|
||||
Fügt dem Tag und dem Release in GitLab Changelogs aus den
|
||||
Commitnachichten hinzu.
|
||||
\item
|
||||
\texttt{jx\ step\ helm\ release} Veröffentlich das Helmchat aus dem
|
||||
\texttt{jx\ step\ helm\ release}: Veröffentlich das Helmchat aus dem
|
||||
\texttt{charts} Ordner unter einer neuen Version im Chartmuseum.
|
||||
\item
|
||||
\texttt{jx\ promote\ -b\ -\/-all-auto\ -\/-timeout\ 1h\ -\/-version\ \textbackslash{}\$(cat\ ../../VERSION)}
|
||||
Modifiziert oder Erstellt die Umgebunskonfigurationen bei denen in
|
||||
\texttt{jx\ promote\ -b\ -\/-all-auto\ -\/-timeout\ 1h\ -\/-version\ \textbackslash{}\$(cat\ ../../VERSION)}:
|
||||
modifiziert oder erstellt die Umgebunskonfigurationen, bei denen in
|
||||
Jenkins X \emph{Autodeploy} aktiviert wurde.
|
||||
\end{itemize}
|
||||
|
||||
\hypertarget{preview}{%
|
||||
\subsection{Preview}\label{preview}}
|
||||
|
||||
Diese Pipeline kompeliert, testet, analysiert, verpackt und bereitet die
|
||||
Software zum deployment in eine temporäre Previewenvirgonment.
|
||||
Diese Pipeline kompiliert, testet, analysiert, verpackt und bereitet die
|
||||
Software zum Deployment in eine temporäre Previewenvironment.
|
||||
|
||||
Diese Pipeline ist nicht zum Bau einer Realease Version gedacht und
|
||||
bereitet die Software nur für ein themporäres Preview vor.
|
||||
Diese Pipeline ist nicht zum Bau einer Releaseversion gedacht und
|
||||
bereitet die Software nur für ein temporäres Preview vor.
|
||||
|
||||
\textbf{Trigger}: Push oder Merge auf einen Branch, der Quelle eines
|
||||
offenen \emph{Merge-Request} ist.
|
||||
@@ -377,16 +381,18 @@ offenen \emph{Merge-Request} ist.
|
||||
\subsubsection{Stage: Build (Buildpack
|
||||
Maven)}\label{stage-build-buildpack-maven-1}}
|
||||
|
||||
In dieser Stage werden alle zum Build dazugehörigen komponenten und
|
||||
Tools ausgeführt. Bei einigen befehlen werden mehrere Tools und
|
||||
Komponenten gleichzeitig ausgeführt um den Buildprozess erfolgreich
|
||||
In dieser Stage werden alle zum Build gehörigen Komponenten und
|
||||
Tools ausgeführt. Bei einigen Befehlen werden mehrere Tools und
|
||||
Komponenten gleichzeitig ausgeführt, um den Buildprozess erfolgreich
|
||||
abzuschließen.
|
||||
|
||||
~
|
||||
|
||||
\textbf{Befehle}:
|
||||
|
||||
\begin{itemize}
|
||||
\item
|
||||
\texttt{mvn\ clean\ install} Durch diesen Befehl wird die eigentliche
|
||||
\texttt{mvn\ clean\ install}: Durch diesen Befehl wird die eigentliche
|
||||
Software gebaut. Der Bauprozess in Maven ist in verschiedene Phasen
|
||||
aufgeteilt, die in einer festen Reinfolge abgearbeitet werden. In
|
||||
jedem dieser Phasen wird ein anderes Tool/Plugin/Komponente
|
||||
@@ -395,10 +401,10 @@ abzuschließen.
|
||||
|
||||
\begin{itemize}
|
||||
\item
|
||||
\texttt{clean} Bereinigt den Projekt Ordner von überresten eines
|
||||
vorherigen buildprozesses.
|
||||
\texttt{clean}: Bereinigt den Projekt Ordner von Überresten eines
|
||||
vorherigen Buildprozesses.
|
||||
\item
|
||||
\texttt{generate-sources} Erstellt mithilfe von
|
||||
\texttt{generate-sources}: Erstellt mithilfe von
|
||||
\textbf{openapi-generator.tech} Serverboilercode und API
|
||||
Schnittstellendefinitionen aus einer \emph{OpenAPI-Definitions
|
||||
Datei}. Diese liegt unter \texttt{src/main/resources/api.yaml} und
|
||||
@@ -408,22 +414,22 @@ abzuschließen.
|
||||
\texttt{target/generated-sources/openapi} abgelegt und wird
|
||||
automatisch in den \emph{Classpath} eingebunden.
|
||||
\item
|
||||
\texttt{compile} Erhebt alle Dependencys und stellt diese zu den
|
||||
entsprechenden Phasen des Buildvorgangs zuverfügung. Anschließend
|
||||
werden alle Sourcen die sich in dem Sourcepath befinden kompeliert.
|
||||
\texttt{compile}: Erhebt alle Dependencys und stellt diese zu den
|
||||
entsprechenden Phasen des Buildvorgangs zur Verfügung. Anschließend
|
||||
werden alle Sourcen, welche sich in dem Sourcepath befinden kompiliert.
|
||||
\item
|
||||
\texttt{test} Führt UnitTests mithilfe von \emph{JUnit 5} aus.
|
||||
\emph{JUnit} scannt nach Aktivierten und Relevanten Tests und führt
|
||||
diese aus. Die Ergebnisse werden in Form eines XML-Reports in den
|
||||
\texttt{test}: Führt UnitTests mithilfe von \emph{JUnit 5} aus.
|
||||
\emph{JUnit} scannt nach aktivierten und relevanten Tests und führt
|
||||
diese aus. Die Ergebnisse werden in Form eines XML-Reports im
|
||||
\texttt{target} Ordner abgelegt. Bei der Ausführung der Tests wird
|
||||
zusätzlich die Code Coverage durch \emph{JaCoCo} erhoben und
|
||||
ebenfals ein Report unter \texttt{target} abgelegt.
|
||||
\item
|
||||
\texttt{package} Erzeugt eine ausführbare \texttt{.jar} Datei mit
|
||||
allen benötigten Dependencys um diese zu Containerisieren.
|
||||
\texttt{package}: Erzeugt eine ausführbare \texttt{.jar} Datei mit
|
||||
allen benötigten Dependencys, um diese zu containerisieren.
|
||||
\end{itemize}
|
||||
\item
|
||||
\texttt{skaffold\ build\ -f\ skaffold.yaml} Wird durch Jenkins X zu
|
||||
\texttt{skaffold\ build\ -f\ skaffold.yaml}: Wird durch Jenkins X zu
|
||||
Kaniko build umformatiert. Baut Container Image mit Parameter aus
|
||||
Jenkins X und veröffentlich diese in einem Container Registry
|
||||
\item
|
||||
@@ -452,22 +458,24 @@ Maven)}\label{stage-promote-buildpack-maven-1}}
|
||||
|
||||
In dieser Stage werden die erzeugten Artefakte in die zugehörigen
|
||||
Artefaktarchivierungssysteme hochgeladen und eine temporäre
|
||||
Previewumgebung erstellt um die Anwendung kurzzeitig zu testen.
|
||||
Previewumgebung erstellt, um die Anwendung kurzzeitig zu testen.
|
||||
|
||||
~
|
||||
|
||||
\textbf{Befehle:}
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
\texttt{jx\ step\ changelog\ -\/-version\ v\textbackslash{}\$(cat\ ../../VERSION)}
|
||||
\texttt{jx\ step\ changelog\ -\/-version\ v\textbackslash{}\$(cat\ ../../VERSION)}:
|
||||
Fügt dem Tag und dem Release in GitLab Changelogs aus den
|
||||
Commitnachichten hinzu.
|
||||
\item
|
||||
\texttt{jx\ step\ helm\ release} Veröffentlich das Helmchat aus dem
|
||||
\texttt{jx\ step\ helm\ release}: Veröffentlich das Helmchat aus dem
|
||||
\texttt{charts} Ordner unter einer neuen Version im Chartmuseum.
|
||||
\item
|
||||
\texttt{jx\ promote\ -b\ -\/-all-auto\ -\/-timeout\ 1h\ -\/-version\ \textbackslash{}\$(cat\ ../../VERSION)}
|
||||
Modifiziert oder Erstellt die Umgebunskonfigurationen bei denen in
|
||||
\texttt{jx\ promote\ -b\ -\/-all-auto\ -\/-timeout\ 1h\ -\/-version\ \textbackslash{}\$(cat\ ../../VERSION)}:
|
||||
Modifiziert oder erstellt die Umgebunskonfigurationen bei denen in
|
||||
Jenkins X \emph{Autodeploy} aktiviert wurde.
|
||||
\end{itemize}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user