This commit is contained in:
Thomas Klaehn 2016-04-19 15:38:42 +02:00
parent ebd59ef6c8
commit 7e5040e734
4 changed files with 131 additions and 34 deletions

View File

@ -39,6 +39,8 @@ citecolor = black]{hyperref}%
\pagestyle{scrheadings} % switch on head and foot line \pagestyle{scrheadings} % switch on head and foot line
\newpage \newpage
\tableofcontents \tableofcontents
\newpage
\listoffigures
\input{config/headfoot.tex} \input{config/headfoot.tex}
\newpage \newpage
\input{content.tex} \input{content.tex}

View File

@ -1,6 +1,76 @@
\begin{center} \section{Gitlab workflow} \label{sec:glw}
\input{img_gitlab_dev.tex} \begin{figure}
\end{center}
\begin{center} \begin{center}
\input{img_gitlab_rel.tex} \input{img_gitlab_rel.tex}
\caption{Gitlab workflow}
\label{fig:gitlab_workflow}
\end{center} \end{center}
\end{figure}
Figure \ref{fig:gitlab_workflow} gives an overview of the gitlab workflow.
The workflow is splitted in different phases:\\
\begin{itemize}
\item Implementation phase
\item Code freeze
\item Release phase
\end{itemize}
For these different phases The continuous integration/delivery system
triggers different build stages. For further details please refer to
section \ref{sec:ci}.
\subsection{Implementation phase}
While in implementation phase every implementation for the next release is
done. Every implementation has to be done on a seperate branch. After
finishing an implementation the branch it was made on has to be merged back
to the master branch. As defined an implementation could be one of:\\
\begin{itemize}
\item Feature
\item Fix
\end{itemize}
\subsubsection{Feature implementation}
A feature is a a new piece of code that implements new functionality into
the system.
\subsubsection{Fix implementation}
If in any testing phase an issue is detected these issue can be fixed with
a fix implementation.
\subsubsection{Further kinds of implementation}
Beside these defined implementations any other kind of implementation is
possible but has to be made also on a seperate branch.
\subsection{Code freeze}
The transition between implementation phase and release phase is called
code freeze. Code freeze means each for the upcoming release planned
feature is implemented and merged to the main branch (normally master) of
the project's git repository (see figure \ref{fig:gitlab_workflow}). For
the upcoming release a "\texttt{release/...}" named branch is created.
\subsection{Release phase}
Any release relevant issue that is detected while release phase has to be
fixed at the release branch. The release phase is splitted into different
stages:
\begin{itemize}
\item Internal release(s)
\item External release
\end{itemize}
\subsubsection{Internal release(s)}
Each push to a release branch triggers the creation of an internal release.
Only internal releases must be used to system test the release branch. For
details please refer to section \ref{sec:ci_int}.
\subsubsection{External release}
If no further release relevant issues could be found (or are accepted as
known issues) an external release is created by tagging the commit which
should be delivered to the customer. For details please refer to section
\ref{sec:ci_ext}.
\section{Continuous integration/delivery} \label{sec:ci}
As continuous integration system the gitlab built in ci-system
\textit{gitlab-ci} is used. Beside the most important task of ci, ensure
constant high code quality, the ci system is used for various tasks:
\begin{itemize}
\item Automated static code analysis (not implemented yet)
\item Automated build
\item Automated test (not implemented yet)
\item Internal release deployment
\item External release deployment
\end{itemize}
%\subsection{External release deployment} \label{sec:ci_ext}
%An external release must be tagged with following naming convention:\\
%\texttt{release/<project\_specific\_name>}.\\
%The project specific naming convention for Agricola ruby is:\\
%\texttt{release/174\_AG*}.\\

View File

