11 Commits

Author SHA1 Message Date
Thomas Klaehn
ddefac3f65 wip 2016-05-17 11:34:25 +02:00
Thomas Klaehn
eab74f64e5 wip 2016-05-02 06:12:57 +02:00
Thomas Klaehn
e9af178104 wip 2016-04-29 13:17:25 +02:00
Thomas Klaehn
0dadfe3253 wip 2016-04-28 17:55:10 +02:00
Thomas Klaehn
5bb283a6ed wip 2016-04-28 17:24:34 +02:00
Thomas Klaehn
417a6966c3 wip 2016-04-28 16:05:56 +02:00
Thomas Klaehn
64bda9fe50 wip 2016-04-28 15:03:04 +02:00
Thomas Klaehn
44bb058368 Make deps changed 2016-04-28 14:56:14 +02:00
Thomas Klaehn
7e5040e734 progress 2016-04-19 15:38:42 +02:00
Thomas Klaehn
ebd59ef6c8 work ar release image 2016-04-18 08:26:40 +02:00
Thomas Klaehn
22a389e98c image of litlab dev workflow 2016-04-15 14:11:07 +02:00
11 changed files with 502 additions and 145 deletions

View File

@@ -3,17 +3,12 @@ SRC := config/$(basename $(MAIN)).tex
DEP := \ DEP := \
config/headfoot.tex \ config/headfoot.tex \
config/sourcelst.tex \ config/sourcelst.tex \
content.tex \ config/titlepage.tex \
gitlab-runner.tex \
title.tex \
Makefile Makefile
all: $(MAIN) DEP += $(wildcard ./*.tex)
one_page: $(DEP) all: $(MAIN)
@latex config/framework_one_page.tex
latex config/framework_one_page.tex
dvipdf framework_one_page.dvi framework_one_page.pdf
clean: clean:
rm -f \ rm -f \
@@ -22,8 +17,7 @@ clean:
$(basename $(MAIN)).log \ $(basename $(MAIN)).log \
$(basename $(MAIN)).out \ $(basename $(MAIN)).out \
$(basename $(MAIN)).toc \ $(basename $(MAIN)).toc \
$(MAIN) \ $(MAIN)
framework_one_page.*
$(MAIN): $(DEP) $(MAIN): $(DEP)
@latex $(SRC) @latex $(SRC)

View File

@@ -40,9 +40,11 @@ citecolor = black]{hyperref}%
\pagestyle{scrheadings} % switch on head and foot line \pagestyle{scrheadings} % switch on head and foot line
\newpage \newpage
\tableofcontents \tableofcontents
\listoffigures
\listoftables
\lstlistoflistings
\input{config/headfoot.tex} \input{config/headfoot.tex}
\newpage \newpage
\input{content.tex} \input{content.tex}
\lstsetdefault
\end{document} \end{document}

View File

@@ -1,40 +0,0 @@
\documentclass[a4paper,12pt,oneside]{article}%
\usepackage[utf8]{inputenc}%
\usepackage[T1]{fontenc}%
\usepackage{caption}%
\usepackage{placeins}%
\usepackage{graphicx}%
\usepackage[colorlinks,
pdfpagelabels,
pdfstartview = FitH,
bookmarksopen = true,
bookmarksnumbered = true,
linkcolor = black,
plainpages = false,
hypertexnames = false,
citecolor = black]{hyperref}%
\usepackage{amsmath}%
\usepackage{amssymb}%
\usepackage{amstext}%
\usepackage{amsfonts}%
\usepackage{mathrsfs}%
\usepackage{hyperref}%
\usepackage{xcolor}%
\usepackage{scrpage2}%
\newcommand*\euler{\mathrm{e}}
%\input{title.tex}
\input{config/font.tex}
\input{config/sourcelst.tex}
\begin{document}
\clearscrheadfoot
\clearscrplain
\clearscrheadings
\pagestyle{scrheadings} % switch on head and foot line
\input{config/headfoot.tex}
\lstsetdefault
\input{content.tex}
\end{document}

View File

@@ -2,6 +2,6 @@
%\ihead{\includegraphics[scale=0.16]{config/novero_logo_web_500px.eps}} %\ihead{\includegraphics[scale=0.16]{config/novero_logo_web_500px.eps}}
\ohead{\today} \ohead{\today}
\setheadsepline{1pt} \setheadsepline{1pt}
%\ofoot{\pagemark} \ofoot{\pagemark}
%\setfootsepline{1pt} \setfootsepline{1pt}

View File

@@ -1,18 +1,6 @@
\usepackage{listings}% \usepackage{listings}%
\usepackage{courier}% \usepackage{courier}%
\newcommand{\lstsetdefault}
{\lstset
{
language=bash,
tabsize=4,
frame=single,
basicstyle=\ttfamily\small,
commentstyle=\color{black},
keywordstyle=\color{black}
}
}
\newcommand{\lstsetc} \newcommand{\lstsetc}
{\lstset {\lstset
{ {

View File

@@ -1,66 +1,195 @@
\section{Introduction} \section{Gitlab workflow} \label{sec:glw}
Gitlab-ci uses so called runners to execute the build jobs defined in the build
job file of a repository. A runner is a seperate tool and can be installed on
any machine. The type of connection is configurable. The intentions of these concept are:\\
\begin{itemize}
\item{remove (build) environmental dependency from ci server}
\item{multipe runners to parallize multiple builds}
\end{itemize}
The Runner has to be installed on a machine with a proper environment (compiler,
...) installed for the dedicated project it is used for. Figure \ref{fig:gitlab-runner-interaction} illustrates
the interaction of a local workstation, the gitlab(-ci) server and the
gitlab-ci-multi-runner.
\begin{figure} \begin{figure}
\begin{center} \begin{center}
\input{gitlab-runner.tex} \input{img_gitlab.tex}
\caption{Gitlab-ci - runner interaction} \caption{Gitlab workflow}
\label{fig:gitlab-runner-interaction} \label{fig:gitlab_workflow}
\end{center} \end{center}
\end{figure} \end{figure}
\section{Installation of gitlab-ci-multi-runner} Figure \ref{fig:gitlab_workflow} gives an overview of the gitlab workflow.
The Installation of the runner depends on the operating system of the host and The workflow is splitted in different phases:\\
is described here: \hyperlink{https://docs.gitlab.com/runner/install/}{\texttt{https://docs.gitlab.com/runner/install}}
\section{Installation of a dedicated runner}
\subsection{Prerequisites}
To install a dedicated runner prerequisites has to be fullfilled:
\begin{itemize} \begin{itemize}
\item{Url of gitlab ci coordinator} \item Implementation phase
\item{Registation token of that server} \item Code freeze
\item{Tags - if the build job defines tags to identify runners} \item Release phase
\end{itemize} \end{itemize}
These two informations can be gathered at the runners section of the project's
gitlab repository the runner is installed for. That section is accessible using:\texttt{<gitlab-url>/<project-path>/runners}\\
\textbf{Example:}\\
\texttt{https://novgit05.novero.com/agricola/agricola/runners}
\subsection{Register}
Open a shell an type: \texttt{gitlab-ci-multi-runner register}. An interactive
shell opens and requests some inputs (see prequisites).
\lstsetdefault
\begin{lstlisting}
user@dabbld01:~$ sudo gitlab-ci-multi-runner register
Running in system-mode.
Please enter the gitlab-ci coordinator URL For these different phases The continuous integration/delivery system
(e.g. https://gitlab.com/): triggers different build stages. For further details please refer to
https://novgit05.novero.com/ci section \ref{sec:ci}.
Please enter the gitlab-ci token for this runner:
<secret-token>
Please enter the gitlab-ci description for this runner:
[dabbld01]:
my-runner
Please enter the gitlab-ci tags for this runner (comma
separated):
Please enter the executor: shell, docker+machine, \subsection{Implementation phase}
docker-ssh+machine, kubernetes, docker, docker-ssh,
parallels, ssh, virtualbox: While in implementation phase every implementation for the next release is
shell done. Every implementation has to be done on a seperate branch. After
Runner registered successfully. Feel free to start it, finishing an implementation the branch it was made on has to be merged back
but if it's running already the config should be to the master branch. As defined an implementation could be one of:\\
automatically reloaded!
\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.
For a proper release configuration it is necessary to configure the ci
build job before creating the release branch (see section \ref{sec:ci_conf})
.
\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:
\FloatBarrier
\begin{itemize}
\item Automated static code analysis
\item Automated build
\item Automated test (not implemented yet)
\item Internal release deployment
\item External release deployment
\item Automated release note generation (not implemented yet)
\end{itemize}
\FloatBarrier
\subsection{Internal release deployment} \label{sec:ci_int}
\begin{figure}
\begin{center}
\input{img_deploy.tex}
\caption{Deployment of release candidats and releases}
\label{fig:deployment}
\end{center}
\end{figure}
For a branch named \texttt{release/...} the creation of a release candidate
is triggered automatically. Figure \ref{fig:deployment} illustrates the
deployment process. The internal release is processing the following steps:
\\
\begin{enumerate}
\item Build project variant specific configuration
\item Static code analysis of project variant specific configuration
\item Name the release depending on the release naming convention
\item Build release notes for the release candidate
\item Deploy the release to the project's release candidate deploy
location
\end{enumerate}
\subsection{External release deployment} \label{sec:ci_ext}
To create an external release the commit to be released must be tagged
using the following naming convention:\\
\texttt{release/<project\_specific\_name>}.\\
The project specific naming convention for Agricola ruby is:\\
\texttt{release/174\_AG*}.\\
\begin{enumerate}
\item Build project variant specific configuration
\item Static code analysis of project variant specific configuration
\item Name the release depending on the release naming convention
\item Build release notes for the release
\item Deploy the release to the project's release deploy location
\end{enumerate}
\subsection{Release note generation} \label{sec:rel_note}
\begin{figure}
\begin{center}
\input{img_history.tex}
\caption{Git commit history}
\label{fig:git_commit_history}
\end{center}
\end{figure}
To generate release notes by commit messages special tagged commit messages
are used. Release notes are generated for release candidats and releases.
For release candidats (internal releases) more tags are analyzed. The
definition of the commit tag rules are somewhere in the Polarion :) Because
the release notes content is taken from the log history of a release branch
each commit in it's history has to use tagged commits. To show logs only of
direct parents (commits on the current release branch and commits on the
master) the log command\\
\texttt{git log <first\_commit>..HEAD --first parent master}\\
can be used. Figure \ref{fig:git_commit_history} illustrates the flow of the
log history of the release branch shown in figure \ref{fig:gitlab_workflow}.
\subsection{Configuring the build jobs} \label{sec:ci_conf}
The configuration of gitlab-ci is made in the \texttt{.gitlab-ci.yml} file
in the root directory of the project's repository. The certain build stages
are using variables to customize the build. These variables are defined in
the \texttt{variables} section of the config file. Table \ref{tab:conf_var}
and listing \ref{lst:ag_cfg} gives an overview about customizing a release
phase.
\captionof{table}{Variables to customize a release phase}
\label{tab:conf_var}
\begin{tabular}{l l l}
\cellcolor{black}\color{white}variable & \cellcolor{black}\color{white}meaning & \cellcolor{black}\color{white}example\\
PRODUCT\_NAME & Short of the product name & AG\\
PRODUCT\_VARIANT & Short of the product variant & NA\\
PROJECT\_VERSION & ?? & 10\\
SW\_MAJOR & Software major number & 1\\
SW\_MINOR & Software minor number & 2\\\\
\end{tabular}
\newline
\lstsetbash
\begin{lstlisting}[caption=variables configuration, label=lst:ag_cfg]
variables:
PRODUCT_NAME: "AG"
PRODUCT_VARIANT: "NA"
PROJECT_VERSION: "10"
SW_MAJOR: "1"
SW_MINOR: "2"
\end{lstlisting} \end{lstlisting}
\subsection{Start as service}
Open a shell an type: \texttt{gitlab-ci-multi-runner start}

View File

@@ -1,23 +0,0 @@
\psset{griddots=0,gridlabels=8pt,subgriddiv=5}
\psset{xunit=10mm,yunit=10mm}
\newcommand{\clr}{black}
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\clr}
\psset{framearc=.5}
\psset{framesep=20pt}
\psset{arrowsize=10pt}
\begin{pspicture}(12,6)
% \psgrid
\rput(2.5,5){\psframebox{\textcolor{\clr}{Gitlab-ci server}}}
\rput(2.5,1){\psframebox{\textcolor{\clr}{Local workstation}}}
\rput(8.5,3){\psframebox{\textcolor{\clr}{Gitlab-ci-multi-runner}}}
\pscurve[fillstyle=none]{->}(4.6,5)(7.2,5)(8.5,3.9)
\pscurve[fillstyle=none]{<-}(3,4.1)(4,3.2)(5.8,3)
\pscurve[fillstyle=none]{<-}(8,2.1)(7.7,1.4)(8.5,.8)(9.3,1.4)(9,2.1)
\psline{->}(1,1.9)(1,4.1)
\rput(7,5.3){build trigger}
\rput(.5,3){push}
\rput(4,2.6){build result}
\rput(8.5,.5){build}
\end{pspicture}

97
img_deploy.tex Normal file
View File

@@ -0,0 +1,97 @@
\psset{griddots=0,gridlabels=8pt,subgriddiv=5}
\psset{xunit=10mm,yunit=10mm}
\begin{pspicture}(12,10)
% \psgrid
\newcommand{\clr}{black}
% phases
\psline[linewidth=1pt,linecolor=\clr,linestyle=dashed](0,2)(12,2)
\psline[linewidth=1pt,linecolor=\clr,linestyle=dashed](0,8)(12,8)
\rput{0}(1.5,2){
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\clr}
\psset{framearc=.5}
\psframebox{\textcolor{\clr}{code freeze}}
}
\psline[linewidth=1pt,linecolor=\clr]{<->}(11.5,2)(11.5,8)
\rput{90}(11.5,5){
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\clr}
\psset{framearc=.5}
\psframebox{\textcolor{\clr}{release phase}}
}
% master
\newcommand{\masterx}{10}
\psline[linewidth=2pt,linecolor=\clr,arrowsize=15pt]{->}(\masterx,1)(\masterx,9)
\psset{fillcolor=\clr}
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\masterx,2)
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\masterx,8)
\rput(\masterx,0.5){
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\clr}
\psset{framearc=.5}
\psframebox{\textcolor{\clr}{master}}
}
% feature/anti_osc
\renewcommand{\clr}{RedOrange}
\newcommand{\featurex}{8}
\psline[linewidth=2pt,linecolor=\clr](\masterx,2)(\featurex,3)
\psline[linewidth=2pt,linecolor=\clr](\featurex,3)(\featurex,7)
\psline[linewidth=2pt,linecolor=\clr,linestyle=dashed,arrowsize=15pt]{->}(\featurex,7)(\masterx,8)
\psline[linewidth=1pt,linecolor=\clr,linestyle=dashed](\featurex,2)(\featurex,8)
\multido{\nA=3+2}{3}{
\psset{fillcolor=\clr}
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\featurex,\nA)
}
\rput(\featurex,1.5){
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\clr}
\psset{framearc=.5}
\psframebox{\textcolor{\clr}{release/NAR\_C0}}
}
\newcommand{\rccolor}{Blue}
\psset{fillcolor=\rccolor}
\psdot[dotsize=5pt,dotstyle=o,linecolor=\rccolor](\masterx,2)
\psdot[dotsize=5pt,dotstyle=o,linecolor=\rccolor](\featurex,3)
\psdot[dotsize=5pt,dotstyle=o,linecolor=\rccolor](\featurex,5)
\psline[linewidth=1pt,linecolor=\rccolor,arrowsize=10pt]{->}(\masterx,2)(5.7,2.8)
\psline[linewidth=1pt,linecolor=\rccolor,arrowsize=10pt]{->}(\featurex,3)(5.7,4.6)
\psline[linewidth=1pt,linecolor=\rccolor,arrowsize=10pt]{->}(\featurex,5)(5.7,6.6)
\rput(3,3){
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\rccolor}
\psset{framearc=.5}
\psframebox{\textcolor{\rccolor}{deploy: release candidate 1}}
}
\rput(3,5){
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\rccolor}
\psset{framearc=.5}
\psframebox{\textcolor{\rccolor}{deploy: release candidate 2}}
}
\rput(3,7){
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\rccolor}
\psset{framearc=.5}
\psframebox{\textcolor{\rccolor}{deploy: release candidate 3}}
}
\newcommand{\rcolor}{ForestGreen}
\psset{fillcolor=\rcolor}
\psdot[dotsize=5pt,dotstyle=o,linecolor=\rcolor](\featurex,7)
\psline[linewidth=1pt,linecolor=\rcolor,arrowsize=10pt]{->}(\featurex,7)(4.6,8.6)
\rput(3,9){
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\rcolor}
\psset{framearc=.5}
\psframebox{\textcolor{\rcolor}{deploy: release}}
}
\end{pspicture}

136
img_gitlab.tex Normal file
View File

@@ -0,0 +1,136 @@
\psset{griddots=0,gridlabels=8pt,subgriddiv=5}
\psset{xunit=10mm,yunit=10mm}
\begin{pspicture}(14,16)
% \psgrid
\newcommand{\clr}{black}
% phases
\psline[linewidth=1pt,linecolor=\clr,linestyle=dashed](0,2)(14,2)
\psline[linewidth=1pt,linecolor=\clr,linestyle=dashed](0,8)(14,8)
\psline[linewidth=1pt,linecolor=\clr,linestyle=dashed](0,14)(14,14)
\rput{0}(1.5,8){
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\clr}
\psset{framearc=.5}
\psframebox{\textcolor{\clr}{code freeze}}
}
\psline[linewidth=1pt,linecolor=\clr]{<->}(13.5,2)(13.5,8)
\rput{90}(13.5,5){
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\clr}
\psset{framearc=.5}
\psframebox{\textcolor{\clr}{implementation phase}}
}
\psline[linewidth=1pt,linecolor=\clr]{<->}(13.5,8)(13.5,14)
\rput{90}(13.5,11){
\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,1)(\masterx,15)
\psset{fillcolor=\clr}
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\masterx,2)
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\masterx,3)
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\masterx,7)
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\masterx,8)
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\masterx,14)
\rput(\masterx,0.5){
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\clr}
\psset{framearc=.5}
\psframebox{\textcolor{\clr}{master}}
}
% feature/anti_osc
\renewcommand{\clr}{ForestGreen}
\newcommand{\featurex}{5}
\psline[linewidth=2pt,linecolor=\clr](\masterx,2)(\featurex,3)
\psline[linewidth=2pt,linecolor=\clr](\featurex,3)(\featurex,7)
\psline[linewidth=2pt,linecolor=\clr,arrowsize=15pt]{->}(\featurex,7)(\masterx,8)
\psline[linewidth=1pt,linecolor=\clr,linestyle=dashed](\featurex,2)(\featurex,8)
\multido{\nA=3+2}{3}{
\psset{fillcolor=\clr}
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\featurex,\nA)
}
\rput(\featurex,1.5){
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\clr}
\psset{framearc=.5}
\psframebox{\textcolor{\clr}{feature/anti\_osc}}
}
% old_branch
\renewcommand{\clr}{Gray}
\newcommand{\xpos}{9}
\psline[linewidth=2pt,linecolor=\clr,arrowsize=15pt]{->}(\xpos,2)(\masterx,3)
\psline[linewidth=2pt,linecolor=\clr](\xpos,1)(\xpos,2)
% fix/calibration_crc
\renewcommand{\clr}{Maroon}
\newcommand{\fixx}{9}
\psline[linewidth=2pt,linecolor=\clr](\masterx,3)(\fixx,4)
\psline[linewidth=2pt,linecolor=\clr](\fixx,4)(\fixx,6)
\psline[linewidth=2pt,linecolor=\clr,arrowsize=15pt]{->}(\fixx,6)(\masterx,7)
\psline[linewidth=1pt,linecolor=\clr,linestyle=dashed](\fixx,3)(\fixx,7)
\multido{\nA=4+2}{2}{
\psset{fillcolor=\clr}
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,\nA)
}
\rput(\fixx,2.5){
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\clr}
\psset{framearc=.5}
\psframebox{\textcolor{\clr}{fix/calibration\_crc}}
}
% feature/dynamic_monitoring
\renewcommand{\clr}{RoyalBlue}
\renewcommand{\fixx}{11}
\psline[linewidth=2pt,linecolor=\clr](\masterx,3)(\fixx,4)
\psline[linewidth=2pt,linecolor=\clr,arrowsize=15pt]{->}(\fixx,4)(\fixx,12)
\psline[linewidth=1pt,linecolor=\clr,linestyle=dashed](\fixx,3)(\fixx,4)
\rput(\fixx,12.5){
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\clr}
\psset{framearc=.5}
\psframebox{\textcolor{\clr}{feature/dyn\_mon}}
}
\psset{fillcolor=\clr}
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,4)
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,6)
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,8)
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,10)
% release/NAR_C0
\renewcommand{\clr}{RedOrange}
\renewcommand{\fixx}{5}
\psline[linewidth=2pt,linecolor=\clr](\masterx,8)(\fixx,9)
\psline[linewidth=2pt,linecolor=\clr](\fixx,9)(\fixx,13)
\psline[linewidth=1pt,linecolor=\clr,linestyle=dashed](\fixx,8)(\fixx,14)
\psline[linewidth=2pt,linecolor=\clr,linestyle=dashed,arrowsize=15pt]{->}(\fixx,13)(\masterx,14)
\rput(\fixx,14.5){
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\clr}
\psset{framearc=.5}
\psframebox{\textcolor{\clr}{release/NAR\_C0}}
}
\rput(2.5,13){
\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}
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,9)
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,11)
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,13)
\end{pspicture}

74
img_history.tex Normal file
View File

@@ -0,0 +1,74 @@
\psset{griddots=0,gridlabels=8pt,subgriddiv=5}
\psset{xunit=10mm,yunit=10mm}
\begin{pspicture}(14,16)
% \psgrid
\newcommand{\clr}{Gray}
\newcommand{\bclr}{RedOrange}
\newcommand{\hclr}{Blue}
\newcommand{\mclr}{black}
% master
\newcommand{\masterx}{7}
\psline[linewidth=2pt,linecolor=\clr,arrowsize=15pt]{->}(\masterx,8)(\masterx,15)
\psline[linewidth=2pt,linecolor=\hclr](\masterx,1)(\masterx,8)
\psset{fillcolor=\hclr}
\psdot[dotsize=10pt,dotstyle=o,linecolor=\hclr](\masterx,2)
\psdot[dotsize=10pt,dotstyle=o,linecolor=\hclr](\masterx,3)
\psdot[dotsize=10pt,dotstyle=o,linecolor=\hclr](\masterx,7)
\psdot[dotsize=10pt,dotstyle=o,linecolor=\hclr](\masterx,8)
\rput(\masterx,0.5){
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\mclr}
\psset{framearc=.5}
\psframebox{\textcolor{\mclr}{master}}
}
% feature/anti_osc
\newcommand{\featurex}{5}
\psline[linewidth=2pt,linecolor=\clr](\masterx,2)(\featurex,3)
\psline[linewidth=2pt,linecolor=\clr](\featurex,3)(\featurex,7)
\psline[linewidth=2pt,linecolor=\clr,arrowsize=15pt]{->}(\featurex,7)(\masterx,8)
\multido{\nA=3+2}{3}{
\psset{fillcolor=\clr}
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\featurex,\nA)
}
% old_branch
\newcommand{\xpos}{9}
\psline[linewidth=2pt,linecolor=\clr,arrowsize=15pt]{->}(\xpos,2)(\masterx,3)
\psline[linewidth=2pt,linecolor=\clr](\xpos,1)(\xpos,2)
% fix/calibration_crc
\newcommand{\fixx}{9}
\psline[linewidth=2pt,linecolor=\clr](\masterx,3)(\fixx,4)
\psline[linewidth=2pt,linecolor=\clr](\fixx,4)(\fixx,6)
\psline[linewidth=2pt,linecolor=\clr,arrowsize=15pt]{->}(\fixx,6)(\masterx,7)
\multido{\nA=4+2}{2}{
\psset{fillcolor=\clr}
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,\nA)
}
% feature/dynamic_monitoring
\renewcommand{\fixx}{11}
\psline[linewidth=2pt,linecolor=\clr](\masterx,3)(\fixx,4)
\psline[linewidth=2pt,linecolor=\clr,arrowsize=15pt]{->}(\fixx,4)(\fixx,12)
\psset{fillcolor=\clr}
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,4)
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,6)
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,8)
\psdot[dotsize=10pt,dotstyle=o,linecolor=\clr](\fixx,10)
% release/NAR_C0
\renewcommand{\fixx}{5}
\psline[linewidth=1pt,linecolor=\bclr,linestyle=dashed](\fixx,8)(\fixx,14)
\psline[linewidth=2pt,linecolor=\hclr](\masterx,8)(\fixx,9)
\psline[linewidth=2pt,linecolor=\hclr](\fixx,9)(\fixx,13)
\rput(\fixx,14.5){
\psset{fillcolor=white}
\psset{fillstyle=solid}
\psset{linecolor=\bclr}
\psset{framearc=.5}
\psframebox{\textcolor{\bclr}{release/NAR\_C0}}
}
\psset{fillcolor=\hclr}
\psdot[dotsize=10pt,dotstyle=o,linecolor=\hclr](\fixx,9)
\psdot[dotsize=10pt,dotstyle=o,linecolor=\hclr](\fixx,11)
\psdot[dotsize=10pt,dotstyle=o,linecolor=\hclr](\fixx,13)
\end{pspicture}

View File

@@ -1,4 +1,4 @@
\newcommand{\docname}{Gitlab-ci} \newcommand{\docname}{Release Process}
\newcommand{\prjname}{gitlab-ci-multi-runner} \newcommand{\prjname}{Agricola}
\newcommand{\docversion}{0.1} \newcommand{\docversion}{0.1}
\newcommand{\docauthor}{Thomas Klaehn} \newcommand{\docauthor}{Thomas Klaehn}