added picture
This commit is contained in:
473
chapters/doku.tex
Normal file
473
chapters/doku.tex
Normal file
@@ -0,0 +1,473 @@
|
||||
\newcommand{\VerbBar}{|}
|
||||
\newcommand{\VERB}{\Verb[commandchars=\\\{\}]}
|
||||
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
|
||||
% Add ',fontsize=\small' for more characters per line
|
||||
\newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
|
||||
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
||||
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{#1}}
|
||||
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
||||
\newcommand{\BuiltInTok}[1]{#1}
|
||||
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
||||
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{#1}}}
|
||||
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
||||
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{#1}}
|
||||
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
|
||||
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{#1}}
|
||||
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
||||
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{#1}}}
|
||||
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
|
||||
\newcommand{\ExtensionTok}[1]{#1}
|
||||
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
||||
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{#1}}
|
||||
\newcommand{\ImportTok}[1]{#1}
|
||||
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
||||
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
|
||||
\newcommand{\NormalTok}[1]{#1}
|
||||
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}}
|
||||
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{#1}}
|
||||
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{#1}}
|
||||
\newcommand{\RegionMarkerTok}[1]{#1}
|
||||
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
||||
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{#1}}
|
||||
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
||||
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{#1}}
|
||||
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
||||
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
||||
\setlength{\emergencystretch}{3em} % prevent overfull lines
|
||||
\providecommand{\tightlist}{%
|
||||
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
||||
%\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
|
||||
|
||||
\hypertarget{cicd-dokumentation}{%
|
||||
\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>}
|
||||
|
||||
\hypertarget{was-wird-automatisiert}{%
|
||||
\subsection{Was wird Automatisiert ?}\label{was-wird-automatisiert}}
|
||||
|
||||
Durch das CI/CD System werden folgende Prozesse Automatisiert
|
||||
durchgeführt :
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
\textbf{Build}: Build Prozess der Software
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
Automatische Generierung von API-Server Boilercode
|
||||
\item
|
||||
Kompilierung und Verpacken der Software in eine **.jar*
|
||||
\end{itemize}
|
||||
\item
|
||||
\textbf{Test}: Automatisierte Tests
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
Modul-Test mit angebundenen externen Test Datenbank
|
||||
\item
|
||||
Code-Coverage Report
|
||||
\end{itemize}
|
||||
\item
|
||||
\textbf{Analyse}: Analyse von Sourcecode und Test Reports
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
Statische Code Analyse durch SonarQube mit Qualitätsprofil
|
||||
\textbf{Sonar-Way}
|
||||
\item
|
||||
Analyse des Code-Coverage Reports
|
||||
\item
|
||||
Analyse des Modul-Test Ergebnisses
|
||||
\end{itemize}
|
||||
\item
|
||||
\textbf{Package}: Cloudgerechtes packaging der Software
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
Containerisierung in einem Container-Image für die Cloudnutzung
|
||||
\item
|
||||
Linting des Helm-Charts für Kubernetes
|
||||
\end{itemize}
|
||||
\item
|
||||
\textbf{Deploy}: Deployment der Software
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
Deployment auf einem Kubernetes Cluster durch Helm
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
|
||||
\hypertarget{welche-komponententools-werden-verwendet}{%
|
||||
\subsection{Welche Komponenten/Tools werden
|
||||
verwendet}\label{welche-komponententools-werden-verwendet}}
|
||||
|
||||
Folgende Komponenten/Tools werden im CI/CD Prozess verwendet:
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
\textbf{Build}
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
OpenAPI Codegenerator
|
||||
\item
|
||||
Maven
|
||||
\end{itemize}
|
||||
\item
|
||||
\textbf{Test}
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
JUnit-5
|
||||
\item
|
||||
JaCoCo
|
||||
\end{itemize}
|
||||
\item
|
||||
\textbf{Analyse}
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
SonarQube 7
|
||||
\end{itemize}
|
||||
\item
|
||||
\textbf{Package}
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
Kaniko
|
||||
\item
|
||||
Helm
|
||||
\end{itemize}
|
||||
\item
|
||||
\textbf{Deploy}
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
Helm
|
||||
\item
|
||||
Kubernetes
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
|
||||
\textbf{CI/CD Engine}: Serverless Jenkins X
|
||||
|
||||
\hypertarget{cicd-in-outputs}{%
|
||||
\section{CI/CD In-/Outputs}\label{cicd-in-outputs}}
|
||||
Hier werden die verschiedenen Parameter aufgelistet, die die CI/CD Pipeline beeinflussen könnten.
|
||||
\hypertarget{trigger}{%
|
||||
\subsection{Trigger}\label{trigger}}
|
||||
|
||||
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
|
||||
\textbf{CI-Run} zu starten.
|
||||
|
||||
Dabei wird ein \textbf{CI-Run} durch folgende Trigger und Konditionen
|
||||
gestartet:
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
Push auf den \textbf{master} branch auf GitLab
|
||||
\item
|
||||
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}}
|
||||
|
||||
Diese Daten fliesen und beeinflussen den \textbf{CI-Build}:
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
Source-Code
|
||||
\item
|
||||
Branch von den die Pipeline getriggert wurde
|
||||
\item
|
||||
User, der die Pipeline ausgelöst hat.
|
||||
\item
|
||||
Offene Mergerequests
|
||||
\item
|
||||
Prow-Konfiguration
|
||||
\item
|
||||
Jenkins X Projekt Konfiguration
|
||||
\item
|
||||
HMAC Secret des Webhookrequestes \# Pipeline Definitionen
|
||||
\end{itemize}
|
||||
|
||||
|
||||
\section{Pipeline Definitionen}
|
||||
Es existieren zwei verschiedene Pipelines die durch die Trigger
|
||||
ausgelöst werden können:
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
Release
|
||||
\item
|
||||
Preview
|
||||
\end{itemize}
|
||||
|
||||
\hypertarget{release}{%
|
||||
\subsection{Release}\label{release}}
|
||||
|
||||
Diese Pipeline kompeliert, 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.
|
||||
|
||||
\hypertarget{stage-setup-buildpack-maven}{%
|
||||
\subsubsection{Stage: Setup (Buildpack
|
||||
Maven)}\label{stage-setup-buildpack-maven}}
|
||||
|
||||
In dieser Stage wird der Buildprozess vorbereitet und eingeleitet.
|
||||
|
||||
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
|
||||
\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.
|
||||
\item
|
||||
\texttt{jx\ step\ tag\ -\/-version\ \textbackslash{}\$(cat\ VERSION)}
|
||||
Setzen der Software Version 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
|
||||
abzuschließen.
|
||||
|
||||
\textbf{Befehle}:
|
||||
|
||||
\begin{itemize}
|
||||
\item
|
||||
\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
|
||||
aufgerufen. Nach dem Abschluss jeder Phase wird überprüft, ob die
|
||||
Phase erfolgreich abgeschlossen wurde. \textbf{Phasen}:
|
||||
|
||||
\begin{itemize}
|
||||
\item
|
||||
\texttt{clean} Bereinigt den Projekt Ordner von überresten eines
|
||||
vorherigen buildprozesses.
|
||||
\item
|
||||
\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
|
||||
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.
|
||||
\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{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.
|
||||
\end{itemize}
|
||||
\item
|
||||
\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
|
||||
Sonarqube Analyse (Custom addition)
|
||||
|
||||
|
||||
\begin{Highlighting}[]
|
||||
\ExtensionTok{mvn}\NormalTok{ {-}{-}batch{-}mode sonar:sonar \textbackslash{}}
|
||||
\NormalTok{ {-}Dsonar.projectKey=}\OperatorTok{\textless{}}\NormalTok{sonarqube projekt key}\OperatorTok{\textgreater{}}\NormalTok{ \textbackslash{}}
|
||||
\NormalTok{ {-}Dsonar.host.url=}\OperatorTok{\textless{}}\NormalTok{sonarqube host}\OperatorTok{\textgreater{}}\NormalTok{ \textbackslash{}}
|
||||
\NormalTok{ {-}Dsonar.login=}\OperatorTok{\textless{}}\NormalTok{sonarqube login key}\OperatorTok{\textgreater{}}\NormalTok{ \textbackslash{}}
|
||||
\NormalTok{ {-}Dsonar.gitlab.commit\_sha=}\VariableTok{$(}\FunctionTok{git}\NormalTok{ rev{-}parse HEAD}\VariableTok{)}\NormalTok{ \textbackslash{}}
|
||||
\NormalTok{ {-}Dsonar.gitlab.ref\_name=}\VariableTok{$(}\FunctionTok{git}\NormalTok{ rev{-}parse {-}{-}abbrev{-}ref HEAD}\VariableTok{)}\NormalTok{ \textbackslash{}}
|
||||
\NormalTok{ {-}Dsonar.gitlab.project\_id=}\OperatorTok{\textless{}}\NormalTok{project id}\OperatorTok{\textgreater{}}\NormalTok{ \textbackslash{}}
|
||||
\NormalTok{ {-}Dsonar.branch.name=}\VariableTok{$BRANCH\_NAME}\NormalTok{ \textbackslash{}}
|
||||
\NormalTok{ {-}Dsonar.gitlab.user\_token=}\OperatorTok{\textless{}}\NormalTok{gitlab access toekn}\OperatorTok{\textgreater{}}\NormalTok{\textbackslash{}}
|
||||
\end{Highlighting}
|
||||
|
||||
|
||||
Analysiert Projekt mit Hilfe von SonarQube und bricht die Pipeline ab
|
||||
wenn Qualitätsprobleme gefunden wurden.
|
||||
\end{itemize}
|
||||
|
||||
\hypertarget{stage-promote-buildpack-maven}{%
|
||||
\subsubsection{Stage: Promote (Buildpack
|
||||
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
|
||||
starten.
|
||||
|
||||
\textbf{Befehle:}
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
\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{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
|
||||
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 ist nicht zum Bau einer Realease Version gedacht und
|
||||
bereitet die Software nur für ein themporäres Preview vor.
|
||||
|
||||
\textbf{Trigger}: Push oder Merge auf einen Branch, der Quelle eines
|
||||
offenen \emph{Merge-Request} ist.
|
||||
|
||||
\hypertarget{stage-build-buildpack-maven-1}{%
|
||||
\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
|
||||
abzuschließen.
|
||||
|
||||
\textbf{Befehle}:
|
||||
|
||||
\begin{itemize}
|
||||
\item
|
||||
\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
|
||||
aufgerufen. Nach dem Abschluss jeder Phase wird überprüft, ob die
|
||||
Phase erfolgreich abgeschlossen wurde. \textbf{Phasen}:
|
||||
|
||||
\begin{itemize}
|
||||
\item
|
||||
\texttt{clean} Bereinigt den Projekt Ordner von überresten eines
|
||||
vorherigen buildprozesses.
|
||||
\item
|
||||
\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
|
||||
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.
|
||||
\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{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.
|
||||
\end{itemize}
|
||||
\item
|
||||
\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
|
||||
Sonarqube Analyse (Custom addition)
|
||||
|
||||
|
||||
\begin{Highlighting}[]
|
||||
\ExtensionTok{mvn}\NormalTok{ {-}{-}batch{-}mode sonar:sonar \textbackslash{}}
|
||||
\NormalTok{ {-}Dsonar.projectKey=}\OperatorTok{\textless{}}\NormalTok{sonarqube projekt key}\OperatorTok{\textgreater{}}\NormalTok{ \textbackslash{}}
|
||||
\NormalTok{ {-}Dsonar.host.url=}\OperatorTok{\textless{}}\NormalTok{sonarqube host}\OperatorTok{\textgreater{}}\NormalTok{ \textbackslash{}}
|
||||
\NormalTok{ {-}Dsonar.login=}\OperatorTok{\textless{}}\NormalTok{sonarqube login key}\OperatorTok{\textgreater{}}\NormalTok{ \textbackslash{}}
|
||||
\NormalTok{ {-}Dsonar.gitlab.commit\_sha=}\VariableTok{$(}\BuiltInTok{echo} \VariableTok{$PULL\_REFS} \KeywordTok{|} \FunctionTok{cut}\NormalTok{ {-}d}\StringTok{\textquotesingle{}:\textquotesingle{}}\NormalTok{ {-}f3}\VariableTok{)}\NormalTok{ \textbackslash{}}
|
||||
\NormalTok{ {-}Dsonar.gitlab.ref\_name=}\VariableTok{$(}\FunctionTok{git}\NormalTok{ rev{-}parse {-}{-}abbrev{-}ref HEAD}\VariableTok{)}\NormalTok{ \textbackslash{}}
|
||||
\NormalTok{ {-}Dsonar.gitlab.project\_id=}\OperatorTok{\textless{}}\NormalTok{project id}\OperatorTok{\textgreater{}}\NormalTok{ \textbackslash{}}
|
||||
\NormalTok{ {-}Dsonar.branch.name=}\VariableTok{$BRANCH\_NAME}\NormalTok{ \textbackslash{}}
|
||||
\NormalTok{ {-}Dsonar.gitlab.user\_token=}\OperatorTok{\textless{}}\NormalTok{gitlab access toekn}\OperatorTok{\textgreater{}}\NormalTok{\textbackslash{}}
|
||||
\end{Highlighting}
|
||||
|
||||
|
||||
Analysiert Projekt mit Hilfe von SonarQube.
|
||||
\end{itemize}
|
||||
|
||||
\hypertarget{stage-promote-buildpack-maven-1}{%
|
||||
\subsubsection{Stage: Promote (Buildpack
|
||||
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.
|
||||
|
||||
\textbf{Befehle:}
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
\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{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
|
||||
Jenkins X \emph{Autodeploy} aktiviert wurde.
|
||||
\end{itemize}
|
||||
|
||||
@@ -290,3 +290,12 @@ beendet, wird mit der Merge-Operation auf dem Developmentbranch diese
|
||||
|
||||
Zur Releasefreigabe wird der Developmentbranch auf den Masterbranch mit
|
||||
der Merge-Operation integriert und produktiv gesetzt.
|
||||
|
||||
|
||||
~
|
||||
|
||||
\begin{figure}
|
||||
%centering
|
||||
\includegraphics[width=0.75\paperwidth]{gfx/cicd.jpg}
|
||||
\caption{Übersicht über CI/CD}
|
||||
\end{figure}
|
||||
|
||||
@@ -167,7 +167,7 @@ System wiederherzustellen bzw. sogar extern als Workaround zu betreiben
|
||||
|
||||
Im Anhang befindet sich das Bespiel einer Entwicklerdokumentation für die \cicd Implementierung eines Softwareentwicklungsprojektes.
|
||||
Die Dokumentation gehört zu einem Projekt, welches einen einfachen Java-Webservice durch \cicd automatisch integriert und ausliefert.
|
||||
\todo{ref zu doku}
|
||||
\ref{cicd-dokumentation}
|
||||
|
||||
\section{technische Maßnahmen}\label{mas:m3}
|
||||
|
||||
|
||||
6
chapters/table.tex
Normal file
6
chapters/table.tex
Normal file
@@ -0,0 +1,6 @@
|
||||
\chapter{Tabelle}
|
||||
\begin{figure}[]
|
||||
\includegraphics[width=0.75\paperheight,angle=90]{gfx/tabelle.jpg}
|
||||
\caption{}
|
||||
\label{}
|
||||
\end{figure}
|
||||
Reference in New Issue
Block a user