@ -23,7 +23,7 @@
\psline[linewidth=2pt,linecolor=\clr](\masterx,8)(\featurex,7) \psline[linewidth=2pt,linecolor=\clr](\masterx,8)(\featurex,7)
\psline[linewidth=2pt,linecolor=\clr](\featurex,7)(\featurex,4) \psline[linewidth=2pt,linecolor=\clr](\featurex,7)(\featurex,4)
\psline[linewidth=2pt,linecolor=\clr,arrowsize=15pt]{->}(\featurex,4)(\masterx,3) \psline[linewidth=2pt,linecolor=\clr,arrowsize=15pt]{->}(\featurex,4)(\masterx,3)
\psline[linewidth=1pt,linecolor=\clr,linestyle=dashed](\featurex,8)(\featurex,1) \psline[linewidth=1pt,linecolor=\clr,linestyle=dashed](\featurex,8)(\featurex,3)
\multido{\nA=4+1.5}{3}{ \multido{\nA=4+1.5}{3}{
\psset{fillcolor=\clr} \psset{fillcolor=\clr}
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\featurex,\nA) \psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\featurex,\nA)
@ -42,25 +42,18 @@
\psset{framearc=.5} \psset{framearc=.5}
\psframebox{\textcolor{\clr}{merge request}} \psframebox{\textcolor{\clr}{merge request}}
} }
\rput(2,3){
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\clr}
\psset{framearc=.5}
\psframebox{\textcolor{\clr}{merge request done}}
}
% fix/calibration_crc % fix/calibration_crc
\renewcommand{\clr}{Maroon} \renewcommand{\clr}{Maroon}
\newcommand{\fixx}{8} \newcommand{\fixx}{8}
\psline[linewidth=2pt,linecolor=\clr](\masterx,7)(\fixx,6) \psline[linewidth=2pt,linecolor=\clr](\masterx,7)(\fixx,6)
\psline[linewidth=2pt,linecolor=\clr](\fixx,6)(\fixx,3) \psline[linewidth=2pt,linecolor=\clr](\fixx,6)(\fixx,3)
\psline[linewidth=2pt,linecolor=\clr,linestyle=dashed,arrowsize=15pt]{->}(\fixx,3)(\masterx,2) \psline[linewidth=2pt,linecolor=\clr,linestyle=dashed,arrowsize=15pt]{->}(\fixx,3)(\masterx,2)
\psline[linewidth=1pt,linecolor=\clr,linestyle=dashed](\fixx,8)(\fixx,1) \psline[linewidth=1pt,linecolor=\clr,linestyle=dashed](\fixx,7)(\fixx,2)
\multido{\nA=3+1.5}{3}{ \multido{\nA=3+1.5}{3}{
\psset{fillcolor=\clr} \psset{fillcolor=\clr}
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,\nA) \psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,\nA)
} }
\rput(\fixx,8.5){ \rput(\fixx,7.5){
\psset{fillcolor=white} \psset{fillcolor=white}
\psset{fillstyle=solid} \psset{fillstyle=solid}
\psset{linecolor=\clr} \psset{linecolor=\clr}
@ -74,12 +67,5 @@
\psset{framearc=.5} \psset{framearc=.5}
\psframebox{\textcolor{\clr}{merge request}} \psframebox{\textcolor{\clr}{merge request}}
} }
\rput(10,2){
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\clr}
\psset{framearc=.5}
\psframebox{\textcolor{\clr}{merge request open}}
}
\end{pspicture} \end{pspicture}
\captionof{figure}{Gitlab workflow while development} \captionof{figure}{development workflow}

View File

