1 Commits

Author SHA1 Message Date
Thomas Klaehn
a945c08e80 error in mqtt fixed 2016-05-02 11:21:37 +02:00
9 changed files with 245 additions and 595 deletions

View File

@@ -3,18 +3,13 @@ SRC := config/$(basename $(MAIN)).tex
DEP := \ DEP := \
config/headfoot.tex \ config/headfoot.tex \
config/sourcelst.tex \ config/sourcelst.tex \
config/titlepage.tex \
content.tex \ content.tex \
gitlab-runner.tex \
title.tex \ title.tex \
Makefile Makefile
all: $(MAIN) all: $(MAIN)
one_page: $(DEP)
@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 \
$(basename $(MAIN)).aux \ $(basename $(MAIN)).aux \
@@ -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

@@ -1,440 +0,0 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
%%Title: Laird Logo_TM Mark_RGB_200.eps
%%CreationDate: Mon Apr 11 10:58:39 2016
%%DocumentData: Clean7Bit
%%LanguageLevel: 2
%%Pages: 1
%%BoundingBox: 14 14 215 108
%%EndComments
%%BeginProlog
% Use own dictionary to avoid conflicts
10 dict begin
%%EndProlog
%%Page: 1 1
% Translate for offset
14.173228346456694 14.173228346456694 translate
% Translate to begin of first scanline
0 93.01903937007873 translate
200.04094488188974 -93.01903937007873 scale
% Image geometry
200 93 8
% Transformation matrix
[ 200 0 0 93 0 0 ]
% Strings to hold RGB-samples per scanline
/rstr 200 string def
/gstr 200 string def
/bstr 200 string def
{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
true 3
%%BeginData: 17923 ASCII Bytes
colorimage
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
ZMsq(q>10kf`(sLqYLKrs8;ios8C+?J,~>
ZMsq(q>:6lf`1dFs8N6"rVccpb5Zt~>
ZMsq(q>C<mf`1dG!WW/ur;lrsb5Zt~>
JcG<@!<1+?J,~>
JcG<@!<1+?J,~>
JcG<@!<1+?J,~>
kl:GWf)GmPs5p>brN6:,X6]fbgA_5dX0;K)#d!^bX2;pPbPo]bJ,~>
kl:GWf)GmPs6$GerN?@.XR#ocgA_5eXK_Z,#d*ddXM`-TbPo]bJ,~>
kl:GWf)GmPs6dhHr5SoYnc/UBrrLKcr5T)_q!uDSg%sJ&bQ!(~>
[/U:,s02P+r;Zs%!5AL2gA_4'!!<&u#L`X5b%JP)rlb=l~>
[/U:,s02P+r;Zs%!5AL2gA_4'!!<&u#L`X6b%S\-rlb=l~>
[/U:-s2I)hrBpcW4ja6-gA_4`4\#B<#X[DJYhG>lQN#)-J,~>
lMh"cs(NrAr\Xg;/7AMWf`)*Ps0;V/r<!0+!5JR3gA_4)!!W<'#Q`?QW8!DZNVUctJ,~>
lMh"cs(j;Lr](*C0P(4_f`)*Ps0Mb5r<EH3!5\^5gA_4-!"&T/#R/WUWS<P_NqpluJ,~>
lMh"ds-RYHrcA9cDNb&!f`)*Qs2mi0rD3Vo8^m_<gA_4j8l>O`#Z'@X_<%nsY5?EBJ,~>
lMh"cs$?\frW!''!&srWf`)*Ps02P+r;Zs%!5JR3gA_4'!!<&u#L`Y+mb,b7qof"i~>
lMh"cs$?\frW!''!&srWf`)*Ps0D\1r<*6-!5SX4gA_4*!!`B)#QiHSg@!Y;fDEbkJ,~>
lMh"cs)pLqr^I#]4`:<!f`)*Qs2dZ*rD!Jk8(7M:gA_4i7o0(Y#Yj7Wjn%TgjS[4$J,~>
lMh"cs$QhkrW<9-!'1)Yf`)*Ps0;V/r<!0+!5JR3gA_4'!!<&u"k3MMs8W)?s*t~>
lMh"cs$m%rrW`Q5!'L;\f`)*Ps0Mb5r<EH3!5\^5gA_4*!!`B)"p39RrVuosao?k~>
lMh"cs*[C8r_N_q89Y%4f`)*Qs2mi0rD3Vo8^m_<gA_4i7o0(Y##4%UrVuosao?k~>
lMh"cs$?\frW!''!&srWf`)*Ps02P+r;Zs%!5AL2gA_4'!!<&u#1NVMrr2lpb5Zt~>
lMh"cs$ZnmrWE?/!':/Zf`)*Ps02P+r;Zs%!5AL2gA_4*!!`B)#6NBSr;Q]orQ>.j~>
lMh"cs*R73r_<Sm7We\0f`)*Qs2I,jrC$iY510E/gA_4i7o0(Y"ARhSrVulrb5Zt~>
lMh"cs$?\frW!''!&srWf`)*Ps26`ZrB:?L2U;@$gA_4'!!<&u!n72J`rCP~>
lMh"cs$ZnmrWE?/!':/Zf`)*Ps2?oarBUQR3m[j)gA_4*!!`B)!s6sOrPnkf~>
lMh"cs*R73r_<Sm7We\0f`)*Qs427=rH\TnFl*/sgA_4i7o0(Y"&7_RrPnkf~>
lMh"cs$?\frW!''!&srWmf*@frVZNh!rW#rc2RhDrVcTtrVlis.0'GI!!:XLrPnkf~>
lMh"cs$ZnmrWE?/!':/Zmf*@frVZNh!rW#rc2RhDrVl[!r;HWps""-Sr<*3(e,TBds*t~>
lMh"cs*R73r_<Sm7We\0mf3=d!<)cls8;rsc2RhDrVl^"rVlfrs(b,#rD!Ghi;`bqs*t~>
lMh"cs$?\frW!''!&srWnc/Xd!<2Wj!r`#pq>UHoq>(*jrVllrqYU?mrVm'"qtp<hrVQTqrVQHk
"o\>t.0'GI!!:XLrPnkf~>
lMh"cs$ZnmrWE?/!':/Znc&[gqu66f!r`#pq>UHoq>(*jrVllrqYU?mrVm'"qtp<hrVQTqrVQHk
"oeDu/-#nQ"9S_Ss8Bt;J,~>
lMh"cs*R73r_<Sm7We\0nc/Xe!<2Wj!ri,sq>UHoq>C0j!<2in!<2rs!r`&prr)`o!WDrmrrrE"
rbG#"rD!Ghi;`bqs*t~>
lMh"cs$?\frW!''!&srWmf*^efY42FL4b/<S[6Z2rr3#sro3qYr;HBi&H;V-s7OR6Q'ef0r;ZdG
!!<&u!n72J`rCP~>
lMh"cs$ZnmrWE?/!':/Zmf*^eftXGLLkUSDT!Zl5rr3#sro3qYr;HBi&H;V-s7OU8Q^Y25r;ZdJ
!!`B)!s6sOrPnkf~>
lMh"cs*R73r_<Sm7We\0mf*^ijjLuPXJr5(]?B('rr2usiVrrWrqHF(rr)lsptN]q\B*e1s8Qk*
:]4#j:#Q'M`rCP~>
lMh"cs$?\frW!''!&srWo)AmlVe.q)!qu[!&Ntm/s8;lqrt>>2mT*"W:/4SW>kS-rr;W$K;>s<*
;*q\jq>^HBP@dfdVuQ\prqufFA/Y:F"p6E0jt$K6qu?fIs8Bt;J,~>
lMh"cs$ZnmrWE?/!':/Zo)AmlW+\:3"o&'&!YmtVj8]&Vrr3W1s6a#c;Gg:h:1*\orque_79'7`
(0!`2s7u]oe!+QK9WA'is8Mrre7Td&r;[$+0S\^C!!`B)!s6sOrPnkf~>
lMh"cs*R73r_<Sm7We\0o)B!p_Nf:N:Idc=rBU`V78-p1XR,ucrr2p#rr;SIK)UE1Kn59Zs8Mus
[<mZ-KHZ(sbl@S?s5:8LM1NPDrVulqs5B2M8jbp36r.["mVPHirD!Ghi;`bqs*t~>
lMh"cs$?\frW!''!&srWo`#3rs6p^&!<<*$q?.!)!<<-#$&&<Ws8N`2s5j[h!<<*#!#4r&rql_-
!!N9$('FW#s8KPi!<<*&!-A2;rVlV6!WW3$rWEB,!!*'4%/Kr*e,TBds*t~>
lMh"cs$ZnmrWE?/!':/Zo`#6ss6p^&!<<3+#Q"c2#6Y#-!"=V]rr<!2rr;*g!!*'"!<<i's8Moq
AcMu5!$DCEP5kNm4p(cb"9<NCqu-NiFT_[F"U>;=#6Or+'bCED"9S_Ss8Bt;J,~>
lMh"cs*R73r_<Sm7We\0o`#6ss7K8R7nQKO;#=)q:ejYP5uXf_rr2p1rr;@Y5t"(-6pFTBs8Mrr
N]'B+6QeiVYQ+UJG>(:h7Q$P4r;Q`nT1_LC:Janc:ejMG=]\;p:'45Ks8Bt;J,~>
lMh"cs$?\frW!''!&srWo`#3rs6pj*"9AN'quQ`r*!$-E!ruF&rr<#ts5sjl"9S`/!#P/)rql_/
!!iK*'aF`,s&K+#!<`N2!-S><s6r5Q!sA]&!!*-(p](BEs8Bt;J,~>
lMh"cs$ZnmrWE?/!':/Zo`#3rs7%$1#R(A7r!!$%*!HQQ"9;X*rr<#ts5t!t#R:S?!ZU\0rql_1
!"8c2'ak#1s&f=%":,8@!-eJ>s7&DU"pbD0"9Si6!X&<&!s6sOrPnkf~>
lMh"cs*R73r_<Sm7We\0o`#3rs7K_n;,9q^rD3>d"]%rl9g+F5rt>>2moW=^:f("_?M4?tr;W'N
;uTT.;a\(pMaU!/;,L7[TE"fgom&_s;,@'a"&Mif9`%Qe:#Q'M`rCP~>
lMh"cs$?\frW!''!&srWo`#3rs6p^&!WrQ,qu?d""9JH$)$'pAJH,QIrr;-h!!*'"!<<i's8Moq
AcMu5!!WK)CGl.q"9&9,"9<NCqtrh^"p+W%!!<-&rrW6%q>^TGs8Bt;J,~>
lMh"cs$ZnmrWE?/!':/Zo`#6ss7$p+"pYD<!r`0%!s])8r<*uA$35\Xr;Zcrk77Rs"9\l.)"IY*
qu:=0#lXr2"orL"!!`c.":5>6FoV@:7K<c!qud!(rWiQ1"pOl,!s6sOrPnkf~>
lMh"cs*R73r_<Sm7We\0o`#L%s7KYi:Janb9hS)O9i+\_rD"5+;a%#XrVulsmT*"W:/4SW?1n6s
r;W$K;>s;p:e$jn5#>)T:'a]_T)\`eHU(O,:&n,i;?'Jh:'45Ks8Bt;J,~>
lMh"cs$?\frW!''!&srWo`#*os6pg)!r`0*"r%jc"98E&!W<!8!<<_ns8N#tk6h7j!!!$"'_)/%
qu:7."T/9"!<<6"!!`W,F8u8c!!W9#rrVcl!n72J`rCP~>
lMh"cs$ZnmrWE?/!':/Zo`#*os7%$1"TAB,$5XWr#64`+#5nZA"Tf>!s8N#tk77Rs"9\l.)"IY*
qu:=0#lFf,!s/`*":#24FoVJg!"&Q+!<r`*!!!&r"9S_Ss8Bt;J,~>
lMh"cs*R73r_<Sm7We\0o`#O&s7K\m:.@N=;d<[5;+<iF;#O-+:J=dUs8N#tmT*"W:/4SW?1n6s
r;W$K;>j5l:J+/Tr([Jo6(\,VTg)HQ:'XTk7m]L-6V@2M"&7_RrPnkf~>
lMh"cs$?\frW!''!&srWo`#R's6p^&"uh%Di:-@*gq%S?!!3#u(Ba`1s82fqk6h7j!!!$"'_)/%
qu:7."T/6%!<N6%r<!9/!-/%`"on]&!!iW,!AA#5G#9.Q!!:XLrPnkf~>
lMh"cs$ZnmrWE?/!':/Zo`#R's6pa'#WmUMiUHI+h7IhE!!W<((C1#6s82fqk77Rs"9\l.)"IY*
qu:=0#lFf-"U5)5r<EQ7!-A1c#Qt>0":>>7"#=M>GZ5[b"oJK*!n72J`rCP~>
lMh"cs*R73r_<Sm7We\0o`#R's7K;S:j&Y^lLjoCkKff&85K1Z(K!N2s8;lrmT*"W:/4SW?1n6s
r;W$K;>a2h:B=3drD3Yq6Cn/4:&@Zl:e+)rPbt+/?qpMn"&7_RrPnkf~>
lMh"cs$?\frW!''!&srWo`#*os7B3>h"gsRrVtRi!!<-"(Ba_Ss82fqk6h7j!!!$"'_)/%qu:7.
"T/6$!X&Q%!!WQ+E;s2D"T8<&!WXglrr30$s7.<5!rN$#e,TCHr;Oq?J,~>
lMh"cs$ZnmrWE?/!':/Zo`#*os7B<Ch"gsRrVtUm!!`E*(C1"Xs82fqk77Rs"9\l.)"IY*qu:=0
#lFf,"pbA0!!WQ+EW9AG#lOl."op<srr30$s7.E8#5nZ,!n72J`rCP~>
lMh"cs*R73r_<Sm7We\0o`#*os7hDJkP>,]rr;+e8l,F](K!Mcs8;lrmT*"W:/4SW?1n6sr;W$K
;>a0!:f0t[7RTX690\pGN'^D?:'4<^CYA^e"oePqAP#\r:'45Ks8Bt;J,~>
lMh"cs$?\frW!''!&srWmf*:dr;$Zqr;HNmNW94]!#G_;;?-Rms5sai!<<*#!#4r&rql_-!!N,u
$iq,#77B-]!.4MN!!3'!%0?MVli6q\qtg6j.0'GI!!:XLrVHNorVl]rrVlfGs*t~>
lMh"cs$ZnmrWE?/!':/Zmf*:dr;$Zqr;HNmO8oRc";_:C;ucdps5smn"U"r3!#Y8+rql_/!!rK*%
KZV3)`UAZ3[k&Wq%*Q1rWEZ7!%@46rVQKgr;S>K#5nZ,!n72JqZ$Kmdf4g~>
lMh"cs*R73r_<Sm7We\0mf*:drqm*"r;?Nmr;X#g;>s<,:d^!;rVlib<_Q:a:/=Jfp&G$hs-5oJ
rD!l!7mTdSEdiIZBM##s<(p*e:'FEaAb,m#rqlots(b,#rD!Ghi;`bqs*t~>
lMh"cs$?\frW!''!&srWnc&Ufrqc]pqu6irm-U>D!r`09!rtsnr;HZY$NL2-!!*'6nGiLbs(266
rW!*'!&p@koDS[mqr.LQ!!E0""9JS+s7uZo"oeQ$-ia>H!"%-SrV#L7hrXA+q>UWsr;?NmrnII'~>
lMh"cs$ZnmrWE?/!':/Znc&Ufrqc]pqu6irm-^GF#6"`A#67Kur;HZY%flh:"9ecBnc/Ucs(DB<
rWEB/!'6Upo_ndnqr7RR!!iH*"9nk0s7uTm"9'hO#5nZ3!n72Jr:p!Yp\Ombs8DrMs*t~>
lMh"cs*R73r_<Sm7We\0nc&Ufrqlcqqu6ito(0I`;#X3+:dfm7rVlib<_Q:a:/=Jfp&G$hs-5oJ
r_<Vm8T_N!p\k*qr9O@!6W*eW"AhS-s82]n!bt8%rD!Ghi;`bqs*t~>
lMh"cs$?\frW!''!&srWnc'*ur;ZfrijOh\9J[h*#Qai'(BXY0s8;iqk6h7j!!!$"'_)/%qu:7.
"TAB3"9=_equ?ZorVlios(VN:rW!$%!%%I:rrOVL!rN$0e,TCDn_qWnOaM;#Pd&EopA4dlrqu]m
ro!g,~>
lMh"cs$ZnmrWE?/!':/Znc'*ur;ZfrijXtb:,aF6$jHP3(C'q6s8;iqk77Rs"9\l.)"IY*qu:=0
#lXr;#QU4kqu?ZorVlios(_T?rWE<-!%@[=rrO_O#5nZ:!n72JrqlEXk2"Y=fA>][p\ajerr1gT
J,~>
lMh"cs*R73r_<Sm7We\0nc'*urVuoslclZ$K5tO-<)<Ee(JmMNs8DrsmT*"W:/4SW?1n6sr;W$K
;>s<$;*q_kr;ZcprVlips->uKr_<Pk88%eprrQt+:]4#j:#Q'M`rCP~>
lMh"cs$?\frW!''!&srWo)Jag"TRA11'dCN(BXY/s8;iqk6h7j!!!$"'_)/%qu:7."TAB)"9=Vb
q>U?m"oeH"5QCoc!!EE)?2sj!rrOVL!rN$"e,TCDrsnVJVg2)u1dYGnQa4ltq>C6qrqu]mroO01~>
lMh"cs$ZnmrWE?/!':/Zo)Jag"TRD42@B9\!<NB$";_:C9`P%hs5smn"U"r3!#Y8+rql_/!!rQ,
"UG*ms7uZmrrrE"s$?\jrWE?0!+5d(qYpUJ!!`B)!s6sOrVQU)qsiatahbd3c.:e8n+ZeXs8N#Y
s*t~>
lMh"cs*R73r_<Sm7We\0o)B7"rVu,\EDo:l6:=:792&(X:)?_pJcG]Js6`o]:JOY\8mV,irque]
6;d_W"]7Uns82forrrE#s*7%0r_<Sn6B;*EqYpV47o0(Y"&7_RrPnkf~>
lMh"cs$?\frW!''!&srWoD]*ps7:17!!*'%rWN6'rr`<(qu@N8!(m4grVu$g!!*'"!<<i's8Moq
AcMu5!!EE)PlLXYrrrE%s![pLrW!'(!/:IMqYpUG!!<&u#h/hPs8W)srVlcq&,tRpI8)=?.l^""
DiV'Lmem(erVZWnl2Q8~>
lMh"cs$ZnmrWE?/!':/ZoD]0rs7:7;!!!'*#RLD7rs/T0qudf@!)3FjrVu$k!<iT/"TTD0s8Moq
BE/>;"9\u1QN-jXrrO_O#6"`.#QTY[qtg<o/-#nQ"9S_Ss8Drss8Moq%ef);aM,=$_T'dIgun5(
r;Zcqkl6/~>
lMh"cs*R73r_<Sm7We\0oD]0ss7`$\5t4RF;,R<hs%rbmr(\&)7"PC:rr;Ce9M\DY:J+pcs8Mrr
PsS@I:'=E\[K$1#rrQq+:]=)l;*h5^r;-EpCI_2!:'45Ks8Bt;J,~>
lMh"cs$?\frW!''!&srWo`#@!s5Yd4!X&T+!!39)pAc!3!(m4grVu$g!!*'"!<<i's8MoqAcMu5
!!EE)PlLXYrrrE%qB,b>rW!'(!1NrbqYpUG!!<&u!n72Jqu6ctrVZTlrt,"USRju>2*!NM3D!_8
Y1<4DrrW/srTsQ7~>
lMh"cs$ZnmrWE?/!':/Zo`#C"s5Yj6":,28"9o,9!r`0"!W3':#67Htr;HZY%flh:"9ecBnc/Uc
s(DB<rWE?0!1*Z^r;Qs"s8!r?#6"`.#QU@oqtg<o/-#nQ"9S_Ss8Dforr2lr&H21Yd)<]8_SO%)
a3WH$o)/Idrr29aJ,~>
lMh"cs*R73r_<Sm7We\0o`#R's6XYf9i4_^:/Fe`9h@iB7SitX(JmMNs8DrsmT*"W:/4SW?1n6s
r;W$K;>s;n;*q\jr;-Eqqd`8or_<Sn6Fm-oqYpV47o0(Y"&7_RrPnkf~>
lMh"cs$?\frW!''!&srWp&>6qs7nSR"p+]'!!<-""pZ)$:I+s]rW!`:!(m4grVu$g!!*'"!<<i'
s8MoqAcMu5!!EE)PlLXYrrrE%q]Pq@rW!'(!1j/eqYpUG!!<&u!n72JpAY3mr;HWp&cUOS=uSK2
6TmCb1-89PT?[!,rrW2trU9c:~>
lMh"cs$ZnmrWE?/!':/Zp&>6qs7nYT$3gD3$3gM2!"'f(;*t<erWF#B!)3FjrVu$k!<iT/"TTD0
s8MoqBE/>;"9\u1QN-j[rrrE%q]u4HrWE?0!2';gqYpUJ!!`B)!s6sOrUp3jrr)j.o\ds0_T'R4
_SEt(ajf;=qu-QprpTl;~>
lMh"cs*R73r_<Sm7We\0oD\pjEC!P%:'sfg5t=j^E.rX3:]=**:dfm7rVlib<_Q:a:/=Jfp&G$h
s-5oJr_<Sn6FHjkqYpZqAP#\s:'=E\]`7p+rrQt+:]4#j:#Q'M`rCP~>
lMh"cs$?\frW!''!&srWp&>0ls,@!^r;[3+!%NiAiV*3LYlFn*!#G_;8cS_es5sai!<<*#!#4r&
rql_-!!N9$"9\^hs82Wl!\=<QrW!'(!0R<YqYpUG!!<&u!n72JoD]j1rVZZps8'QG2*=5l6UO.%
2DR6eG,sO!s8W)rrpp)>~>
lMh"cs$ZnmrWE?/!':/Zp&>0ls,I'dr<*K3!%j,GiqNBNZN(70";_:C9`P%hs5smn"U"r3!#Y8+
rql_/!!rQ,":,!ns82Wl!\XNXrWE?0!0dH[qYpUJ!!`B)!s6sOrUU!grr2p#rTqqJ_u7O[`5BF,
_8t0gp&4mjrpg#=~>
lMh"cs*R73r_<Sm7We\0p&>0ms/nRarD!_r7;K$TlhUMZa[Au):)?_pJcG]Js6`o]:JOY\8mV,i
rque]6;d_W"AqLns8;]m!c1A'r_<Sn6F6^iqYpV47o0(Y"&7_RrPnkf~>
lMh"cs$?\frW!''!&srWoD\kG!!<-"$j$E?s8W)us82i"!!E3#(BXY/s8;iqk6h7j!!!$"'_)/%
qu:7."TAB("9=\dqtpBrrVo1a"9&9'"9<NCqtg<o.0'GI!!:XLrU9alrVZZps1_Ag6iK=]5sdq*
4Z+uZ@[bsJs8W&ro`'F~>
lMh"cs$ZnmrWE?/!':/ZoD\kH!!`E*$jQcFs8W)us82i#!!iK+(C'q6s8;iqk77Rs"9\l.)"IY*
qu:=0#lXr0#QU1jqtpBrrVo7c#Q=i/#QT#Iqtg<o/-#nQ"9S_Ss8DEds8N#t"7+(F`VmaS`<O5r
^r4RWoD\airq$/?~>
lMh"cs*R73r_<Sm7We\0oD\l-85T:\!`2=Lr;Qots2RQ)r_=8+7"PC:rr;Ce9M\DY:J+pcs8Mrr
PsS@I:'=E\[K$1%rri?$HUUd1:'=E[T)\`brrQt+:]4#j:#Q'M`rCP~>
lMh"cs$?\frW!''!&jlTpAGa's5+(^!<<*#!#"VtqY^<kqu<o$"9&9:!rtpmr;HZY$NL2-!!*'6
nGiLbs(266rW!'(!0mN\qu6frs'l$3rW!''!'pS_rVm'#s8FDH!rN$"e,TC5rs&E"s7'ta6i0+X
5sdq(3&3R*VsOH_rVlNjJ,~>
lMh"cs$ZnmrWE?/!':/XpAGa's5+1c"U"r3!#Fo#qY^<kqu<r%#Q=iB#67Htr;HZY%flh:"9ecB
nc/Ucs(DB<rWE?0!1*Z^qu6frs()09rWE?/!(-_arVm'#s8FPL#5nZ,!n72Jm/R+b"TSAI_8Z8h
s2>;__SF%7jSAiUrq6;A~>
lMh"cs*R73r_<Sm7We\/pAP3ns6*?Tr_<nu93^rdqu-NnrVsu-;#X3+:dfm7rVlib<_Q:a:/=Jf
p&G$hs-5oJr_<Sn6FHjkqu6fss,o]Gr_<Sm7="q3qu6ctC.M/!:'45Ks8Bt;J,~>
lMh"cs$?\frW!''!&srWpAY9ns2tBCrW!'&!&+?MrVm#ts02P+rW!`:!(m4grVu$g!!*'"!<<i'
s8MoqAcMu5!!EE)PlLXXrri6!OoPXa!!NB'"kEYLrr2rq"90eM!rN$"e,TC3rrr?#q.DWQpco0Q
6U<[e7uQF-rVlQkJ,~>
lMh"cs$ZnmrWE?/!':/ZpAY9ns2tBGrWE?.!&FQPrVm#ts0;V0rWF#B!)3FjrVu$k!<iT/"TTD0
s8MoqBE/>;"9\u1QN-jZrri6!P5kmf"9er2#hK%Prr2rq"90qQ#5nZ,!n72JlMh%es8C<\`V@CO
`<X>u^rG.&s8M`lJ,~>
lMh"cs*R73r_<Sm7We\0pAY9os4U(@r_<Sm7rSD+rVm#us2d]+r_=8+7"PC:rr;Ce9M\DY:J+pc
s8MrrPsS@I:'=E\[K$1%rri9"Z9hFe:(9ooirAoTs8Mups(b,#rD!Ghi;`bqs*t~>
lMh"cs$?\frW!'&!&<`tp>Z54n&bJ-"TeZJqYp?jqZQcqW;m&"!#G_;8cS_es5sai!<<*#!#4r&
rql_-!!N9$"9\^hs82]n"TAAC!!3#u%0HT)s8W)us8N&Y(]XU7!!:XLrTX=`r;YLB5R9\D4u5Hj
p](3es*t~>
lMh"cs$ZnmrWE?.!&Ws"p>Z;6n&YP5rWEB/!%.RAqYg9ns/Q,)rWF#B!)3FjrVu$k!<iT/"TTD0
s8MoqBE/>;"9\u1QN-jZrri<#b5__E":YS9:]LIos8W)uiu7t%r<*3(e,TC2rrW3"o^g$$`<=)o
`8COes*t~>
lMh"cs*R73r_<Sm7r[t`p?VnHo[un9:'FEaB)MZ*rVQct`'dH$:)?_pJcG]Js6`o]:JOY\8mV,i
rque]6;d_W"AqLns8;co"TAAS8l,C\!`2=:r;Qs"s6O)b:]4#j:#Q'M`rCP~>
lMh"cs$?\fqu?]uo`ta."V\`b!!3'!"9ALfs8Drs"TG;8!!3'!(BXY/s8;iqk6h7j!!!$"'_)/%
qu:7."TAB("9=\dqtpBsrr;jF!!<*!$N^;n]^,Fdd!??*!W)iue,TC1rri<#F#HAW5R0SB5VQR,
s8MioJ,~>
lMh"cs$Znmqud!(oaD$6#oCGm!!W?)"9njms8Drs"TGA>!!W?)(C'q6s8;iqk77Rs"9\l.)"IY*
qu:=0#lXr0#QU1jqtpBsrr;mI!!`B)$O-St^$PUfd!ZZ0"oJK*!n72Jkl1ebs4"m(o>CdN`4sRk
p]#a~>
lMh"cs*R73r([5foMbrk>gukKrD!Jk8@AKsrr3-#_d?&4r_=8+7"PC:rr;Ce9M\DY:J+pcs8Mrr
PsS@I:'=E\[K$1#rr`4585K1Z$W'9;dIR50hkXFJ:]*ri:#Q'M`rCP~>
lMh"cs$?\fmf3Om!!V4<!!<&u#Q[GRU7??V!!2ut(BXY/s8;iqk6h7j!!!$"'_)/%qu:7."TAB(
"9=\dqtg<qqu;9K"T/6+!W`92+Vt.Z!<N#s!n72Jkl1e`s,o0*nN[7H1fa#ErqcYF~>
lMh"cs$ZnmqZQQn"p4i1h`(T?qud9,8r]U:G:rpuqudf@!)3FjrVu$k!<iT/"TTD0s8MoqBE/>;
"9\u1QN-jYrri6!KE);U":585!"pRs!rrE,qZI!&e,TC1rri?$h8%#"_un#pb51o5J,~>
lMh"cs*R73qbHcW"\VYUECNb&:'s]eJ?Q`!T5?tg:]4$):dfm7rVlib<_Q:a:/=Jfp&G$hs-5oJ
r_<Sn6FHjkqYp]rs//.\r([Pp7RgNm?V<[X:]!lh:#Q'M`rCP~>
lMh"cs$?\fqZ-9i"p+c+mY:cGqu?]uqZ$X#!rN$7!rtpmr;HZY$NL2-!!*'6nGiLbs(266rW!'(
!0mN\qYp`us6CR'!rN$!!s8H%!W`K.q#CKFs8D0]"T8:P1dgat"@Y#+s8;`nJ,~>
lMh"cs$ZnmqZQQq"pP/6mt^rMr<3-(qZ$U&qZI]?!)3FjrVu$k!<iT/"TTD0s8MoqBE/>;"9\u1
QN-jYrrrE%lPom/qud91"p"](":>A9qZI!&e,TC1rri?$ftbSr`!")ph>dKNs*t~>
lMh"cs*R73qbHcZ"\qndW]sDZ:'aW`5smt)7oE(Z:)?_pJcG]Js6`o]:JOY\8mV,irque]6;d_W
"AqLns8;`n"oePm>=q`i:B+,p91VZM;GU$a:'45Ks8Bt;J,~>
lMh"cs$?\fmf3Rn!!D6O)?9p<!!!-#"9\o4!"T,/!#G_;8cS_es5sai!<<*#!#4r&rql_-!!N9$
"9\^hs82Wl"oSCu!!EB#!!WH*!X&K-#PnE%e,TC2rrrE%mnZ&3n3@%A3FhjaJ,~>
lMh"cs$ZnmmfWk!!sdiV)ZU0A"98]+#QtJ?!"oJ6";_:C9`P%hs5smn"U"r3!#Y8+rql_/!!rQ,
":,!ns82Wl"oSD!!!``*":#)7"pb57$Np;0!s6sOrTF1^qT6YC_u[a$q#>j~>
lMh"cs*R73mS3s\;![j[85]:[!)WYl"B&)c<_rZh(JmMNs8DrsmT*"W:/4SW?1n6sr;W$K;>s;n
;*q\jr;$?rrVs`$:f.$ar_EYp8P<#Wr([>gi;`bqs*t~>
lMh"cs$ZnmmfWt$!sm]^]*A<="9SQ'#Qb,2!<?]-!!`E*(C'q6s8;iqk77Rs"9\l.)"@S)qu:=0
#lXr0#QU1jqtU0rr;VHN!X&T+rW!3*"9SW;Yql@ar<*3(e,TC3rrrE"s+iL!mm%"C2KAcqqYu'~>
lMh"cs%!+tmg'7,#7TDf]EnQD#R:83#R1P>!WZo2!"/]2(CL4=s8;lrk7\"*#RC_=*:a(.qu:F3%
/pM8$il[pqtU0rr;VNP!sf,8rWEK1#R18EZShdjr<NK0eGoL3rri?$g;(\r`!"&qe,TFDs*t~>
lMh"cs*dL;mSO]q<9O;/9h&#X:JX_]:Jjt[5F0,W;Z9N0;b)N@rVlic=\hpm;,U+qp&G$hs-H/R
r_Wet7CW<pq#:Tts/SFX;G^0g:'aWm:I/.+E_01-;$0YRs8Bt;J,~>
lMh"cs$?\fmf3Xp!!M-Xs2QGd!W2p&!<=4<s02P+rW!`:!(m4grVu!f!!*'"!<<i's8MoqAcMu5
!!EE)PlLXTrs8Q&U_<_/!!!&u!!QHes!IdJqu?fIs8D9`"oSB"RP[A"5QsG@0u*beqYu'~>
lMh"cs$?\fmf4+(!!M0Ys2ZYi!<<-&!<<-#,GtLG!!E3#(BXY/s8;iqjpM.i!!!$"'_)/%qu:7.
"TAB("9=\dqtL+'r;WW0!!*'&"Tn`)!F"[d-ia>H!!:XLrTjIerr<#V^r>`["NA.As8MlpJ,~>
lMh"cs)^7imR%^U8*BpPfkEc?8PDiP84,^S_>hJ77K,Xj76#VnrVlia90ks56UX.:p&G$hs,K!,
r^-fX2R3;[p\tm)s1qo*78$BO:.diDN:-^S4@T39"$tfDrPnkf~>
lMh"ds1+Vmm[t;eU@\E_s7`?e+US>[,Z^f8s8V&IU&L\kTpr[orr2rkUn@UY$(e*ls8W)u`gNP"
TELsVfDkgCrt52/m?'UG!<<0=>fm$Fr3)ZbrLa7bmf3:Srs/Q$rVuG<1ICOq"[kO.RK*9^s*t~>
lMh"ds14brm\1GiV"=Was7`Ei,Rt(j-s3G@s8V&KU]-toURf*urr2rkVP3s_$)"9os8W)ua./q(
U'.6]f`1sErt52/m?0dO"98TG?HW<Ir3;lhrLsCfn,NCSs8W'$s81E``UC_I`P]IJp]#a~>
lMh"ds3J<lmCj:Lp](3lqS@qu<Dce1MSf/gs6@52rk8]R]$^QWs8Vo2^&>YO]u0aIs8N&N\\J-X
"M_M.s8M`l&cMb$Z[,hN8krcSgAh0NaLo:d^&u(@s8L%<J,~>
c2S4Nrr<#pjkT%rs8W)rcMn=Nrr<#fe]QM:s8W#qjSoMar;Q`o[8/VHnN[=F6U*=q[/^+"s*t~>
c2S4Nrr<#pk2#7us8W)rcMn=Nrr<#ff#u_=s8W#qjT#8Zs8N6$kfLWZnAGOM`5'CVs8MfnJ,~>
c2S4Nrr<#rmH<s:s8W)scMn=Orr<#jinNPhs8W&s])R9~>
kl1Y\lMCS\rr3'!qu$Bl"oS8ss8W)pqZ-Qls7uQirrE#oqZ-TcrrW2srVZ]qr;Q]rr;-9jrpp's
rr)cos8Vbu?Saf3o0<UJ6UNpj6Ak%-rV->B~>
kl1Y\lMCS\rr3'!qu$Bl"oS8ss8W)pqZ-Qls7uQirrE#oqZ-TcrrW2srVZ]qr;Q]rr;-9jrpg$g
rr2p$r92D@_o;2bs2>2[^r>('s8McmJ,~>
kl1Y]lMUS[!W;oorrN)rrr2utqYU?lr;ZTjr;QcqqYU?mo)Adjr;QWos8Drsq>:6l`;b>~>
aoDD?!r`,t`r?2@rVZWnkl1barVZWnrs/JPO\mnp6UCB1$UI-H4Z##pQf\8HrV$8A~>
aoDD?!r`,t`r?2@rVZWnkPtP\rr33%o%hF'_Su,bs2>8]^qn1Np](9mpA]X~>
aT)8=`W,u;!r`,t[f:j~>
JcG3="9/5rrVca%p<Jt13\ifb6ME_T5sdq)3\rWfJ&:s[s8Dris*t~>
JcG0<rr2lr#lO2Lc,.96`PqPhs2>>`_SF"/f^/P9s8MZjJ,~>
JcE:\J,~>
JcGEC"TJAtr;HQn$M`8UHr;pZ3C-"uq*5<S6UO.%2)79sM8Ji_rrN&roDa=~>
JcGBBrVl`p$2sJXf?(nF_SjFf`;dd^`5BF,_p$m%qu6Tqrpp)>~>
JcE:\J,~>
JcGZJs8E-!r;?Njrs\hf`h.EQ4>J`U6:4*;5lX.M6OH.E3A`KQ;L#.nqYpKrrVZZbs*t~>
JcGTHrVl]o$i]nfiRQ)g^qdk,`VIIO`<jK"^qdh/e`??$rr<#tnGe"~>
JcE:\J,~>
p](6lP5kR]s8Drp!<)co,6%)a]:*tJ6T-\W4$c5$5sR\$5sdq+69[Cd1,_L*JZRGsrVuoq!<2Ed
J,~>
K)bcJq>Up#oBP8abf.E6_8F41`Vd[Q`<sN"^qde*c.M.Kr;HZqrpB`9~>
JcE:\J,~>
oD\jjrVcZorVleqs8N#trVcWprVlWm'`Raabd*O\?qWU=1,V*W6:4+,5skQ<%7*0=2D[-K7U1;5
`TI-trrW/srTaE5~>
o)JRcU]:2ip\t^"p@%2%f$;=R^qde'`;RXT`;RXa`5BI.^qdh,c.:k@p\t-krr23_J,~>
JcE:\J,~>
p\t<UhY6[B!WN&pr;QZnrlP3=rr2lnquQcqp&>[%n)2L&UPs>(:I-oq1,V'T5stW>r^.2^5<Ce\
1,CpZ=)a2'cKbB+rr`5trVl![J,~>
p\t<hp&4L^q#8&.q#9pc$i^"rnET&he]u:T_>_4O_Sa=g`W*jW_nl>f#f=U)e(j*Tq>U<lrr2'[
J,~>
JcE:\J,~>
q>V$*s5eT!;I+-iPGbt6g#hi$n,NFerr(IHrr)lrn,F1#oBG)W^os;dG\:,N5WCSU1H%6V5t(]A
'1>2Q5!(_]1GUdJ6rRcLR^UW-qtpBqrVZTmir=N~>
p\t`tf#PnWdb*F;l0n6<qYfg]dJiP5%fZA#p$h;0iS2o0bK%Q<rkJZQ_Sa=2rl4uW"N83p_86,d
$,X[(d+I:@nbE+\s8N#Vs*t~>
JcE:\J,~>
pAZ32e$YWoB2_2Y1GUgL6r73+I#FJn\&?VGip-%,qYn\<*rPg)mH<EZcc*K!U6^X`E+E'G7R&mj
1G^mI3^#_qr^@Pi69dRm2Dd0E1cITh<FpH:VS:RDq"k!nrqu]mrn[U)~>
pAZ04n`\o_d)s>E^qde(`Q?BQf%]-Dl0\!3pA"L^rlY6Vrr)`jq"=7JmHWinhV-T1ccaDL`59@i
^^\,s_o0O5`l?!:`5BI.rP/fW_oBjGf%f?Po(`1Zs8N#Qs*t~>
JcE:\J,~>
p](9mqu8>FleBOiU5jP5=@tb7/h8A#/M]7K7SQlgAScI7JVK,GQC=D=V5L>pYHY==[C*I?[k"no
['Hs?XfA:qU7Rg>P)Y9MIX#mMB45"E:eO8E5!(__2Dm?M2`Wr_5!T$3(dC/G3B&fO1,:[F4$cG;
?uLRYV7=_(m.pJW!<2uq!r`,tf`-I~>
pAY-lqu7-(q=O+=inW,4bK%N9^](na^;.S&`lQ?JcdL=of\5*9hVdAPj5f=ak3)^,q<@qC!9a@D
)<Kr>io/hQh;$`;f@AC!d*BkYaiDE?_ns:f_>hCP_u.IQ_ZI]k_>V.Z_8=.2b0JJgh;dbgo_JI\
s8DrJs*t~>
JcE:\J,~>
p&>$jrqlcppAZQ=oB=rS^TaDpK6:j4;Fj&51bU@.-RC&a,UF``-R^Am.P!&%/hSe1r\4""!&4:)
s"aU1s"sa5r\jd8rAOU3'fJ!24$Q,):fq.AG(PdGX1HC&j6l^9rrE#squZirrmCar~>
p&FshpAYj+qtTgQlf[9`g""Hob/_H;^q[Usrk/9Cr4N$BrP%L1qnV^;'>hZ*`Q-*DcI(1pgu7A[
mdg)JrV$9hrm1Up~>
JcE:\J,~>
n,NFes8Doo!<)Nh,lRH*kht(<`OrOXU7.:)Kmn;gDJ<Zj?<UH2;c-=c9M7uL8P&_K,Y1L!8kViP
:Jaqh='Am;A8,n$GCG4'P+&,FZb+0#e_]HVp&"@\!<2rps8Dusao?k~>
mJm(_o)Bg2r;-3]oC2/4kiLg^h:pW7f$r-qcd'eZbKJ&MaiMR$a8<mSa8a6\aoBL$bKS5VcdC1i
e^rL/h;I;SkN_I(o(DbRr;Q9equ4Y9J,~>
JcE:\J,~>
jo>>Zs8Dln!WE#^rser(q=jRRnaPu6lg!a!qrn(E$gR'EmdTc<p%S:[rosF`rr)cmrr)lr^]/f~>
irAiRkl:\^#6"Jtqtp6drqZ<`rqZTjs82io!r`,tkl:JX]`3K~>
JcE:\J,~>
f`1pLrr)Wirr)lrg].<Qrr)Wirr)fpZN#F~>
eGo.>f)P=?Y5a"~>
JcE:\J,~>
_#NEnRK%d~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
JcE:\J,~>
%%EndData
showpage
%%Trailer
end
%%EOF

View File

@@ -20,11 +20,8 @@ citecolor = black]{hyperref}%
\usepackage{amsfonts}% \usepackage{amsfonts}%
\usepackage{mathrsfs}% \usepackage{mathrsfs}%
\usepackage{hyperref}% \usepackage{hyperref}%
\usepackage[dvipsnames]{xcolor}% \usepackage{xcolor}%
\usepackage{scrpage2}% \usepackage{scrpage2}%
\usepackage{multido}
\usepackage{pstricks}
\usepackage{colortbl}
\newcommand*\euler{\mathrm{e}} \newcommand*\euler{\mathrm{e}}
\input{title.tex} \input{title.tex}
@@ -43,6 +40,5 @@ citecolor = black]{hyperref}%
\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

@@ -1,7 +1,6 @@
\ihead{\includegraphics[scale=0.30]{config/Laird_Logo_TM_Mark_RGB_200.eps}} \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,242 @@
\section{Introduction} \section{Installation}
Gitlab-ci uses so called runners to execute the build jobs defined in the build \subsection{SD card preparation}
job file of a repository. A runner is a seperate tool and can be installed on \subsubsection{Partitions}
any machine. The type of connection is configurable. The intentions of these concept are:\\ Format the SD card with two new partitions:
\begin{itemize} \lstsetbash
\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{center}
\input{gitlab-runner.tex}
\caption{Gitlab-ci - runner interaction}
\label{fig:gitlab-runner-interaction}
\end{center}
\end{figure}
\section{Installation of gitlab-ci-multi-runner}
The Installation of the runner depends on the operating system of the host and
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}
\item{Url of gitlab ci coordinator}
\item{Registation token of that server}
\item{Tags - if the build job defines tags to identify runners}
\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} \begin{lstlisting}
user@dabbld01:~$ sudo gitlab-ci-multi-runner register fdisk /dev/mmcblk0
Running in system-mode. \end{lstlisting}
\begin{enumerate}
\item Type \textbf{o} to erase all former partitions
\item Type \textbf{p} to list all existing partitions
\item Type \textbf{n}, then \textbf{p} to create the boot partition. Press
\textbf{RETURN} to accept the first sector, then \textbf{+100M} for the
last sector
\item Type \textbf{t}, then \textbf{c} to set the partition type to FAT32
\item Type \textbf{n}, then \textbf{p} to create the root partition. Press
\textbf{RETURN} to accept the first sector, then \textbf{RETURN} for the
last sector
\item Type \textbf{w} to write the new partition table
\end{enumerate}
Please enter the gitlab-ci coordinator URL \subsubsection{File systems}
(e.g. https://gitlab.com/): Create the file systems for the new partitions:
https://novgit05.novero.com/ci \begin{lstlisting}
Please enter the gitlab-ci token for this runner: mkfs.vfat /dev/mmcblk0p1
<secret-token> mkfs.ext4 /dev/mmcblk0p2
Please enter the gitlab-ci description for this runner: \end{lstlisting}
[dabbld01]: Create mount points and mount the new partitions:
my-runner \begin{lstlisting}
Please enter the gitlab-ci tags for this runner (comma mkdir boot
separated): mkdir root
mount /dev/mmcblk0p1 boot
Please enter the executor: shell, docker+machine, mount /dev/mmcblk0p2 root
docker-ssh+machine, kubernetes, docker, docker-ssh,
parallels, ssh, virtualbox:
shell
Runner registered successfully. Feel free to start it,
but if it's running already the config should be
automatically reloaded!
\end{lstlisting} \end{lstlisting}
\subsection{Start as service} \subsubsection{Download and extract root file system}
Open a shell an type: \texttt{gitlab-ci-multi-runner start} \begin{lstlisting}
wget http://archlinuxarm.org/os/\
ArchLinuxARM-rpi-2-latest.tar.gz
bsdtar -xpf ArchLinuxARM-rpi-2-latest.tar.gz -C root
sync
mv root/boot/* boot
\end{lstlisting}
Enable ssh root login:
\begin{lstlisting}
vim root/etc/ssh/sshd\_config
\end{lstlisting}
Find \texttt{\#PermitRootLogin yes} and uncommend it
\begin{lstlisting}
PermitRootLogin yes
\end{lstlisting}
Unmount both partitions
\begin{lstlisting}
umount boot root
\end{lstlisting}
\section{Configuration}
\subsection{User management}
\subsubsection{Create new user}
\begin{lstlisting}
useradd -m -g users -G wheel -s /bin/bash tkl
\end{lstlisting}
\begin{tabular}{ l l }
\texttt{-m} & create user name home directory\\
\texttt{-g} & initial login group\\
\texttt{-G} & list of supplementary groups - comma separated\\
\texttt{-s} & path and file name of default login shell\\
\end{tabular}\\
Set password for the new user:
\begin{lstlisting}
passwd tkl
\end{lstlisting}
Enable wheel group members as sudoers:
\begin{lstlisting}
EDITOR=vim visudo
\end{lstlisting}
Uncomment:
\begin{lstlisting}
%wheel ALL=(ALL) ALL
\end{lstlisting}
\subsection{Aliasing}
\begin{lstlisting}
cd ~
vi .bashrc
\end{lstlisting}
Add:\\
\texttt{alias vi='vim'}
\subsection{Customize vim}
Edit \texttt{.vimrc}:
\begin{lstlisting}
syntax on "Syntax highlightning
set number "Line numbering
\end{lstlisting}
\subsection{Wifi}
Configure wifi network:
\begin{lstlisting}
wifi-menu
\end{lstlisting}
Enable wifi network permanent:
\begin{lstlisting}
netctl enable wlan0-<network_name>
\end{lstlisting}
\subsubsection{Deactivate wifi device sleep mode}
\begin{lstlisting}
pacman -S iw
echo ACTION=="add", SUBSYSTEM=="net", KERNEL=="wlan*", \
RUN+="/usr/bin/iw dev \%k set power\_save off\" \
> etc/udev/rules.d/70-wifi-powersave.rules
\end{lstlisting}
\subsection{Ssh key login}
\begin{itemize}
\item Create \texttt{.ssh/} folder in users home directory
\item Copy public key file (i.e. \texttt{id\_rsa.pub}) into \texttt{.ssh}
folder
\item Authorize public key:
\begin{lstlisting}
cat id_rsa.pub >> authorized_keys
\end{lstlisting}
\end{itemize}
\subsection{Interfaces}
\subsubsection{I2C}
To enable i2c interface edit \texttt{/boot/config.txt}. \\
Uncomment \texttt{\#device\_tree\_param=i2c\_arm=on}\\
Load i2c modules while boot:
\begin{lstlisting}
/etc/modules-load.d/raspberry.conf
i2c-dev
i2c-bcm2708
\end{lstlisting}
Install package \texttt{i2c-tools}
Test i2c bus after reboot:
\begin{lstlisting}
i2cdetect -y 1
\end{lstlisting}
Set permissions for i2c device access:
\begin{lstlisting}
/etc/udev/rules.d/99-i2c.rules
KERNEL=="i2c-1", MODE="0777"
\end{lstlisting}
\subsubsection{SPI}
To enable spi interface edit \texttt{/boot/config.txt}. \\
Uncomment \texttt{\#device\_tree\_param=spi=on}
\subsubsection{GPIO}
Create an udev rule to enable others than root accessing the gpio files:
\begin{lstlisting}
/etc/udev/rules.d/98-gpio.rules
SUBSYSTEM=="gpio*", PROGRAM="/bin/sh -c 'chown -R root:gpio\
/sys/class/gpio; chmod -R 0777 /sys/class/gpio; chown -R \
root:gpio /sys/devices/virtual/gpio; chmod -R 0777 \
/sys/devices/virtual/gpio'"
\end{lstlisting}
\subsection{tools}
\begin{itemize}
\item \texttt{fakeroot}
\item \texttt{gcc}
\item \texttt{git}
\item \texttt{make}
\item \texttt{patch}
\item \texttt{python2, python2-pip}
\item \texttt{wget}
\end{itemize}
\subsection{Hostname}
\begin{lstlisting}
echo "hostname" > /etc/hostname
\end{lstlisting}
\section{Applications}
\subsection{I2C-OLED}
\subsubsection{Oled Test application}
Clone test application:
\begin{lstlisting}
git clone git@dabgit01.internal.novero.com:raspberry/\
oledpi.git
\end{lstlisting}
\subsubsection{Install driver}
Clone oled driver:
\begin{lstlisting}
git clone https://github.com/rm-hull/ssd1306.git
\end{lstlisting}
Install it:
\begin{lstlisting}
python2 setup.py install
\end{lstlisting}
\subsubsection{Dependencies}
\begin{itemize}
\item \texttt{python-smbus/python2-smbus} (AUR)
\item \texttt{i2c-tool-git} (AUR)
\item \texttt{libjpeg-turbo}
\item \texttt{pillow} install using pip \texttt{(pip/pip2 install pillow)}
\end{itemize}
\subsection{Weatherpi}
\subsubsection{Usb weatherstation test application}
Clone test application:
\begin{lstlisting}
git clone git@dabgit01.internal.novero.com:raspberry/\
weatherpi.git
\end{lstlisting}
\subsubsection{Dependencies}
\begin{itemize}
\item \texttt{python2-pyusb} (AUR) (edit \texttt{PKGBUILD} and add
\texttt{'armv7h'} to \texttt{arch})
\item \texttt{libusb-compat}
\end{itemize}
\subsection{MQTT Broker}
Install mosquitto (AUR)\\
Install paho-mqtt client library:\\
\begin{lstlisting}
pip2 install paho-mqtt
\end{lstlisting}
Create config file:
\begin{lstlisting}
cp /etc/mosquitto/mosquitto.conf.example \
/etc/mosquitto/mosquitto.conf
\end{lstlisting}
Start mosquitto broker service:
\begin{lstlisting}
systemctl enable mosquitto.service
systemctl start mosquitto.service
\end{lstlisting}
\subsubsection{Test}
Subscribe to a topic:
\begin{lstlisting}
mosquitto_sub -t "topic/path"
\end{lstlisting}
Populate a message:
\begin{lstlisting}
mosquitto_pub -t "topic/path" -m "message payload"
\end{lstlisting}

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}

View File

@@ -1,4 +1,4 @@
\newcommand{\docname}{Gitlab-ci} \newcommand{\docname}{HowTo}
\newcommand{\prjname}{gitlab-ci-multi-runner} \newcommand{\prjname}{arch linux on raspberry pi}
\newcommand{\docversion}{0.1} \newcommand{\docversion}{0.1}
\newcommand{\docauthor}{Thomas Klaehn} \newcommand{\docauthor}{Thomas Klaehn}