From cd9d1c6f042916d35e5b46be8e086437db3ec11f Mon Sep 17 00:00:00 2001 From: Achilleas Pipinellis Date: Thu, 27 Apr 2017 18:16:45 +0200 Subject: [PATCH] Document pipeline grouping --- doc/ci/img/pipelines_grouped.png | Bin 0 -> 12937 bytes doc/ci/img/pipelines_index.png | Bin 0 -> 36299 bytes doc/ci/img/pipelines_mini_graph.png | Bin 0 -> 15404 bytes doc/ci/img/pipelines_mini_graph_simple.png | Bin 0 -> 1637 bytes doc/ci/pipelines.md | 126 +++++++++++++++++++-- 5 files changed, 118 insertions(+), 8 deletions(-) create mode 100644 doc/ci/img/pipelines_grouped.png create mode 100644 doc/ci/img/pipelines_index.png create mode 100644 doc/ci/img/pipelines_mini_graph.png create mode 100644 doc/ci/img/pipelines_mini_graph_simple.png diff --git a/doc/ci/img/pipelines_grouped.png b/doc/ci/img/pipelines_grouped.png new file mode 100644 index 0000000000000000000000000000000000000000..06f52e033207d64a510d7c5ac6a69d514254e61e GIT binary patch literal 12937 zcmb8WcT`hR(>EFr5UC}4lozOv=fRWy$_bL!Ngx*^y zp-YnvUwoeT{qDN|-J7+}$~iN$XV2_C^P9=ZIpHcwP+|fa0ssI&EGr}V0RVUa0|2m? z@gHC)G?!vTn6F0;GCIxx03rFm0}GIrL5-0Ds3@pQU0q$FP^k0s^W)=VYHI4s%gf!} z-TV9dos*l5jg5t(b3WM^>uG=@A%;|##kR8pZWRurKP1mSEnm0D<9gvE-o%cPZs6m#f_wV2D-n|P6 z32AO_CL|;rA0Hgq3;&q!8YUY?7Ki@d!2#KeTVyL)YI zt+23gQc{wUkx^h^;M(r#>BY_L?oDcH>e1C18ynj)`bb1nEG{mNg_SieEsg6HHxLNa z)6-kpzxn+6Gdnwn??{%vzrVVMW^r+GWo2blRMgL(KV3Y&OixcQ>|HA=Dwda*|N8Zd zo}PYeY%Di7S4KwG)WSweO6tRh4~XHZ$?aWn~pGMEK2{H|FN%-@ku1H8l+n5AWz3&CV-PZ}xKVW_4_8^K5zNY;koX zeY!=@z__@w!P7U;(Aa!%V&RjiMO|wTUzKJ1_{PG)QC>;a{^`x%%PW`u@5g6G{f50 zQ+_>ej$&>Kk34^~aEp~9;Qn@j^n9>d?Xm9BV;A#-Te<9wasSg3AF=Y(Ezi8yj{w=^ z)FA)>8Xw>X1H6L*04_KHA#6Z4BVd#a003cOsQ;K4Du$VjqW!`AasQiyYdxM6*62~G z3Nx6JJ~4+AASCx8eDKmU#?b1*(WWCOeWNVkD5YXw^RBSPcvqZO0)`#5!srJpf|1hQ zs1DC4i|le1nB-iHxpLYt`rwT66r+@6o$fWnUS0mib>)0&*a&M#wfb}@({Q!EFyY;B z$xiSf8(suI)wWZcnCGsm6^q=DV={EwDnh)_fNtzIXDEolTP`n*h2~=H=Uf(sU2SZ3 z@48;f)^1wc!a5%K$y{LH8?J(RT2Q4o`^~u|&!Hm@L-a&Pg z^0oR5@pVAYWpa5u?`0vXA7m?E7o%=JIOcyW?WRH^wTw_-FG_wJROrO}&T`F-*v0;g zCcf#O6$Tc;G}3D~T}!0R050lonqO~fmHKzS#r_OEt|ikkyDov9Gi?(#NJeu1KsD<3 zCtQt8*1%QBVwI-tIqEog5RpP+G;ZszF4?>Qp(1Ogy`OFW$S-CUW%tV7eP zkyJ(=Xt_PDlxawI+Q{3IO*;r>T2HI=@ z(Ao+J?H$qz=lJ#Anah&132ab}2anPh{bir9x4JN2ht0-bSCN^iTUG|y>$xWHujN1$ zwU5vRG+^`yccKOr!2pi%i@^e*FY;WwLe~MK(Xb1A2%x+Gl@7T7gzIPL($)6-K{g`@ z>t8hge~fWPz>4k8MdSwd??)H~)mQ+72U1Wxz$otj9~J*{=)bf6H;4Rk(b}?-so`!f zp8v{yUODu1=q@%}t}05L)C^*G<@M0}AuoB>3}IVA;xrR$sXS?;D6RqfSY4xxFB#}M zA>o-&0%=C?PlZAgJ>F+<3tmqf0}(k_=5fccwZ8XPjSg0Fo{Dgj`*qWdp5Ns^;k?xU z8E6uf#IejTVyCuKU_c*Ag{PR05{vMhb=z^FREkcS<`+6HBWA9Ys%egZVdNb_jFNFJ zE=d)dMe6G6t_#njT}i*GK<~%38qCqcqd>yX`toYsE1f?D zjeI;`pxyISsFAZgADd9$>bmn8>=mli=hv4P1(9k`W@>w-yjiZ(eOo0Unz^04_o?7Z zrtqt`_>JQ{$2>1*eL#zjG_>?5+ZL%mz1bRn3!W}7i@t}ZqpGdpv&_X6hhkeXR#w-% zfs3e9ibx_Aez`PQV#EiA=X{m0Rh~vw`H3WaC|goC%xBr^7AQMvnwB=%p%On08^?S9 zRSzP0BtYoW{9eMC)lLjV`T=S-juRYG7*J{rvF)sZpUF}o)u3*^wHp`q6Jy`=Wb;LH zw>=csQwT#T`3~lIQk#`ab98A6)*g|BuR6}b&q}98e&0;&9>x>}<}j6m@`(eMTn6`+ z7CV;Ld_dge)ojzSluFu?hc}jT8EkJ*nj~4}wcQr%DRXD)Ar@i!+2$LKspC9)R$S)V zpi2#&+n=z><4BNoK4H{;-bi)pWPC=RypNn|-);dYC2MfUe!rL50_6jmqpAy*B9Kn0cowiW@E%GT=+t(?uwp?!` zP1oGz+&sada=+-0i1Ebgd4$1)YGkT7LVD+MCYw<1zlG>Go#dH0C z)Y0$k#Or(?Wpae!{J-nu|C8$f3oyTq!`R&zj&y74Hg=?;xLcy&P?bSj z;L+|=erDQpdL-SwK>*F56!r;%<^AGWD{>PKFesl4^JsY=+B8SuA2W&s3KG1q&+gFF zFjgqCA;z+o@xu^tgq&zWt=Y@wrZ+FL0m8WZ12uX#aI#n919%X)=B9)@i`RM%6mov|*660B^$sbB}~#6OYx4#8eNAf}8k zD=ARbJAWzEC?Z~Xx2wzU@v&T|iQARiM5&is0~Ai>b#qjY@xq;(!IR+Zw|ZP^*g=20w|{ti*(HV{0f5&=&CZ-*^z-f<-CSu{@~!mwb?Th zV8z5nbG3La^i1OYIQ-LwW8FtXj;`-Mteq$^^pBuvbd5w?Oj^rPezh2u{K<)~Gfg;t zRpId^q|)&$>-x@45R}sNBgAg8Q>gKQP|E_L?@_lOT5E(i*FU%PuC47$mx@r?9eVj5 zlV}6_swQ=I??F;6OXegxR8g*$??h>nJ(GDG8tSJ$31Y;q+inp+A-tlb%*lr>)_Lrv}e^*nnQyW;zk^yi6^UoSS>)-%0r$e}dt zx3Qv4cvURvGaeNnHpiO)CWc2!7Ehkw1_zDeY{*F{_OlVhu=~q|5x9s*s!Ym+itF9U zmc0z}E(j)P(N9DG1`Z4TlMxZu;q_!n7ylbw5L#rj_eXxZ0G0 zGaQ_O+-jCv9+U)gn`gD}-;dueE5__V|p17 zW_;cha7^&5oIbImLB$KD>>h|)p3N~|$#iy3mOlv8T@OH%h&XO}=&++VCc2MizVd2p z1K>*%X)6PUCjF;qu1c`^kW967(lyKqpS~0j6=Cl+DK_n%wp%K zB;+R6Ft3mzfx6lS2o&|Ym~V-AWffybRN)bf3aSOb9lNg`vk_0giq

ivoqHBwergA-^;nHG`Q2pKj;&dv`85;o0)Pqk8u3_&d zwq0l(czC^QD?2l|XthmCHy%be=MHr^wMvhVa-tz57596{YOS0eoT6S6X!bUcotf0qpBD-2cQ(m>+ zL-cUSQ;6xFef7B@KvtCB_l$RJ;T)|tq${86BW&|BdW4w3zPWMULRfDOb2pnF7*7{K z$}56fGM04@49|@ne)37k^KQQeRz+{(SpUbhMsy&BUh*aJFnQIf{hlPHNVDZ+XRC7i zo*YQK)z5QxTd+K|-m$xPZ?+$A%aF?YpL1l6>UNF1;P}q@x@txK*Ll>zbxFoRLckx_ zouA;H%vr$t%ZJdk=Mma*3Ghk+-a=~q&#^}%>mnRv7N)pdp3KJz_BbPtyUs|P0<|6) zpR&4XHrTlTaYn1OE>H4|Nj+Akd-5hQ1%K_53$sg>K4R}B5fwvRG<=&)xHbNsqZuNc z1f_o}D1N2X{;5zl*4HTE)F5e%Z7e2&rQXoXNyGno@MD6vB2LI{D0E~U#J_j!x+#8= z`^-f1FfFIp7E5^E^D_k%iif7e#(|P>7jNOagrNo+tVR_%ASY z8}B`^?XE6IzEho~p8?2?%hDKv*BH)t+w}$rs~?&$?m-BNJ0_;~7jjedO6oso+bI=? zu^Y$E$^)FXcv5!fXhrGsCl8mg+l{{(SijK2b|6WdzZvrV#%04f5;$8joy;%(t$`9r z9{Rl}Ar+qUMQlPMjhAt)Kn8xa!fM?(BcmsjYGMfLjRz^wq#YhGha~k=j#jq(VoO29 zac>UNX-a3+1D9V5!QyZ=)=OTA4#6VWIG=z)k0HgoLaxu6vTI2`0k^uVEi+g)jKt`yj^! zItLF$(4k2$0$IwPZS%rVy)&4*cI`80Jft|{_E#|MUHM7@@2+*r4H{XYJ$LqHZ|z#V z$6a6Sd16({M~YW<q|Wjfw1 zEhjuVTB`Xh;}2O&K!!#O`JINqjZocorgBiKM(Z~o?^@nYvJ@2UF=v-`BQnpaNWMXb zed!r{>1MuD1fizHedA$}>t8n`_Rk*4CTj8dPA*KAQpd=j>|^cAxuHoP`}3V%g%UNF=WQAe9XKN9A(WRHRY zBHTm^?_oKRvFxt(^D^~+v7h9oa0|&ZBhh-flQge|Z+z2x*S37nZX551QqFnrgr4Tk zZI11+`a3;v4%;;6i$RIdCb$J^cv>t47c&gMr_wUvsIz_fWe<+vdWu4i@~wi|zu*8b zgGtP2qHS{+|2b^6FgxM$8nLo)V!82)Oy^f#i{&+RP}FVOsUEHMrXk4KkE05_=Hw$W z*qJ9iI&E=d`+hG^*pnK-D*E!vaDKAV{D)+M`Rw5$vxfwo$rQSFNb0Gv-KQZ~k4Lay z94za1|H`f~`JjdmoAxCDMP=h#&X76q2YA)F?1ed24?SVFt3Be&EVHeW0u{toVf~hV zz~^VuqNqw3JX|z_xEWQLk|%c8tl=0W6A;>X4d~9}pc=&%q>IXN!dBFJC1Y3S0O#GQ zzG%&F&>F605`kN2`bTlLEarq$elV+!PiQr0^O65`;jLbNVSo1F`~yB>^xGsV2Rxnw6SDpKD*k9}pWes#gspbt|CXm}fsh zyE!(vSx~!ReIjwG0jfOcK`a_?>9QK49ke$opRSBf{t1RLg~oF5>p$x}wmSCr^RPGPaL6f2DHpPFA*EQNJGg^A)Ue zKBmQ3t0XGT>FK3wIth?ZT{ z*j@#8oiFRxd!Ki@FXtcYK*&h83Mg;Xxar<2F~TCmdsBZyOa;<@{f3MUyS(=T=}U!X z-AgEYjgq-&5#LimwI0!?cal%I@{f-2lY%R*g_iAYPB0^V_KM`Y&hSGiW0Wu5AFe`rMl}L zmhpDZya?^c35iuZiz6b&X!`+P?9Pu@-vFS}Oxhf;|P(%n8UnrWrHxqghwJ@Sx zmezFFy8oVlT9w)p;k@wU^|3#Ukdf+Mqba}$#$K z@_lw}-FoEvBBX6=*!48jjTe#k7Mb@>=y=q2P&I>TMAfJ#nM=V@ap>Z6nx5L-;+w;) zWs?E7yIcEKwYz@UYW-IR9>HpRlPrs>UEvIOw62qjugN!(D})OXV(TyQ-rqPni*_+d zLv_D9Mzo@ormoxM0Zg`fr6RsMRJwQrfl*pJL&Eh$7)klu-p@p6Bqg6Pc$+s%dEUsT zntd1xqr!Thzd~)_aR8X$BUOg2Qu5~t%SoXy#J1SypEa}s_ZGK_MWMfiC+~FLw zMUkuv6Daqj(CMS#8i?&}E^a1Cy4rTZXk8&g# zj1n;}>JK0pbcSsziZa3Mks8sE#NZ!OQ$7d_IgcpXEn#fvv{RHI9StLM z#5D7FW9V#WL}l_D_BNrN1=KjcmnNmZ0{efV$KTy6Kqr(;~X?h4&i=s>yAeBZy4#l$?ZKk)q}*d(_=ee1P9X(*dH zX_z9^56q?Wc)M+OS;_?-L;fN|upOBS@OAgoY%e6fK-6vt=Y8{i4}bdkVV#p7d=Tm4 zvCiPX3HEjMqd)lW&G$DY={sF2yxNgj^0D=;sP$K-u(l;ex*>w=dlpyCulhTz&WTT1_!5Gr`Ul+hYvbGggTibm6}iv3GixC%p(T=1E@oW);8|$vMloXz`95B&{i;C>qm1C z;=Vbkr{OF48}lr7IOE)7$X^^UI*%B#lml|ZNARWJO&>nnx=4b)4$;FtkTz$XR^Ch{ z14%=Ai1M&ZiwEX3`;% z0^Ww_oB{c6e(pFn1Oz`nd<^|2P68Z)c>PcqZD*v@&)h8D8B8{&&<`s7PSvqMYOY`X_$F6F9}mpGbJ=^@ETp~Ej6MPR!_y)0Ppb~DkW?M!`n$@1cztwMwb@I5 z2OQ4X!ThyF=m=MU4bFAMDbMq%x>ojay?>VKZer5(jq}qHt<+dwzx8UpL(5t_vM=$9 z^MNJ`w>eHC5G2+m2JaSuq80SNRW59tuWuvGGh zb(i&)p9`Fk@D+OVmQQPr0EYE8&8i3mKBZ;d!v|&#BP9qPFp)>~tR2&b2iJUNsqhv; z>oxUpiU}pl{r=6+^@Qi`n-Uo8cxf!^kBT@jDc|`RMVV1THY2hBE6zPt#ywbdmkk+>;$GFOATi8}Qg{P|f6zp{8N55*xCq|O6liXBS;AegqpI(P! zg%bRb9s{SK5uTDst$s}lPsN~;xM6nkAthkW_Gq?N>`M5@N2C6egcd2I41ua?bl%}K zQKQxF4t`?%IU@UX!2E5(=XOJJ^6^)PAPDzIVQj=ODr`}wv|=D0Duv?JOE7G7nwp2+ zySs8at<#-%7NVU)y>j)%uTQwYZH;{Y5#s|sJytfz#f9~cm#%w^8onV09F$-ql-9$( z9BP|7U;TcWPZ{{b*G)+JnmbGE3x`sc&#imgeM7Ung}!0ypVNKcx$}YX6tNd%(93N~ zr@ffTk$%U)bJ)Mq)sCd<(Ih%n{sZ55)MlE1a?|=~^PSmz0{~q?o5C(KCI{8&PA-_< zCRJ=1*$926z*Nvs=PoUmrzg5xw@g{wW3?L=^*cRktT+*yy1F^o3mDedS;PN{aOG3QpSJJ0-V(L>IGW?+ACaP z#JeSP70;%1D9U_TX4BDs)f~e!2WLLn1nENlu}!;F>7Xz~G{n3{0l}ZO*uU!W*ZZv) zi>U33GKw`#f0Q&hf)3=|N<$q^{n=%d(4*5T&2UsuFn!%4TaVK)>btRHX>xv1zbhQ7 zLyPCC>2E>~6kUJU`{LaBO5FUBrqmZ(%)jglys&~dMM+VJ8eRUEc9ZVlBsmqLA|E1+ z-hc8#Cm>rve!*V%k_~~>wU}n!`!C}iMRYDdB8V{BH5K!=}k6ie;qsUWCHk3NK zNb_y>Move_CMOAu2`r-jsotJby`&H*t7%A>RF}Jv2>n^54%Weiy;{|N@5+W76EE#m z`9oOe%QMk=?O!{p8(qmgDBbj?qy#yp&WY6^Q*t{@*rhm>92L~ce7I|M)Y0Rp-TpM$ z(plj7K{r3TyGHO_3R?Zv=i(QyD@7|BfKmKy)wM>-NqeQ&JW!)s2a+XgAB+(bC4Oi7 zniv3X42C;=*BuokupzAKJ+~WJ{1m2#F=taIr9v04pJJWFDTr;o9XSNtrb$;Mpo$&n zE76U2dI;&n=2$^n!CWdBCV5%s;e(`IrT+m|Zkqgj!oP)j0LS8X-k+ z?hDJ>O&m(XqG=plxS?%k&qI}8Jj67N&fxgO-&ERIm~;ZdDtbT}Z8y}IWZ81~Pcx;& zHcZCD@vljQJA?6PEr}q7E*iZLF_*s~g7qFx`GvMw=^i04VCMpc_Mdhuv3V0=m?q#f zl9-QOmN@_-T+C(F|CE1N#2^+1-X8(`=*P``ii!vm2PRa0e5_5b;DI7=`ro%QI`D6z z!=Gi9?W}2T(~M|R#`gsi3{2Y$BH0{^V==v;BKUvmqO?-VtgNTy2UQO%Lm0^;#!yVF zYSE9Bc;?wv4jk~1id+v7p-ZzMM4*Fs5KOv%v}NZc7&+hK!8U=i5jyU-=*ShoSq|Ua zW;o+6OdwEyzK7>=B*FwMgVFt<77O9>om-iTVEo?x@Wyvex)x0LWR_7_krOvepGEKq z6P|88>*Gp)(--0lqw0?fgMaN%6c-hX*-SnRnxHU466*Y@=J}EtE4GlUTd*0|p@S0fiUwb_bp_hkNRQZlw&rNwBHv7X}`-|@zIWwQV zX!1PUZ(-cMdk}T>XW6|p-m}|>=`z3#MU9NHdidlqnM8R+WQBR_})ZdAqOHHk6bzXsye6>fv1%MbTnGN z^_^#4e;<(`N!t-iLcODAcvXL4eW1(zJ55Ivt{rg8Y$ha-P(oz$=$_(rORpc zCI4;2nM`pJ?Gq(ngK#O>PB{8H?U$lbdHS+yO0dcOC5Y@z3s?{Wd2|WFLMVZarNrHc zNSa*ng8R$!*yRFF) zQrCBZZ_r=eW&7%lMdN+4q4&rh9%Klr(H0nUwj3Yr8p_oy?F%Jdnnu2 zh4e8!ArxW*dsDz_9Sy1auLiU%faM9x6}X7IV`1h~SYC5Ibv6eUwEc)3NVv7>2YY8B zxn)KG)d6)5@x_XOq<^PyVOhCSeVmEI6L1x!$ zG&?Xl5unzAt7>2#gKm`VrzZMK}epc5bbBchfR{o1=QV?ewDI z6k1YUywD%@O+)+hTSt!TCX4N}nI%%?=p5i~H3f9nH)yG#jUO||vCOf*+mN(wGL{Q< zKhIT!Sx%+ZSlD$uKWw`15ZzTVasx{kzjCm$dE#G105%9`6hKzk=4Q+?o6vV}THs$7 zB#XxxTGzN+R-ZI4T_B4(32y67&sBlAS(65>Mnu5UaY10|HBw1*j5AfM1R76TJ@V|Q z3N6f*9ApOH)uZI3QElCG&^%WtYh!O?j5b-m1m!n?^N`Uvnzb*Csmj(c^=vL!e1!f=z;_u9Wz=`k&@ZZd3#}D5#zJFH&L-jCgUI7ny)a3az z*txMLgYY1{Y}p(%Pt`{;G(BW4i!^xXuy_M|3NwsbCc9t9HF^eExp)Z{N{+Qh7WZi3 z*4b6;R0fG?d74ofXgC?(z3V;12RGtC5qQO1IiFmq>IlnnE9UWvOKRuVk0wKsZ>PYW zPn_B-?17o{F_Dn>0~;q0#a@ayZ^ymnTaPl83WG-NZEN|5{{l@vz(n4Ggx@`bBgGlv zjNd?wc+~-^+!bFH$$HC;zgrf@h5auBd>v0U&_xYdXU`L|rWcO$VwcGr_DB)$)c@*! zg2n~k!2ICKjzPZ=%QAk9D>Hriie4OS?MTujD@-|Y zF*G_vobrgwTEzMoB$Yd}F-}v`l6mL>#@o7X=nvF!SO4&7)&OIv*M&pZ1Km4kug_-U zbTOSG4_DA%>;*ss18Xz=t2e`?l#30{1GjUjZ$CaG-*8|hZe{-`KydOa0fAQFERlIK|Kt2n=UhHM(ZPn9fPYCF$fz|B zEa!aj#xv@t8qz{WEAfMk5%-Rh&S8ce)USs&!emVj_-u-gwj^rW%tMTtNZJLLEx4!X zeM)3A-w5A3)KFL4#)p=-E4lj!MF!U+ui{z(z7F13S|`!|&FK*+aQ>-av}`%fmW-Te zdPV2ZyFfgkei=T?-yf=fKcLxD8(@41Tu1li>UdP2_MIrg{hdiiteiJ35Q^8M#0aqs&NNo82D@h_NnDpAWKgR)sl6y`c-*vObq3EEw;v zP7L^J48{d&v?C+elGs~@mgxGB$5)Qt!`T%j?u;ii8>#FpeE6c5(Qi{F(RNAT;-6uT zz)sVzSMRJmDDELwUmR{R*bhIwSJC*yMY4j{`EQjBCKQ56y-#Q4|Iz$z^+J1bVWH&B zsH)|*p#3?hl)+82Sov^rhg2pS>F#sn_3IWY6y(ll1;zjC0Dy_9a=>OQv&m@m97=Xo z4W0(gu#|H%d9xxo&67WKy9HWoV--Go4eOZI1m-Ma!&=oCKAnT!#P%`fkZm|Ug;fd# zsfhgFQugzk&UckS{7g}LfxzxKBVBfES&KS9_@QKUiQS`e1-eJk}##4W8cl$`8Js$ddH~zxgy<7(0f1l^QQ{*R%=Imi)(Ka zED`o)4!T;|TSdUfE9eKR)|yot*xjft@!1yd5@{)mT0c0c)FE1%!(zzQNln*isD|Hd z0f~hT6y-+vB5afjY$(Xs?KFZiBF~?b{uVT8M`k%mK6p0|=}@toA3{RJpH%C%Bl9)LjJ90}z zu2PFvyYC4m6Rvzk5Z;&n%#R`dnP2%l5CF}3@Qjk2C&ck(0-T6kKFr9E%%S-`LC;u JnfRxG{{vI*g7*Lb literal 0 HcmV?d00001 diff --git a/doc/ci/img/pipelines_index.png b/doc/ci/img/pipelines_index.png new file mode 100644 index 0000000000000000000000000000000000000000..3b522a9c5e40255cb3612b5003d40e3274cc0a7f GIT binary patch literal 36299 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 literal 0 HcmV?d00001 diff --git a/doc/ci/img/pipelines_mini_graph_simple.png b/doc/ci/img/pipelines_mini_graph_simple.png new file mode 100644 index 0000000000000000000000000000000000000000..eb36c09b2d48d0256ec3eb33df682e00b37886e8 GIT binary patch literal 1637 zcmbVNdpOf;93Rz|MM>_Lj$53}{nBxr+_xuDnOJjKZY8V5+!b<-!VJyjL=mNB3n7`g zByvt{t6Ubj9+RQd8Y@RQKb`(N|D5Oi@xJf#eBbwdzMt>s^L;;W)(JNk38*3z1OiDQ z5ss&TH4_*PyTQQRTrT?n1On?K9qmxDzb=<{xGN#0`}Fv7MAB!)*QA;FW2{z@EJclz zz6H`J?DA0-M2+xHGlpnecjtnuNW@WgtN8)39x+YjYp(UshyZl%CrcrcQWVqS^{6jo zBys(DwASGXmv^Ge@e_&s5q!u5T~an+-(o zQWdCyktGg8O0j~o``q6UViTLw3rR1cJVPfts5*$lXh#A?-kmu;klEhl80uL(Ph;J* zy~fvv3baH}`c_|HWJA1^VQvlkW?r{-k{J>CBO`*omGUw~gl1Ba-%oi83tL`~36?0K zXU|3M&(9H+`m=+mRll7UD9hfoC41eOBXIht6bxhoB0P8E>5IV`p;MHZjc;BrjFCLF zKRCb6J(~V31glnyweWSUtx16UKV0y3!<1B$?cQzkR9-VLX`l>Ftc{(PoLy+eraaLp zT}kdzk>S4;B^4nl~tdh#$Wvu0JzHBs zrQDaCh8RoSRsN+g@y6oirPIyMAL)6YxB^`HT%0{_uISUgZVk;;Y@Gtvk3s4@F`WHu$URt85`|Oc|w!S_Nz6$&DFo z38oDgY2txrL>@IE1+>TWGfk7BbC`t!6(;jZLlQsvWysz8M&0!o+~#`@no}dwva8U8 zNS4H!?|H2%-k`c63lvSj5Qoinz#vYqrDx)O1dsI)?ah99yVlU@`vPHmywi;Z-(+4< zCdVt3F2k(0wK<95Bz@#jIVq*5a2T{F9y{*B?qx#9llJ4@ZrrJhuz0Ip?E0hOaz3h$ z`l20zp1)TfWJbw!fhglv6&S%4v_VP{^V|o>l~N7FnokX!!*6znd0TwYuOMHr^t%Tq zDLjv34ST{NmbI5ysg?b+PFoPX)d4C5&mDSZ)+FhX5!ZA{&++O(djDH(tMZX9Ol?iz z){My5eVHYH>lNLm0to)7w#w#7bKWsTl8dmaJS^L9B_YVb1L%!__%*?#+E1K4X|wZ$ zFh-dN;4_;h83m`oM!6xPrt7c14$8Z2>*^jvEZVU(0I$qpHE~?-@FaRZw*juul%RC` z;>Ak22y2^6@5Gp?BX+Y(hf4WuH`;lxGAyOV6n>%32#h;WSo{6ydb&X0XNYcM79TxFxLN**Note:** +GitLab capitalizes the stages' names when shown in the [pipeline graphs](#pipeline-graphs). ![Pipelines example](img/pipelines.png) -## Types of Pipelines +## Types of pipelines There are three types of pipelines that often use the single shorthand of "pipeline". People often talk about them as if each one is "the" pipeline, but really, they're just pieces of a single, comprehensive pipeline. @@ -23,7 +29,7 @@ There are three types of pipelines that often use the single shorthand of "pipel 2. **Deploy Pipeline**: Deploy stage(s) defined in `.gitlab-ci.yml` The flow of deploying code to servers through various stages: e.g. development to staging to production 3. **Project Pipeline**: Cross-project CI dependencies [triggered via API][triggers], particularly for micro-services, but also for complicated build dependencies: e.g. api -> front-end, ce/ee -> omnibus. -## Development Workflows +## Development workflows Pipelines accommodate several development workflows: @@ -45,18 +51,116 @@ confused with a `build` job or `build` stage. Pipelines are defined in `.gitlab-ci.yml` by specifying [jobs] that run in [stages]. -See full [documentation](yaml/README.md#jobs). +See the reference [documentation for jobs](yaml/README.md#jobs). ## Seeing pipeline status -You can find the current and historical pipeline runs under **Pipelines** for -your project. +You can find the current and historical pipeline runs under your project's +**Pipelines** tab. Clicking on a pipeline will show the jobs that were run for +that pipeline. + +![Pipelines index page](img/pipelines_index.png) ## Seeing job status -Clicking on a pipeline will show the jobs that were run for that pipeline. +When you visit a single pipeline you can see the related jobs for that pipeline. Clicking on an individual job will show you its job trace, and allow you to -cancel the job, retry it, or erase the job trace. +cancel the job, retry it, or erase the job trace. + +![Pipelines example](img/pipelines.png) + +## Pipeline graphs + +> [Introduced][ce-5742] in GitLab 8.11. + +Pipelines can be complex structures with many sequential and parallel jobs. +To make it a little easier to see what is going on, you can view a graph +of a single pipeline and its status. + +A pipeline graph can be shown in two different ways depending on what page you +are on. + +--- + +The regular pipeline graph that shows the names of the jobs of each stage can +be found when you are on a [single pipeline page](#seeing-pipeline-status). + +![Pipelines example](img/pipelines.png) + +Then, there is the pipeline mini graph which takes less space and can give you a +quick glance if all jobs pass or something failed. The pipeline mini graph can +be found when you visit: + +- the pipelines index page +- a single commit page +- a merge request page + +That way, you can see all related jobs for a single commit and the net result +of each stage of your pipeline. This allows you to quickly see what failed and +fix it. Stages in pipeline mini graphs are collapsible. Hover your mouse over +them and click to expand their jobs. + +| **Mini graph** | **Mini graph expanded** | +| :------------: | :---------------------: | +| ![Pipelines mini graph](img/pipelines_mini_graph_simple.png) | ![Pipelines mini graph extended](img/pipelines_mini_graph.png) | + +### Grouping similar jobs in the pipeline graph + +> [Introduced][ce-6242] in GitLab 8.12. + +If you have many similar jobs, your pipeline graph becomes very long and hard +to read. For that reason, similar jobs can automatically be grouped together. +If the job names are formatted in certain ways, they will be collapsed into +a single group in regular pipeline graphs (not the mini graphs). +You'll know when a pipeline has grouped jobs if you don't see the retry or +cancel button inside them. Hovering over them will show the number of grouped +jobs. Click to expand them. + +![Grouped pipelines](img/pipelines_grouped.png) + +The basic requirements is that there are two numbers separated with one of +the following (you can even use them interchangeably): + +- a space +- a backslash (`/`) +- a colon (`:`) + +>**Note:** +More specifically, [it uses][regexp] this regular expression: `\d+[\s:\/\\]+\d+\s*`. + +The jobs will be ordered by comparing those two numbers from left to right. You +usually want the first to be the index and the second the total. + +For example, the following jobs will be grouped under a job named `test`: + +- `test 0 3` => `test` +- `test 1 3` => `test` +- `test 2 3` => `test` + +The following jobs will be grouped under a job named `test ruby`: + +- `test 1:2 ruby` => `test ruby` +- `test 2:2 ruby` => `test ruby` + +The following jobs will be grouped under a job named `test ruby` as well: + +- `1/3 test ruby` => `test ruby` +- `2/3 test ruby` => `test ruby` +- `3/3 test ruby` => `test ruby` + +### Manual actions from the pipeline graph + +> [Introduced][ce-7931] in GitLab 8.15. + +[Manual actions][manual] allow you to require manual interaction before moving +forward with a particular job in CI. Your entire pipeline can run automatically, +but the actual [deploy to production][env-manual] will require a click. + +You can do this straight from the pipeline graph. Just click on the play button +to execute that particular job. For example, in the image below, the `production` +stage has a job with a manual action. + +![Pipelines example](img/pipelines.png) ## How the pipeline duration is calculated @@ -96,7 +200,13 @@ respective link in the [Pipelines settings] page. [jobs]: #jobs [jobs-yaml]: yaml/README.md#jobs +[manual]: yaml/README.md#manual +[env-manual]: environments.md#manually-deploying-to-environments [stages]: yaml/README.md#stages [runners]: runners/README.html [pipelines settings]: ../user/project/pipelines/settings.md [triggers]: triggers/README.md +[ce-5742]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/5742 +[ce-6242]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6242 +[ce-7931]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/7931 +[regexp]: https://gitlab.com/gitlab-org/gitlab-ce/blob/2f3dc314f42dbd79813e6251792853bc231e69dd/app/models/commit_status.rb#L99