@ -1,10 +1,41 @@
\psset{griddots=0,gridlabels=8pt,subgriddiv=5} \psset{griddots=0,gridlabels=8pt,subgriddiv=5}
\psset{xunit=10mm,yunit=10mm} \psset{xunit=10mm,yunit=10mm}
\begin{pspicture}(12,20) \begin{pspicture}(14,20)
\psgrid % \psgrid
% master
\newcommand{\clr}{black} \newcommand{\clr}{black}
\newcommand{\masterx}{6} % phases
\psline[linewidth=1pt,linecolor=\clr,linestyle=dashed](0,18)(14,18)
\psline[linewidth=1pt,linecolor=\clr,linestyle=dashed](0,12)(14,12)
\psline[linewidth=1pt,linecolor=\clr,linestyle=dashed](0,4)(14,4)
\rput{0}(1.5,12){
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\clr}
\psset{framearc=.5}
\psframebox{\textcolor{\clr}{code freeze}}
}
\psline[linewidth=1pt,linecolor=\clr]{->}(13.5,17)(13.5,17.9)
\psline[linewidth=1pt,linecolor=\clr]{->}(13.5,13)(13.5,12.1)
\rput{90}(13.5,15){
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\clr}
\psset{framearc=.5}
\psframebox{\textcolor{\clr}{implementation phase}}
}
\psline[linewidth=1pt,linecolor=\clr]{->}(13.5,9.2)(13.5,11.9)
\psline[linewidth=1pt,linecolor=\clr]{->}(13.5,6.6)(13.5,4.1)
\rput{90}(13.5,8){
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\clr}
\psset{framearc=.5}
\psframebox{\textcolor{\clr}{release phase}}
}
% master
\newcommand{\masterx}{7}
\psline[linewidth=2pt,linecolor=\clr,arrowsize=15pt]{->}(\masterx,19)(\masterx,1) \psline[linewidth=2pt,linecolor=\clr,arrowsize=15pt]{->}(\masterx,19)(\masterx,1)
\psset{fillcolor=\clr} \psset{fillcolor=\clr}
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\masterx,18) \psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\masterx,18)
@ -22,7 +53,7 @@
} }
% feature/anti_osc % feature/anti_osc
\renewcommand{\clr}{ForestGreen} \renewcommand{\clr}{ForestGreen}
\newcommand{\featurex}{4} \newcommand{\featurex}{5}
\psline[linewidth=2pt,linecolor=\clr](\masterx,18)(\featurex,17) \psline[linewidth=2pt,linecolor=\clr](\masterx,18)(\featurex,17)
\psline[linewidth=2pt,linecolor=\clr](\featurex,17)(\featurex,14) \psline[linewidth=2pt,linecolor=\clr](\featurex,17)(\featurex,14)
\psline[linewidth=2pt,linecolor=\clr,arrowsize=15pt]{->}(\featurex,14)(\masterx,13) \psline[linewidth=2pt,linecolor=\clr,arrowsize=15pt]{->}(\featurex,14)(\masterx,13)
@ -40,7 +71,7 @@
} }
% fix/calibration_crc % fix/calibration_crc
\renewcommand{\clr}{Maroon} \renewcommand{\clr}{Maroon}
\newcommand{\fixx}{8} \newcommand{\fixx}{9}
\psline[linewidth=2pt,linecolor=\clr](\masterx,17)(\fixx,16) \psline[linewidth=2pt,linecolor=\clr](\masterx,17)(\fixx,16)
\psline[linewidth=2pt,linecolor=\clr](\fixx,16)(\fixx,13) \psline[linewidth=2pt,linecolor=\clr](\fixx,16)(\fixx,13)
\psline[linewidth=2pt,linecolor=\clr,arrowsize=15pt]{->}(\fixx,13)(\masterx,12) \psline[linewidth=2pt,linecolor=\clr,arrowsize=15pt]{->}(\fixx,13)(\masterx,12)
@ -58,9 +89,9 @@
} }
% feature/dynamic_monitoring % feature/dynamic_monitoring
\renewcommand{\clr}{RoyalBlue} \renewcommand{\clr}{RoyalBlue}
\renewcommand{\fixx}{10} \renewcommand{\fixx}{11}
\psline[linewidth=2pt,linecolor=\clr](\masterx,15)(\fixx,13) \psline[linewidth=2pt,linecolor=\clr](\masterx,15)(\fixx,13)
\psline[linewidth=2pt,linecolor=\clr,arrowsize=15pt]{->}(\fixx,13)(\fixx,1) \psline[linewidth=2pt,linecolor=\clr,arrowsize=15pt]{->}(\fixx,13)(\fixx,8.5)
\psline[linewidth=1pt,linecolor=\clr,linestyle=dashed](\fixx,14)(\fixx,9) \psline[linewidth=1pt,linecolor=\clr,linestyle=dashed](\fixx,14)(\fixx,9)
\rput(\fixx,14.5){ \rput(\fixx,14.5){
\psset{fillcolor=white} \psset{fillcolor=white}
@ -71,9 +102,11 @@
} }
\psset{fillcolor=\clr} \psset{fillcolor=\clr}
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,13) \psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,13)
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,11.5)
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,10)
% release/NAR_C0 % release/NAR_C0
\renewcommand{\clr}{RedOrange} \renewcommand{\clr}{RedOrange}
\renewcommand{\fixx}{4} \renewcommand{\fixx}{5}
\psline[linewidth=2pt,linecolor=\clr](\masterx,12)(\fixx,11) \psline[linewidth=2pt,linecolor=\clr](\masterx,12)(\fixx,11)
\psline[linewidth=2pt,linecolor=\clr](\fixx,11)(\fixx,5) \psline[linewidth=2pt,linecolor=\clr](\fixx,11)(\fixx,5)
\psline[linewidth=1pt,linecolor=\clr,linestyle=dashed](\fixx,12)(\fixx,4) \psline[linewidth=1pt,linecolor=\clr,linestyle=dashed](\fixx,12)(\fixx,4)
@ -85,6 +118,13 @@
\psset{framearc=.5} \psset{framearc=.5}
\psframebox{\textcolor{\clr}{release/NAR\_C0}} \psframebox{\textcolor{\clr}{release/NAR\_C0}}
} }
\rput(2.5,5){
\psset{fillcolor=\clr}
\psset{fillstyle=solid}
\psset{linecolor=\clr}
\psset{framearc=.5}
\psframebox{\textcolor{white}{\shortstack{tags/release/\\174\_AG\_NA\_10-01.02}}}
}
\psset{fillcolor=\clr} \psset{fillcolor=\clr}
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,11) \psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,11)
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,9.5) \psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,9.5)
@ -92,4 +132,3 @@
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,6.5) \psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,6.5)
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,5) \psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,5)
\end{pspicture} \end{pspicture}
\captionof{figure}{Gitlab workflow while release}