From 5f86321f0b326c3a60f71c36a5ff9ccbc94cabb6 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Mon, 6 Dec 2021 17:19:53 +0100 Subject: [PATCH 01/52] packaging helm chart with consolidated config --- docs/budibase-0.2.3.tgz | Bin 0 -> 42443 bytes hosting/kubernetes/budibase/Chart.yaml | 4 +- .../budibase/charts/couchdb-3.3.4.tgz | Bin 0 -> 9668 bytes .../budibase/charts/couchdb/Chart.yaml | 19 -- .../budibase/charts/couchdb/README.md | 244 ------------------ .../charts/couchdb/ci/required-values.yaml | 3 - .../budibase/charts/couchdb/ci/sidecar.yaml | 9 - .../budibase/charts/couchdb/password.ini | 2 - .../charts/couchdb/templates/NOTES.txt | 20 -- .../charts/couchdb/templates/_helpers.tpl | 81 ------ .../charts/couchdb/templates/configmap.yaml | 23 -- .../charts/couchdb/templates/headless.yaml | 17 -- .../charts/couchdb/templates/ingress.yaml | 33 --- .../couchdb/templates/networkpolicy.yaml | 31 --- .../charts/couchdb/templates/secrets.yaml | 19 -- .../charts/couchdb/templates/service.yaml | 23 -- .../couchdb/templates/serviceaccount.yaml | 15 -- .../charts/couchdb/templates/statefulset.yaml | 202 --------------- .../budibase/charts/couchdb/values.yaml | 201 --------------- hosting/kubernetes/budibase/values.yaml | 150 ++++++++++- scripts/index.yaml | 30 +++ 21 files changed, 180 insertions(+), 946 deletions(-) create mode 100644 docs/budibase-0.2.3.tgz create mode 100644 hosting/kubernetes/budibase/charts/couchdb-3.3.4.tgz delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/Chart.yaml delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/README.md delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/ci/required-values.yaml delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/ci/sidecar.yaml delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/password.ini delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/templates/NOTES.txt delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/templates/_helpers.tpl delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/templates/configmap.yaml delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/templates/headless.yaml delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/templates/ingress.yaml delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/templates/networkpolicy.yaml delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/templates/secrets.yaml delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/templates/service.yaml delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/templates/serviceaccount.yaml delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/templates/statefulset.yaml delete mode 100755 hosting/kubernetes/budibase/charts/couchdb/values.yaml create mode 100644 scripts/index.yaml diff --git a/docs/budibase-0.2.3.tgz b/docs/budibase-0.2.3.tgz new file mode 100644 index 0000000000000000000000000000000000000000..23fbe03712063a9a505435306cf01f76a437f727 GIT binary patch literal 42443 zcmV*LKxDrkiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0POwwcH2g_C=Q>$@f7uu>18{|07*%n*zK&NNJ^sHwxlD;$?fIi zB^7}pSrJf$pbC^2+uypcabNE~$#2!J0R<2oWIM{xLidVApoU%3o@x)HGNB_ZNN;b7 z3mMIEmj1_=e)|1>|LM*S{M+yMoBs|5gTa3cb_P$jceb~mJ>B|`{$T6blfi$W{uhU& z5rrkl(Qk4Z3Q^b-OqkBh@J)s$q7pcizyMqAVe`|36)Sl zkYYw-BBGd=@iZAlgyB(2k^muwGcrWxeSlCwaxSRk#e9gSQs!dV>){;7QxZ+6oR*`A z@}4OkPDz>t2+b@Y+tGHkQ}3FxNkN2&*o3kh*PnSC+P7`Jn(ktr^{&bhDHxGN^qMvO zzMn+>AR!_yXs$c|)|?qc1;PyRoG>JKS;PdT{5p(zLQtM!Ip#(77)?oo}vF+r4}jIvS^5d~Lde$9&nmcVurgebuh zD^S$zq@|Fg2=r9ga~){FpkB)q*rD`X`Kp+Gr3waeo|B;hHKj3D(-6$6eX;z0!fl7tf;VA zP!K>Qd%R?Fhz3DGGdv-~0HM50(-WT3cs@jj<0CFl3L*%T0YY7LJR?Ox6V=C*AgF^R zo}lX~7X&3{BvgNn6-R?AiWUV(6&|8a$Mknnrs)}p3nIl3y?qC$({=&Hx@cUc>B8&4 zP`=$bh5-Owh#JiW2;r*i5WW8h_0OjS=poRV#agPdQmw5jdpJgnOC*Rym?Z`ln82bW zj}g`lQGq6ekwQU?N};J4adYEV))8VgM>$V+8_=nDXCy8QD(8EgNpb^oXW$--?+ae$ zL$uZJ_thLPD;VP(k7!CIuq5gYLP^1M`*(Z4Xb>mgR-i1^Yo@I0;qKutP&M#;H&Z<7-j< z09M2G8IwZNv7)VHw_q@X2*oKD;>gZueYFFG5UMyB#Xni52&xT{vYyb!GKph{ z%Fh#Nq10VUQf91kVVP3I$??0%OiZOnE8vKAduOt_o7Mx{-NrA4ZoT8LUnVKDFL3xZs8BbOBuPLKy!6S8Q=e$G-N7tCu zM&eZ~nI5gwXO*WZzou*gt*4Z!A~^ZE6!1M$9WW9TA#gE&4C60I#$ogX#buGs(Wt;M zH)BZ(^q`vT2a#zsqtYG7I4@ycGV?nl8SvqQt>>?)8R9P`5u4Tsa4ETnaZ1^w^>AgB zoocEg6h%QO!#CcGejm_(F(GpAe{+E{w7*EI< zNl7euq4AsKslt*P;k|tq1b95AjLNzGJW2Tor!ZhkVh`ACh)zzA_uuTDA08jMf$cJ! z&Lxe7!w`xH7W4hHBZCZbF65L?&iNIw_#)+#S7b&~B?*l=)Jexba3R$^bp{>O1xznF z>euKzic?-D{)T*P3l5;5YA2jRL+V4BtLZIMNzVzxOp)qNzt+0sD4{|PM3>7`f_O0z zUb~W;q1H<%G^YvG2`?m0-xR6Ee*Wv-oc@!{EuQ53ijsZ6U3PYi{AH^%7H;w&i|4GflbW>f%;k(m>qX1UbsiMoih zbncO{oKq%&GvSEbPyv5Kb3k-RVH*Id{y8n!<^P;k^h`W?@q8x$Jw-xA%a~Euogzo5 z$&J~hP|0iT>Grc1OV{Og)26q%**CE97qBhzr@`Wp4q$adWC>7EZusVE0HczoGNjBK zfRMZZtUBoT6{<&wkA5bxJd?aIyh279<=##h75o}j(!J5M@M76cR_}1E2%I@piqrn- z>|%Fs@8In0;-3fqsz5y3M!cw|1Nt_V6<*LV!*Q&)b#}0KdT_pZle!H9?gW%6uC3F9 z?+=fUHgDi|E3B*gD{LmXTHofPRMM9f6)Dpjd;eP`$`LR(fp>trUE9GK{gqg$Op!y1 zQzXRxG9h*4Nb>qHTqS6#ufDWR#uYLJ?Gh?m+Z{X+W>^O9-BM01K+s&Er|PFEVfL6kM%Oe=Q9|;R&y^5HBxnUeEJkvQrJfGqW-jN65*E#@ z^DHYF$P${bBsiWT4l=1CS!Qn4K2R%f#0JHZsxzdq60)5dS-b@y!=T;>vMA>Uj?wod zB4rwRsShO!tGG{oWv4O4NGb$)&su4a$Ck|Gm zffauTkwtx`5|vEx9{?t0Gk&Fcc_ZvJTGXemIrvr%qr#-Gc|x3k7@|{xlb;GI$uTqX zn}Fjx=zmXrl(MJgQ_aYjMY9_jmQ`^l z%YfdGwl)A=;majGj7l*d@tdke(5}gaCU?_oJQrpj+(ZjB#d$v0(j#T4%pE;Yf(@Ye z92YoEN%|O#N~ws6Vqpn`Gp(^2Y@ty~GU3=;Slp54aH#7TrZ9%pzJ_R1qP^ zx1H2Dzit=pGIVG#uobCc8sTUrT9p?n3Y4H3Eo6yPP~uqZeg5i9wD_ue%LqbuX}mwBp9;u^czXnZ%UYbMBV8eU+756;4W; zkY3EQyp$w#8loP^IG%3KXy=+*AQ+3U27(t&%~4&~RMmO%v{_^8$X^m zT83VRnR*pXWtMgo>9_zO6alNoucxhfMXwN@0ey%v&fqfHGL%qgkFznIXokYcbyj!k z?V2&2l!mw(I$$AJlwNHsz&ybGQvnO1CaECR;;2(?m6ZijR+PXqcnxVqi=-LhrL2kr0WjeI z!9e@HZ{UC5$Ju|l+xgzn@%h17ByZ%G>SK-l-}d&_vxfc0&d$@P_x2xm@eCsLJ<(T$ zo^cm?bNWir*rH?>j|u{MC9Doj@cw8#%>gcOxU74yf;{AI>nCfrX>%D)kyMlJn$B*yd>&B`cbkU&s zXDUEXYH+VWog%5NVO{7_TNR!0P(To>?~DFl*MV8kV@ws zSu2bViqOZ8j~cKYo-`oSvi+yPM&ubHJ5avjNc?WJTaC@c!p`Jc537s z6#UDmFRrnSr$$Am#;N#J?WteARe z+svgN-QMxh`R?J-!D$<|$$7Hb5WljM)QWo?_X)5#Oypi`bmSJe^CJ~h+I1dmJ&XEL zKN<|5_n-HTk(s{W_6SQS&_+uN@{J%?P=sS%T;n3~z*l_?zp77)kJx{2vihfaTKK<< zDM@ouh)CvN#uRuB|F^TX!2dnje)8;||GSIl{rle6!NE-q25$|+QBWvG!Ph;5pA#~s zY!L&7)o0KIMcS1Jke$Waz6mY*pu{~Eqo>>OC(X3v4HsW^{wx6SjQ#_=9uyUuqhCs# z(lI6AK>>hA!B0fD4dtckK@CEn5s9(FM}lWHO*Ra7Oi7w(MIGoBttOBP^l&tXsn|a{ zQ)Lwcpit$bRkKpjSUWQwtK76Fc4hK{GC4+_zlrc~qO-ibKf9|YGW3b6{qYrycldJi zwOR&Vjil*jH-d&G3xAtMcB(PB%dfO&i!*KYd5aV6#%IfPeyag!pbxFZ*#6PkiXCBi zmVGAL;ECY>oi+m45wm!K^$}6R#Ijk`M@5^y!=Ti`Hm*7d3wIk{8OW!2MAB9J8Hz2R zNPh?Ezm2^;`T#~aFpmH1pw30-_9vfb8D|wS0K*KmCX%>lT55OL_v%zLak?ypm zfG}pAuS~-c@{Y0|<*suqP~R3gK<6K&c$CN^BHZyJ&ZR;e;3aZO)kC`8mCv@;g!)wboE?QxIu75Su(Wt zD}hyC3>Q4IJuAxFIWgf>-%aCm1gt|Yt-$2iu0E~{#37mrX|>d<^$ANn#0 zjP?aMs6E~`M(oQgO$korG@g?9D)fy~mP~ow1I(&Amp6}Nn8QejG%QF$3lhsAdhot; zKF>*Kh&uLV=P~M>n!oiuW@m`rqs~deC69Tk%KmVEesZP?g5GgO3K0QY!8 zY^jUw{-C2(m8+mj!Hh5jCDIT*c>5kIcZTSB|Knry-gG$J+1dX1Ze3g6%!Ifw9M!tn zLvF4O(NuDq+HggglFA)US~m)`=;*~dD`fIp4$ZqD@(!8U#a02ll+8RWC^zg-ttz`V`_1B=B zozsj6iL-o&Sed2)GE%JWjPl4fXVDDu_N(JN{C5uVJ7>@~RH6nS`A$O`Em{fLcp+gK zPhWZPYyy#x1(sxDd?+->amv$_vdNn~(Qfnh^qFqF`9`Q^&NrI(&F3DWRr9Z&v^M5V zMvai2cWB*REma1*gw1^Ca=mchzS%$gcK7Vy;^64V!_(uV*9S-E9!UTLtJ(q@pW4WC zsI3z;-R|D;o4p?{_P@P&bNb3_Pn#DkYzC`gEQ{1{tgZj`b>6>sI)H_S%;i~&ek2sL z*qRr%T%1<@S?X8suu0aNvv78B+Jxr2f@e)iZhYKM$+(@IzkiRa8{|d3Y*Ysfb|je( z>;6~Ep*-0=JNxPQbpQ8;)Ov$0KzeYr`|YcPi`}E$SN}Rc+&kN7r#2kCeN|wy{lla4 zgVUqkR~Ne{hZp}m_}3Soh$V&rZ8K5#OI`r=fBkfB{2zZ$Af2D|0(`HIzrT2O@Z-U& z%}z6r1MAI%*hNW6weL_gpJ) z47(s+FM-y0)&6myU9!V8v>VYEfB9}hV^-GNfX;xEuO-s0RK@S%Hk1VnFg6+koGfU1 z1>$@C=GFP(#reU}?$O@DvbSPYKODuXmOm2@EN%DnVE^!JDaC4U96aD77fxbns~hbp z-Pmn*(~=si_7PNBxq-}>Zn1UF4qknC@x$@i`N8UGvnyQ%HCeSDX9q{;r~kUxKUrU{=A@ z=wb=Kw7wh7-K^?q@A&wihX)t?$FFw}H`@$;c$&7BwXd^tD(WemQ~!9f=*?@tn+OJ@ zS|zP^^+2!L@U6qk9%z-dKQ--3xH{gY#ap4hlrYR* zQ0M)I4PGVIZ``-WeZk{!syw0#*A-f}ET)!F>x+-E8D_+QV{jGWZdB&xf zC5vV@HuyDq$hbrg1<7Wl*yCA_3xYb|yc|S>=V8BtqCGDjc=XS5L~OwK@2NC@K6+HS z0aG3G{NWS}CF(DjzIox-J1cC{I$o1sU8qqCB0s&g<>O!Dzf8xdZE9X@IyJ`VdyS!= z@1NP$-Od;7PIDDCi(D7hd)sj8Cy z3uo!Fh8wnPn;np|FW_+aDBrz&(!kb z2v~KOg0=mQu3_=!2i#JXs^6`wNbQGbNVt3qHQ;Rcebp00DOdn;r9I-ZI0@Cbweem( z@K5CjdMax{3&y$cxxZ{7^wVlj=m1}e<~D+K@m_C3iZ(~VKiSW?ZoZDX|7ibm;O6)viHxYJT3gc zz9d#OGpypl>R`HYifMLh!C;;K_sQT%!~Sz?``PwA|9=-xyHi}<4nPMBZ}4DFS$xun z8N8?VNR93KbQN#46&?5Hy|P?UBN*{wAmT>s$$H31FVgusg9sa0T5)96jn<#q?0o6@ z|AH3aYtH}n&UW+s_n$uL-=F`xcs}|3|4EI-Yn!`)RF)fz4?firyxCo=EjZD>$A1ws z@aB-$8-n9vQZrWY@}%e&JwpNX(`q-ajqkoaJ^rc1vUxpbH|a!Hnxx&EPJVIINn`l} zTSn8J<#sQfj{DXUshWZoDvdSP%vlvz z5U{ z-+}x;c=}`k|3ACW|9&^mpG>4*7M#o_nD>{U4JoxqM zfTlY{RTFLO578cGS2g z^#1<$PM&4*zjotY;sS6dcfZv(bjR9zbtiYfdJ_JEx4zZ0^!(qQ{I|9BZ1Mhg=brxG z$@59)|4$$&F2^WM9boSMQwsaQkBcMB6UlijCNCD*ZW zQ>!BAwv5+*Hp^fyl&plR3fq|ROh|g$F!I; zu0FQkd#PKW<>%joMf?J2VEz5iRx|(8v#tC1A9wO>loW3T|K}Iq6kjZAlD-7yXoOZ$%}&lc=Iw)*$>-*@t~U+eOuH@9&|X65?E_Wx!8?1K zQcQ$;xxvU=0yJCR1Db27){n@H6n_BR(Q^Llfv3N~1@P+gKj=T%YUY0$^mp$4fA8e^ z3ta2g_p3u!jn|u9?3#$`&70j%z1m#>?XPJ1yV1ZuF&)(2t2bxo2d5XCr*{~T-&p5EL4+{x2LCs;~SFo7gTdi~M$lrS_ZX_`0EKteewP)Zqzf@uHj0;K7ni}rYyafW`}J3|RAL=a7=?7@FE_(3%Kwdlcr z?ThK8r~YGqiW%!w4UKSoRpw|+QzC+|BXOMvUq>T+6?`4ZO#RIZItjl1{|8<4BQ7W} z1v=b65J8j|TuJ#sL=%F0x_H5V4x*Wec|v-B2429O|I>rr{nrOkmVEg>)|~&X{&q9} zD3h4yhE;@hp z_x;nq2bY(ZF=v9OB=`!&i8cZczET}!h%zB@nmS#=ms-h9+ zQpf`50%5d%_|;W7;!M@}r;FO4>kNCnS|Eoljd1rKH80t;D`u`COM9s(+M9(pmc?(xV7{Ey6Z!c5x%fw6rMoO8DX>aCt& zXi)t$w)en$p-VNdp?P&V4C)KJu$s1{UD0#ZytdddOCqYB$@L(;NwG^{hHtFS6{|X? zld=GE6d~2<+uFN#54*MBkC4ztEhwcz3TQ0H1k`g z76jj*ufIO0`PW|$(JLw>QbRSP6lSkn!aS(1^d^48=(2e)?WbNsQX&a_zRc!sioKoN zI@_jNRRbpa_r^{4&u{-Y`VZ$-^vtbiPkYdO85e*x^ncLbZsvb|^7P5Q{C_7;L;lBk z?tX4ZgQy=QM8pNnb+XG{lwgSg&yER}8np?6vy=#d;N~dIFko9TXYpf=6d?(#K%jyg z(FwGnq>YS^Xi6SyB7qsAOqLWxhab+*PkR6B?Dz=no*W{L=LMZGk^s9=x$2pFtB;v)S7tmP2Zs>DMfj#wV|J!gzMTygpCWJ{U=e?9qxcdn8LNU)q zJdMO`5?qn_H7^n|3_@fY4MI0RL5LU^zobEiX=UpYB9dX64$&2ldCJAre^p>O1%~}r zmAYM^m}Z$dXc6Dp_W2-q3jlAVt*;qetIf?2it+tJQF3HYl& z%kck9YplKq0a#=IxwHMW>Hqt5Fu3>szmuoiwfylJ{T1Xo#XC|)CB-Qc>YWnW6uYSr zp)DQ-UcDjO){?Bj&Mf4u~uXD+6kETnjPQeWAnnA%Ux>iR~KFC3)PVppCwF@$?C|x~bV8UZ{cv(zxIK`gaVjTK=L1Sr# zXpB=O_v?jQ=-6Mn#+)pf5H*jgH6;N-Yl%NcxRgAc5Jn39r653PaVjG8Mz7>re=T@==6#76ISR-`AK@`JUyyIg9tuA8PGlRkfL2+3W zgsH}q$W0Q}W}YhEf!u)Pj?o@0>T8_a{v=IPQkb^X=tPcV5}EODJ<{4*wR;@oRG9T- z-kN$sI)qM2U{9JlcIak3@s!{MPy)?J6fA6-A(BN&f}l3*#&|U7){RJqNKUD^pyGmY zc_Bz#f_~R6#}I}2=qed+g?>3k)KSI-P3NZ01)=I#2VK-$xFKTto2slDfzAHYlrX!q zAM3-f~cbvD8g z5{oO*vlx;Tp#jq23=#q#pQj{r{fHiHs;XnS`3?dDo4ppd7&@q5lP`|S?kDrJt2x=A zTUi8{&=cyNOZGB{uX&lK8l!2|;Iz_G=_pi+C?se!*Q;^D6MJ6HB$i}cre{P(K&n*z zW;`l|^%$4c{!lef)SAOaDFs27B+KP|pB9&h+8x*GEm(kUY> zWkE-!LJk~t!j3(b0wr^XGa3V2R)MFQ;A1b;Cenb4zoV4k87P+|Dw%+joTiAf8NVXF zuB+CbBHhhF*H%bVg@w?XZNW7K(EdUHdm13rt&MW1M&?$?9v)c1K%0eVXACZ==na?d>EaD2q&NkIf*dhri#a#GNYFo{zzc%EpIr%&UnGA4|KIlm?fsg27t z1#Bt^F5+pR|2b@f#fo4~Ixwj;Dz8Ly~qYPW2l zS3?(Zgj%s>t?*XfYycnFamWUM#*RgS=2k;d(LA36waqD0te9ocm|AzBLby;gKYffw zr9^a$=Db9N!O7OtColLYC7FOPifYJWuBbQc{+uVTL8Gl!>BOK_-aL=~PQ5%X618Az zv&}DqmIj9C!~mr?7)K)_C2$QXa2F8d*{0(XkI^*&xblL`)B*C8!w#c?dIDHQA?O57 zUB(Nb-wZA#6(ZqdH+MepIVp6HT63H8WS2?0J07bAn@0gQe;FgAZnMM?ULr?-_d&68 zra_}@atQa9=Jml1iAzw&m|E&!f~~}vXGG9-W?XOsdvKF0(qpYRs;{at7-n~Ho_89b z5aKxj-g}4+*}_N7zBJp@23htj+b@#mJmr%)M91mW>C%)730C8y* z7AR^WYlY3qLqYHFA$t1`3hvex%uKXE7%6@Rv{yF9kK~95iAO0FQ-izJQM8qKIy8)swZ1cllh0_PZ-_!A048Wg3t8e6vgTVR>ipFijFS`@ zWg6Mzj4K)mY?qu;Hqn=gb~x4DhmtU8JOzeZQ#UQ%fo77IQc#1M7jKVlCx2N(pU`X? z$|gO-{q+L#M=Q-$BX!gkc1B2UaF(Ye0`4L}CdYrTVUnfxxvJGgb+}AtQLJe)n^1Ps zT2Q7U#4*@2sufkJKw9goF0zrpvQkJTNMx9mu#xTdHY}DWh3JZ*@g>owlC=?qG8Lv& zZQvHCwGF>^=H2$OLA_yvq%@<_T`O0c+LGDYLbk7CDM%4cN}7;f%(J|dBy@(Ny`UCR z+#qy6taulpI4>1j)X((KjATHj2V2iyYfec6>6d=;v|e`W$O9%@8ZhSE!?HuYSEfQDIlhv1oYp9W#@FH2}#| z0TZvLr66NoWLWBr4=6XHjDiUfN-<4P!mk-Oo-Za&fic?3t>IY!x^cp zM_EE{V1|O)0QC;CZj5>dl_gDvC?PQ(k8rZ=Uj#SGzm&vKvoSS7D~#06kO{C1*UOsa zcltt0_kS6p=ctSJbf}o;NKA2&=<^5MtkdTq6sz%?T&yF?k_((9fC?4aGiP6yiOhbx znBkNr7vLG-q$F!%fEj1=jF+N90OlOz+}NOYf$nI7HY(H-Ly@912x_sLN-O450WI3u zZJmIBg|mmFLW`V|Bdgv*-~IRgk)DK{Xw?>B=x44qVXeeA(R9`P)-D`p<#2jgbM(lO?#oL6V^B^RQ2U-o8xL+GCD?N?D(%wmdUeLJn;x$7okQv z4a@2SIqUSJfiF%t64*BsuoiTM#8ZwsW6nE&hhQn)mZ;{IEzkq9SS2(%2fr&X>^aY+ zyV6os{uDNuclj*4|Et_Vj*ia{&LVjuKe>-}_8;3%oAKYCZ9ln>|8^(OE?5Eh8X>rp zqihnPy(x*WtOzX2ny{<+%3%;7kRxK5q6v{2MTMag15h*af`0q)BMMVcIlOF*Mp5~Y zKQ;zwFIz+Q2FENW_IAaArdYIbskl~9Aw7n)@TD<}8}l^f*NO^T6GF)iQVj&pyh{*s zIcPDBs0~&%x!FLqZ!zQ2xq&pVNI!lIsjR$tH;B&>_E8vHwhx6N`XAtC;<89lD9kUz zTn@ILMg6EB4Tg#p>RlLK;zAHv=B8-)ztPF@*}47o1M2K)-Zwl4u^#6T4+m}&e-@l| z(EkLD$bpN4(rqQ^!TS!@!N7*7Gp3A+sRg3*@qrGd=Q&5Otzn@o(LZXpOyBrX`GRv` z`Q!rufY{;V|=v-pp`jt;~xzLxI17MLYGLqcj#35`}nsdx@;i-HnP%&q(l6>|A{G%^bK ztKxn{=mQ!(-61S?F21d^r=Z$R^C>}ZAv(C?@FhYSW$209kiI$M2SjaZJ+mYeg1!P}XkS$=nWU-TTxgg`=mp9RR5@Ga z1Hwr%@JgYtY`31a8DO;k|mB=TWOn41n?AE;#n zB~%bMNN)~4ethgl23mtq$Bmd4dhkjP%t;J%^D!8`C_MRCpAh|%IQheBhXGrz+6R6= ztvIs{6nAb{lxaJ^t7WM5hxa>7Qw3X1-(E!_ENKFYUuLWUmycT&tw!s_%g(OW&T31s z<(=3oH=!`vLw8ErDxePz)h9HTk8}f#;h`G;x1RskTHOrizg7O%!S<7d_}@?N`Tx6l zTH}AX3#)aRot8!qU7gseg-W4M%;{7mY--Eb)QI7+oD_NmtCUVui9SSu6)r=I1%+=qw9{gHEhB_K2)yL{DeW3{ya9KUa z>%IM(c-L{&QB}aSdqw7t(N`K}sRmu^Ep7cxpqEH-jj9%UXli{xlAi&S_sDDB3t?CN zg8N;~HZ<1Zts#io+`$$?FWYxm#d}15{#*^e#j_s&TY2i!eSy~C|NhgbJ5Bt*bD#h7 zZl2rcfBKEF|0c-)14MCGOmpWyJE(KfS&!gNfz{-~%Rd!cL$)D0;*5YTEf~BUaS68y zyV`Vt2zP&6%SY9;R;fZrfgzk9@ySmv(JJaiAO}@hF}~#buRs6Rg6ubo|2BBGv$dfA zeR_ZX@8oF+V0N*s-m8f_^hSif+rEgn0Wnh}HPt=eNI8CgrYI!#!v=UILJ*W>@1 zN8Be-f%Wo#6aNpMYz^-5|6M#y4P4C~(a-;`@#vBNc`XM1cSN^UywT)rdCH*M@O)2o z-=5omO?X-hg4~wFbb;&qgqkk~{r<*N2@#%g3$2)l%=zlQ?#AoLI|4bDB$ItxV2z1ao ziY1BeYgG-aUXPD(>(*>l-P&R}gxfUOtc|Msx_YNSU@=7o6`TGe%Bb!wPtn8ZJDL&^ zeNQCn_$4}z{M+~yH*&xCDf#O@o8bT7IR5`&@T|rD@1Fm^lc)UxzNY{A5-MV6DD~%O z@R!Wk>g3{!qI_Gux=7!mL8+;jmt`cV>(!jHqK$F)^As2fK@+)_R@H}QvVvQyuJ4ih zAMDu}|C`W0pF#%K-Tyt?YTo}1o^IXSf85El+5pQ~)~+D}ru4?NpkW90S0xE{5}Prt zRE@y>!U4lR!g#|&($lhPB))^Lc`B3K7uH0PF2u$mDrli zKAw{JN|c!~J%vfJoj(KGkp8;|@BDO`jd%skdDEM-e)Hi)Do}kd zt>r~IXs_*HT5!vC3c8l0pYSo9Vln+wFQ~6lL_LU+5+yyf+43}J!#38q;%_dM-)GYr zpd9IfbzNs`p8#yQVv*}To3S;K74jm6EFRdp5!$lVU9+;EvZ^arv~df$8sORxPwE$% z&Dtc-nv2({>RnRWs*Mu0J5PiNn+@&3TJ6Z+3en#2o4p_QzinniM$7Z>qcu7BQF|W# z6}Kk!2O>V!t{+wc-jZ|q4*~p1+gWV_e|E5UdT{;+0=;>!vUr;7193sy+Qy(yu{Gv; zjJ}%rwp4!TxQ`zZIICTmpcG%t%pbbzPLp!ff;TPl9_netcWT}x)?JjA#`S6po7_~K zmwhbyUzpMmiD}ErFm8FNqhoxJ!cfpu@qJ-9#xzA?iN1R8pV5!Q>bKqcA8j}dK*3;) zro(BJ`9cH>`=}b<6WN5?1aMR}8y_mfwq#2zhN$xJZGFL-MVn2v#gN=At zOPi{dYc{eNKx=6`&7#ewno+lwHdHUzqE_+tbUlh#`>AL~8oNIhzw5DREZOIti$-&w zbub!jefr60H1ruqqtVjJvr#qZMTT3{W4e!?<0Dhs{NdkV&W%9tfE$}HbX2SMY z6W5N^ZPdhuf~fhm(ig2H5sW9q8ah@(^xw7}l3J~$nyCe)niuN4>dTLRzL~~rQCVjq z(|eja7ps0_9hzO#R+)6k*|MoMOa#leS~azRaa67olTTyOsU(?bQY8}|-#DQzkWWpt zoJOg=a>J8#Nh7}EDY%syXAQbqIi*XL9$E~lPlq4Mdz0C11XWm&pPOk&+W4sr&VOxy zb*@8iz`YdH%qonX{X|pMjn?(#UuNiM<0}pQti6<|>z!Ltu%Mdn%+h)E>NV+)>bmKx zgWB}Kjd-us%PQilw=?uq)$cEwPzfEQ|B~mJtV(Cw4se^Kk^6Xe=r*R znp(cWxV98uIn+APD;55qcY*tv&-(no5ijWEv-((X|M#?+|MBVIKK|>SJPo^!x&rne z`awS&?C#ey!)^sH^;3V{55Cb4`nJq+liI|TfH-W%iMp0&cq`hD246VOaDcu@reV1L z^>PhYIe+U}ZbCoGz0Lf)J~6R}UT=}2x0X@3B9Ja^uqKHs(hP@-iG#g5?a79Jn;go& z_wK)cmf`=?gWdht2T_)Mfj(B_|E*_RP5bY`ldZwM{okEDE*V@9EQSKdpMi#hFP82- zsG;BhQf_F7Orh%|}Se7Dl&-AN3%TDVP{Z*sODg^ZL&7a(*J-TUTuHsAp;(R{8X_GglltbS2?pG&5_!^ ze!6Uz+sx$-I-hbuYDG-K=Yq(Bk{L-LAsD1S5Vd*mlQ(GfjyDA^v3JPPgojqk@$!KZ zeHB_?a5{W|J|IOep6;M9Oi0WVqDOnE^M+R0y&aldGDeqN+a?vYvlJ}O(k9v0m!)2> z&4!x})0vqOIP^4botaS4xiFp4Oi%GW0Wpn8a_C0amOH zS`RaL3$TfIfr9EK`iIF>KE-1Cjc(Wk%V%u}cuG@Z^U~RK-j@2`1X=tH)YWYBC8RgI z6XXUIqt2;WV#3*yJexYzz0C&PlK%8wH|XoH&uRYk*F*G*3Z2B?Ot4L>cnNEvy3#cM4WrAbaA`mF5|R>= zjK(Lq9>=t}+@?-d+)gubX>1CT@tKz$&!1bK<($Ee#zOFzLIyF%1?VNhED3Zs!siV% z_x2{A6gbg2SalF~^|w)B>!h=cT%!#C%nPgV34&eoqOJ#0JnV#^hbg@xXx5LmqHPp@ zgJy%MAN3z0$`Z(^FI;H;0^(6)7Eq=}f+ZcL1dR%Uui&)m_7vuVtj&;`6zK#q0>HQM z1Ekxkn;yInV_u1qpT5zs=70KNN7^EI-NJE_zKN ztvZ|NM7cU2vMc2aWX2goZ=lP1!AnynFUXAYQlxW;>7`TI0jf|lq);zqrEbD17m*+t zW|GDtLjN-CfSm?M@&LAlK5d2$-M39z^+lx+3yFt+m(Ap!kE`_Yt*DMpGYxnP<}c$y z!s+HLo%`s@LuguB4V?IEPqKPT3l|OCX6g<;cy~4@wi*8-2Ysmh+OM>-X!Y}<`C{Mn zy-+at5UzXHm-x(jAA%3)(sSauY#otWA7kKySecDTv5@_ssd#{T+iT{knhC{~dPj2+ zj1TBF&b1h;_J~VmOHz{A+_VNo0Z*g1iK_SY86i47_}6QJXo$&8Fg~Eev6V+3>jZIb zz%Fq)aPY=U*wxd_#zQB$0y_d^#0Wc&yqQ>Jf0hGbr2*FHSmO}I4_cNJl9Z55m!syY z)3zK(Uh1Q(=c01^K@V*Pa?I?(dsNlCWHfEtWoL(DaCN(B}+(= z&ebee`Ji>Z+V#%kwiL=AR;hwaE8lXS5*Vb;!mfI{o)SHJt0O`fo&4w&L+Z@f?amJzRd!?%~)+oAZ|oWfl+!v!UBt`43?-X3d(3j#X*>U@n- z5+OxZr4hTVjzFEqOMRNaWa3h1f>*0OE(>TlArjMcGZxGYr15;tf%t?CU010snL|T- zH<;`X3p%-FEtZmpR(47@Xi;mvmKR(Po!8=`j_`9~Y&zDpw`c{AO<;7scq>P}9Sx%X zy7p=r z`bIF;JZhJo88B;H1zl^4%h&q@+D)(VTx{B6EoS_ZmDw0Ado4l;@TH>$VK*c6_1WEqd_=7TUcXrtrhkFFS}IQ1263l*9G}5GnpV6Y$*L+DBoAIzN(e3x6aqU@+Dc*nFyv0_h>CYPVYOh`^ zIo(F%xYo1x5;&<(Zn5UZcv+2luvwEWEjIlb?WhNz3}fA|v7&{yX|dfG_;b$88dp`b z!*8?J>%CPkZ@Jd1d{(`Ayv16tab7i}{*0ArUF=)57<9YnJ3^8Xj;|i0Lm^5c9&3X= zIw~b)lfa}+PSMzuLsXz^lEyrP4D-A!(A!dw;@#W9JH!k0HX$>T@?5>ydWSMh;m#Ot zf1(9j%qd(KzTG=MIzK)9_Raa>(f9A(ZokuN2DryH`US)pn(}LX|0uPpo+JSjp$c%g z>ncD64{2wsF*x;cenm*Gb&*t{yx>2RSVriOAu;8Jd>oX5pzo>tp&Yr%NH{ol>BbRe zb2)`B7}^J;^#^J;MuJLnpM1nw*cju!o)9p(JSRA-CYTpsFZcGp7?!xeKjS%m_prrW zzWV$KiVG~`X@1jM)_gMsbIh>h?FIEWUGV2T5v`@v2h$cAVIe7DVP2HUlxG=fZ+Eer zX+V-3Ga+f7uBqsi)KzhYC2j{$f6~SFrZi(@zO&U@(tXv1Gc4uLS zCS=wN-fq7euJaNsm#*g z?UOY%wVt9Uh%ED-Wq4K9ZeEZa7nDt`Iamm{tfA!Lh=f0L%19DYCV7ZMn{fX3Hl6=V zJj?t)V%oEJLZPSG{-i$E#eW|3pEcwEZ{PcW+|5(FY8+NZK-#^xENL=CoppAAo%^%+ zXMI+je{Tf z!Uimc42bh`h&ugfP(_f*NXCo#5DogTbr=mVI=;rvHyW;# zJQa<64m`!?5`u+SStiOzMHt}MMgf`c2 z5F!nO0?y6UgKu6AqQTRsANC*AgMqlv$5TqiyD7QBEFnc;2@`Wsauf;-7Y#M z<69xhno>F8vFMe86yc<#3F$$Ju-1ps9A`<;?ZTbVvGHxu{_T}{rK2N2VS=tU!FBnm zE~X^SNg*Pcr$HAA*_MVu7uk@6)w`e~CsjJ5>Rn(3Un9&;sE|r9y?QR9NnAvra%j@=49Sb}Xlw8k$7JV4GR8aj$&2UPqrvm-{?ljV#j~9k zPsua#)go;{C~Cr|qEc7OZ%3!T3qU!{iVqU-DH5Q5Ky-=LBvXwV<% zH7(h$Q1Z>ty#fcQlY-7@N+#q$#8|rl4?*h?1gg0=g4DcUPtHzY+6Yb%A6KqToRI*z zVkaVp(1Or}_5U*-k{(~<5>OzMjlsP*YVOarmLQvkX2a}Bvn^L<{y{Sn1`Hi8n$YvU z`yqyCXJ=b?^OIU=@Ql=9G-@ZxLxDWn(M%8)%CS715<(%QV2BC9>0PxeL@O69@7}0!SNMg ziKzSR+y;}%f{+>}HAb$Yr-7iqnn{9Rp#dpCn(I9y@(2Cq)}tth$T<_lAC3+*LKRN& z2Q>Um7Q2g+#2XJzl7*oh!={7C6m~X z!d@(eIl`*g1A+FB&LU((eNZu7IMC3SHYMInnj1NW_v6nwheA z)Gwvy>|0!rFe6gCngPi&N6%6xe}uQ$7CI_KZ-fg1?f1GfibFXip=vQSEdmf$6ciH6 zQlM)r&?v?13XMpN)#zND0LERMEpnsClA&K(NNf=)wWC!HL6ojmeeu*AOIX9u1hWi{ zVIsI=s+k6nSV+tgTqF>I9fE9?xj+dg0xV^e2sPK)1$iNlctQ@DHaI=ZhsIA52JZa9 z6f2!=ls(+9c*AP1g(+Y&)2{DIOzpmeh{2Mhf|n2^q~PUbYGN4F zaDeK~)B@}Kq0tq<{6b6y8wv$tE;-LR&8H~pt$RN7+HkzKf9C36v}2qob2Wt|F&juB zn{QsCK{R;Y0PED$Te=ix>Aa;^eVFd#Z^lrc@YlWWW(5V?^B_8bNyy|LWyis3H3}hkE2pDRSV{( zTr(gNi!0Fs)xTmV3u}ba6LS&E)crI;bCp!d6-wevFS(8!lNiLRD`~(KWahUUu>Gw^ zk2;LVDCPx;1kdnI%o*zpQRn&K#a72Mgb*wR)z~Au!OcFg+x-L?Z&)SveD~k`M{wEz z4ePdyK9kld4(K|g8j+_Ga{UNXTnkgGV=XuVa_e>#deT9%v}1uH?#9v8xVC#87(m1V zs5;Jvnb`#7I30)L8t5K`(_ElzYL8K&cDtKUFGQ7fzSk|- z;Q+%+ncCL2>g!TSMJ@i}G{WEX{$Yw=K(HE9(i|8$b+Wk?l)C5@&8YT`2W_(LeGvu1 z=cUNSfuNe!=UA^E9LHJ=ekiuVc5=)r>LH(*Rc~B(b;05_&X2x4ATrJ^>mkAgkw(TQ zDaNORV7J0*VN1q&UCPox)N}iKqT7lQmC33RmB}5As7!7#BJ>*HWa#muVjJ={TQx|+X0+f8%*$uEpgPci4s&5^AF!DiqPOp0fvPu#4B6Y2 z?~aenn?@eVt}$h4W{~VUUjiWHetqP!j_69EW55iLi%G`W837$#6(G(Y37x3jdw*N? zh!^Hqbzpn5?Kd~P;YLUriD@tAX?kX&-waXbzsQUfbM&;IIUMfzo==A$U0{V==OC`; zSjN-(Ct1+RgcL)?6s3XXhlyd-k&p$JWTInaLO3=9)EY>1^)pkuf=G>nvdJ6x?3O#j zH*Xl8VVbIqHbevcLEoR9`c*W58D*ygCoYGa0&d1>g0866$|_FIs%x$ZFyV^%m|O4~ z4Gd8~uwn*>z;{)mC=gzB;1LtO$mpmHM*(pGF=bM7X!V4$?GDx`4VZ30yI*S#g1oB=S@q-%@my$djL{AZC>HLvHj5hU^LW!738d`_qFFG4t+bSUO#eM=W z<(5s{)J5uSBclyeR8z;(g`jY}0qtXSP3UAQ6$fZoTAej$5Zdgr9G6y!J4#JcR35&607rW?F3!8Y|HnlZxze`taxz!u)Hrs8*47bnksx`jtHoKe7 zmu;_4=)HAg)wWfqeP3DBeQwGkkt^B=>S|d4B|`;C=ZG^cJy#kTov6kzt+p?efS>+D z@kqy@g%EZ?Mgf;bwpJ z?224#4nt2`ZOV)jaj1tBjfljJ75r6SSn9ghQ^MXbfh84Vs#%wPe#E7voUY)~^8=^n zm6s~dF7fh>+qgy#sZoWSWz|szfsB4%;Fz5FKF7MqHKw57mK=@gj3{oXl%$H3pQxFG zTUySTR*O2l*vjUIXuIF{87Z@M7WHgMQ+UUouiYR1r5I00D6H<-?SOjHP&J43X1EwC zp{=}eN)zqlj&wX|;{=WJf{*O|{pWApl#WR}k5kg?I{jq`UAP(TYRBU;HyNn+i>8AxEuRNByJN^mNtds7l$onSe26?CG^PEUXTwNrh76w!nJ){`CgPO-L1u=?Tr z{KUL$&F%ced~Bp?wy&GHlDEwJ#eB?$#c#<*t=ekj%14Wdux~LPOD1D+Dq1FD$utZ! zv(}ge^R_t&8rQT>!LkWxrbYkvnt^R2h$`@{x=X{2Vl^y8Sdw$fWQ2Ah&b$eCSdf^| z8C(>yzyGsZV6UQ7ftH8CS#;aE5r2^(q(X+-3*QRx?QepXp zLyJj8LBM!)kC#j>Q=nznU0+m&QSHMZ{h6>AP);`1h)rKEqND_6^xnxER7#p!)gomO za81j$fi_mUrD2=7z1(@W{iF+jo7j)xlP80%{?3d3w!SV)h??5R<|^83m6o(p7mJpJFE>MA@{&0%GI4?svEx445vkeO}F^p+ArZ>Hy;c(SOrZb0U z!P#oi?`KXoVO*_VSXZm2gO*=op@LR=ma>F>L~i1=6pG}6+Te;L7{Vip7%OO%6kGjT zs-_3!1#Am#p`Ot4Q#&dQ7ai?KVO*LeNi3T3;iK4xI$+ac0XK5F5xcKu;MVUeybXc-5DwH zgn)mL_Yr%qVLPb}wQ~1N^XBGJ`$_K_-*up)UPofun+6wKVq`JWcpD(~PI)IQ6j< zk{9Hh9~X2&8BR}YsI%%Hc1?0T`kBOzmM*GpHH9_%+WQQ=?3veuZv|i&_=cN^e(POJ z!)DNWS0kQujZmkzNM7)a$SEmBP>I=9{_RQ%)OyKXeeLO@VEm)152iui3}5tL^!<8z z$7@?jRcT=lS4Cw-l^+cH{RjTHUrM47ohY-11(xJtOH=Qw6nZZ^**vU%c0Rt{%HBPC zq}3cFGQ~5>P1<$Klj4-@^K0gfSxCrjsBzR!lqLMSCVRMo_Kx4HTSo*92^+Rz^{&a+ zJnz?_dXwJ`Oj|2pdTJ%D12|(SqZv+99&6X0q~Li-nN2d{ax>~OMkrrK+%p;%T=22% z*+!kk4)pcfy!8xzD~ohvJ7#Up17xl*9no04mUQXF-COVaO)S5DZ@p(ksBsYjwk5TOfC6$@R<;8~APgC&;%W2l#oo2*Sl5;VvrXMXezgttx;AWLNOR#|^V|1_CmKJP zK`7bsTjQH$MgoKNUY`LfIyH`HwyK`BAHZ_U*)3Erg+HBO-Xa|c&bU?IA%QJx=M|4} z+JQUIf&db-b|Z%;+H@M)F_s;Luoh5|H%e|gWwMmKpg0xPjOkuNn)kZyPoVqmB3#k1 zP@O3?E6$Nk&z~LBxgL@=;&dCr8DnVo0Mt3+jC2%N)7b-?-ouj)qGKe8jC{X3Fz~l` zxRRTCk!f^e^?@6Mv7n@EV&C<;Gg`<}?-aNLF(1Ob;5U?*-GhYYb)D+h8=Jmwrq+Je zm!?3=2eQyZR%VcL4u0t@E{~jE$T!OIM4%&{kP}s&3ikj0&;OOKtK_li+pFxKD8L~m z$t-jTS&8PnEbMvxfB)zI3gp^{8<|a~)fi!c$muhZ&iYCR*$mwoR2wF=JEqq)J6j16 za!NvN)E&BAXP{`A2DnT_w=$cw+~Ub%4fWr89r(x80^0G)JO6gI^%o10dCAOAPt~Y9 z+1~0u@7LZb(zT_HM~!C3TF7X6^t}JPuZleHKZm!CrftKWP91jlTQyfPT4j=3f!CvG zLMNrSfZ;fM%ugo5P07Hx4x9!0i2Um91~+odCOTf5#QNa-0tWgej)aY5ZZ zFIe|$3uS#2jDkdWYRBHf^tPJAEXC^fo7&|i4bX9v~e)M~6J2XB>Ek`B8lzF=A`c_>A zu@CNTL0tu98-VsKZ!nJ}%jJBZ78buluZN7vHoQ{3du-$luu>|SwOfLeK6&nA9dIVl zQEDTj+p^&bs0_2YL4@`KN1tR9kjlLD0!4}GgU9GW7_0x5OwtrFk#c@j=EyZwg^;?& zRA;qRLS*$>hm_i?LP~)nT1J5n{fUgGoL?EHpiNL)G^aMV0Tw%dSNY8@+$!`Pn>9qw zEwfTLg6x%|=s}eDp7%k(56z2cOR8n%jD?kF8||(b?GQMqfoiV}z_;^(ZS{g}h`-A< zRdoT^@F5K`as|h+0h^$U7;rSBYvn&D1X%o9^kM}c>~z7)nk&^+uyzAK96 z%&ke&@uWU=@gKA&{OEJi1`_Cw>4P3OI}mFBnL-z$m(2t2t>j=XYw|R=-h$=F1+K1Pk-AkPWSOtJ*Nkh?h7 zwUI!WSTiN1^pRw4RU~lWhTr^upgBKt*8y5}!ghb4IqPi(+UYiR5_rv*C;lzvj2%b; zat8R0Oz{X|roYh?kgRFCE_a$HY9`I-=_5IA^i~2)?_RqTc%SOCPq=-+5_u?)*i_nZ z?TP#$+!34{TtbFu$6F|yEjnJ8YZumE$22qtYggNtfEjVVUqZ|+(f?RuBE>n(Yaaoh z=fXB^(`TMsE4m|?D$Ik>#!6QPFkMLZB-68VpMAPtemkzNY)8kF{^EV!;MNB@u=j7%(-Y6*$DPOjoOr z@=PXMYJtt>rmgzxT{{b4XmNM|OXzl;!~pqDv)}gR^W|smX!_&-ZI3(uXnz5R zpvzhoHarCM$c$4~W>slrZq2~s&-&FD<~>4SWqS8u{M&Ch3+HdRkZF2g{68qOVCt4s zWF2_Wrac^St|?4Q&Zv?}2=s)yC3iJOyIqaZH@q67tyg1IxEfr!aJHfX1XK)oxlyl3 zKAz|QY(p0kD4owu5L&PT%JU1q!(X{J+`)jJTl&KhxTPna%Cs2Tnpb14$uNKO8TJ5H zEtClY!(Q(wO64D#B@5?j#WFd?l36HU&$#8FX%R=m1qRTwBQ=Xjj=~@VjDAUgAy`m& zscd*p*=J_nPAO1FTF?vsDQ5%SdqB(^dVz0DW;PY(1iFSMSqH*>{WSD`7N3PhHVSTF zVBqDNP%38#RR_Z^7d#yd2BRKU^#}c)m?$%t6{{p)@ajz>R|)N3IQs5g?~o@g7f zJznrHGu^^K6|A_5OH`K~REj&Nw>8X_J&`iu-#X@8zcc1cYe8%{56zK%Pp1*c@Nkpy zc*t?6$l%zmK8&Ri(Ie(hbH^?$JALbdGXPK49 z)x}w6^+`x3*^s0HGOh?m<7r&g(^zxvZPkqG^KfB%^5Y48g^)*a=d0NH--icQsrZvA zaP7n)A~N!qIMU7hh0VS+@|Pz218(DgpxO8r)!*tRG>(8r_Y#`2LUo@*6TS_(4}#?l z#s`9<*{!>Srp!+@-l=a@8b@lT`u!0bmV&s-U09H%yaZ-T62f%(^2Nz1FfqMX%lR5< zL0`joufg23c*s;9pRrU=GTP!~(xUBIRyUpV<3Y0|1Ioq9U=5E%J@Ef9{{8~l(VfJ3 z>4*%q4oY3r+|-IWj$+Z3A-=Vg3q)}0DZ)~ckB!Ym;bBW~uq@EHjP+**fq75&bv&22 z8dT5^oDIc^6l&=B%xT_olzFk!`KD(lC=P%-t!3<{1bF-xaoRS0{=^lkvI2X z5qYuHPJ0noCSEXL-n$=LCCF8TRCqAUw<-@Siz)ggDJ#ux?ppC*G* zFP{H(JZkbk?xnnsBApuH1EiEQmnH^t$aL#WQwQx%tM&P_0i0`jLt-lZa+88~m?BOI zuq%zZDGvp{d};j*i8KS0?hD|T%X2Wlmtjij&lpOTE}n%WKJ^d*PZR9dX6ssZd4D7RuIzV&9SPWu^z!lp9{LQcv z%3yQ?;*T$F=6A|-qyF2$4w25YKL~JUKj=G^X=k_(27hr=j^xHM*%EZxDShHZr&rZ_ zz3Q~1Ro7^V>IhPbo}3Y|GUY=RxQ4fh&_9}Q$=QX}*GQqX)A}zFlJu4Z9Z@1OD>UiJ zR=e-ku^}*S>uj(m8Hfs{(Kh%>WH;Q+(%`?&c4kp4vv#v)^#7#|440XJQ3@g%k2szp z#2kfz$1*66NM3praM*r~!wJ67Bf~=~m7bG~%5ZB2HuynehD$t5Taa@8`hzKRUh2t%v!;oYggtC%Y2v;6nn;$Qc9$R$nP?WWiW??g)-p5V@203%^yGA z6d)eFi#6<6Jo!NSBB+@FIEj=3yO>(|MVOrN+|!gqi+50FdDfC|x=Vz~4BXz{cBJ!= zg(9;DhH&K#nC>{NexO~#R%Ja zN@!=(vsv)#)fy9Ex|mHzhQd$m%uTcfdDn>@=p`Uc-78T8;^K})7vz6(K^j2MLN>G+ zl>ZE?u&0H1l^b|ZYj9PczR?+u1jm%J#bqj`FJD>*yDp+f0Kl&&mv7JB{yYPpl0$!r z81*Pa%YTn=SrF?nEN3KYA3%y<_K=|t6w531sgvw+m$O!=;6uwt-+L)5|EpORtB#Q` z|Mz?2X)OQepg$T;8~J}9<@4w6Gq7=1Gj6isxR8>-A1MttttFg+XI&EFWdoAkl1mlbylcZHm)(QRsBv^YEm<-uJoz>O)`r5ez zZ6oT8QVRNS4&^C-!Qci(3{DEP$WjbU%oB8poGiQ+dsQx+0jnF0>IaTTu0i{MVB>$_ zwmuX7ZyAf~FB!20wExit?T_vHvob@>aSOixtWB4NrC@HAbhe$=uaNi7>JvH!g&c>8 z(lA;B*cr8MiUc!yoTC-*(iLyV z11V&0f^;p*VKf+yKu`%s9EfVT0P0TF$JiD1k6T|nvIDGJf$sPa$2zZlkXI|@2?MjD z`S4o2t0i<-9lYfH^DIxr$N7g2-ws)|urM||7ejOub-lR1PJCao7GJ)!l0K6gDPn*A zoYLek@Simz;ieQ~R6r^?8}s{_rVf+2Ra3DjP321BF+N!%6%wuo$VOSD6HI9w zg_uv#|79Pw1e2Qxn#bIy*B%kxuEkSTEmGcQu|;~djxfhDgy!t?=kTOgIwG-NJ$3ey zA&K=btvA}GIw|5h;^>T9iRrim2G@}>PM!Jo_{f&lLn3yQgSm=HXsjwyppvVR+bVBy z6nZA6T8^k?Qnf8sFoK{)-fI1qQ}WhMw+=VymVnx|bebWA!>9#an5 z@Qy%_Wq-+Mw8b`OK?k)wz7fHYvL`VYY}*pBLYS~Hv{3#?FXg2pq-)p21c+ygl#Pu~ z!@l2}i+`K0V{5o#kGctj^*V!Tr^is1qNZP&3)ms%BI1RvO~(c8Q!SIeu-xWeJ#;!z zjC0;SKmk}fizN)oU`@*}tR~XUI?SwQC#u;N`#xJao0f@K=^#8eQg0t7@1<8XLH}j0 z+&bO<1sukUSY{%;>e939iM)Ao5H>{Um;5S6OTc1PHRb9d1TP%t;Gj=3f*3_gDV z4c{nR{AEbIa$h1Bw$#U=B9>5pLpMUmS}E_EZOOq?nA5P0_ z%}LNT1BpZ23ZGYv@ak4xTf_RoBw1Y~;rys%p5SdZ^gd$Fiee1SRg1sjZD250nk*m* z|1GlV$0&M|OOTt2OUl+`#`43G~`))>ZGGedxAb(r&7 zxib^FYszIZm^cDLu1&Ro62Dg8+M*->+3Q?s}#UP|6 zX;kb+(yhDF6=M&5KEHO^3H_)4;@S{y$`ca;3h4iMG#bYF|H*LD(Eoju2c-XVws%5W z|G&|ECp^B`iLDYxp3%y>7s0no?zw$s_^hC+&`vJS#0ufgYZHUETqcoei;s8!PUxR9 z6oSXeo4b1HfJEfjs3<)`r#H z^g*a1(p{$W^g|_kju!G*69pu4KuQ>|iaX>OC>pMcyM!5yhL*TB@ECWJj$ldgpH4R* zuH1JFfib8Pj=mv8NnhLK3MX2ZS->dRxoW#B0u4mlG+N#Af+a@_un$7~_y{OqCQh&=y5CKGzL^B|A zzr6E);=zx^&&ij*+7d){0;oohiMC=arc9lCMC-Vi2vvt%4dV1AHE4M)xYcgU&`unS zFBI;Pj9_d)58hUdc!UlAP9osWgYMI~4!EM}6OS zF96C-(8zy{{P%d}zi5|6i`$5QdldiT3&4dXnT2V4X{oZD#sD%_Yr>w;e^j$}M3r_X z%&B9Fpt0ie%5bVrVqQybrX#!&6&q2p5fvYI*@^t;V?WLAPnJUazhT_}cQP1{8~JY^ zWsmY-u`yS6D5_kes>6h6DI$!@SSMV-OqioLCWT*5v@Fhh0Khfoh9=y~j>q8@_HQfm zj^|#Gd2UvYCnF^XYZuPIn>8kvlnk@j*gTlZ%K-VREX(alPR`F;Dy>iJMBEQ7NbGv*KeAG{74^071B5c&rr^xq?e zYf4_(g8oOIzVcg!4yb_s568W@{%1NIH}+q9DOKM4R6>3rlTBMolkSxT4-v**Z;yZ# z#zP6?Tt`$$#yrW-Aja}&LeGL-9xdIVtft5Q`)5~pc+Xv^`g|xEpAP&0vZ1j} zysZpAuK~m@$SBVtpZH(>XYFiESEhZA1(Q!`wD{*l%zVXuN^YZAlPIV@FFc=Yvfk8`X5^fxL8%Kk|`TP!j}~6O9CmfQ zS2^i=j${dWJacl{rAzN^3)_tl<#D5v#1ECpQnKranoM>8I$~OZINbWz%0S0D&4>6q zVw21Ae+40)a!UdKHyDq{G5&8b95wbIdnqaMKU3_9;D#(inDzrp9h(%OJZo3c!)3~PWsDUCql$)4 zaF}gyAblrB|Hy((=S6k`Ts9)$272jRRr8pQEU5Q2`7Te+mIj%K9hNoMtp;XUu4fBoSoe*P!J zesli!QN;O2L26PXJ?&>+_S5f>M6lV{Ard*sV&fR)xqz}MO1yrUSU^yfFf(|Dnn*5> z#>Z#(e^?06G6RtBQ8)f~C|l8gV&(dM%2LGtP5W{FZ!~TEfA&*iq>5PnV2E~+PI5N5tyUYLQo;s9an z8urp)Y5N!~vBc6TpjAyQofM5(pa}584ZJ@BKQL=)F#9okn?}ZGtWAvkGpI!`>2ErP zw?Ym2Z<}z1Je)}Lky-NT|6n}o#r1!q{;1c`|9zC`h(Cq@N!y3?MgZ-XY|XDAX&>fS ze1XWa9c2-f=Ors`X(z#Ln!b;tH{)>J2h<+shh^l0s79jl>PZ`QuXjtXS?v~%2qoPP zWFR1!<$D&{=bvjqO>>qonGQY0GPlZN25{rhjrQ8X1O@l!&dMR08FpHQB4l#Iqbm}a z1TI7nMEzTl_@Q@@@654syh~`>_XS4ev1-N9c5}4WB?96qYgzh^%j!3}?=tVWXtbCW zdEMZ-c{{Cq5ZxHzC_w7DMmys4Bd zDVmg^M*MpLK}zY*h^}eTN18X1h+CUOtcplgUYO|gEfluUw_p*&@;8hZofj86dvm$Y zHMH(6H-@b6a{+yfnnydlKZp;Vm{MAl>MpyY40&NCE}4{h2;aUJrgZ~7TThp)c5N7< zrZMML4PjdNV-4XvHfVxr&7F7-#aYi?2QP)4WZqmvO?3`g7L=L&UzlWB4q`qg;~O00 z8IGM1G+Wj)6gD(Ef`R~{l+O0^|4U9vn~LhFX!OQ7B5U;b<#rh&_U zG+6iz!#Bw?1K4=Cj!aW@ag% z#fpWl){7k=KlxRLx7Lek+i6wbzIy-h#o61JAFp0r{`)MJdZREI0_UQ&)Cby_neo2! zy31;%_g`PF|+LJp~#Ma+P#{fhw2V~1J&r9i;b zI;jYn>ujJ0F)lNXRySv$0GhT_wo|=wPOp?@(Wp_?S4^&>xJc!EBGpO?RaSH&w6&^R zN!0WMM39Bt8F+ts5&KPSgC8>3Q`&bHzXyPL_hc$eQ1LzjH3l{|VD)aCDu95x1$ zz_D^TR*qv)tq{REBcw5}*_i)&EI6N#nxwAcgv#;dHKvw-EK-H$_z8%Ky6JODKP~$? z1L?{WnW9@&>Iv zl4`7zc>-gS#zyHUelKL0Y~_KQSm_n*nKMCMNUW}Ii4wyn-xgdwDytYA!dOju;l1ry8+biWHB#UuhP}9Z{Vn)0$V}f3i1xDyJf1a>ThE8LFd*(UHwd ztKkdKb{f9a#9pim@TIgX^L$$X#hK@jG)NrndjWFNdfMhaE>+#9e9XF$Q`(gtbL-5B zJIj!`WhTUG84q(P)b%yp1j_9rzZ4nv$cEb?!ACAy++X>WR-GablfZN|3X@r-5J6d8 zmrD?tn%=Wkgbe@)3|5ZER_o`$wBQ8{9QL-IXOffKD2CccarGDUh!xgA$zqnjLCSIi zM#;-P>_FG3{P0=KWuvlpYU8J@mOA#|(09@O3Z`WGNH0b9-@`$|{(CqYH1^;7C}r)x z!!_Tx0eCoYV*%b+fbYTrTzPa&o7$QnY?-d(E%ci-fWGTkW+rbZem|v5Rss=wv^&Sr z;=EOOeKuC-jnz4b)2znoysBCDsRVOZZ}5djZyg{HY#tdxEm|(#)`YK;s%Ws_jh5% z9epdu>ooS3(J@;e8(_=E~YV5fid+x@byRqkP?70gdY3#Whd+x@b zyNHH1_S{iv?716z?r*Equ>W5AX8GLD|E)Ox!(h@M$Lzlc(_s_;doLybMK;YE_UW!| z#T8@mOtah@Xqze})Gfv%D7%}%91?RNtjAxY!1(J_y1E2 zR~s0dqLpt35VZgKW53fsHhOK)IaO>LI{#YFp&;R%pB*Cpc?g~s*b>Sk9qFN!dp`|; zisOTrBbmn)P?YlA9JBjy)2GZqzolA=6tz$fD8Hl5lsSFZPH81@bR;-9G#O?;&p?|5YuHv-M{*qz5Hlc_QCol(NYxWDNINVW6eKXff|2;n<;oiL zpYh^V1i&KsZ#s?V{~Y$F4gKFs$(R2$vFj@deg|Mlh>vI8E*lLmyEd|LR~PZpsS#@s zRf|aU6%{<}ck@4>^^ktU+lVjOl$E1Nnc+6By!oA#a_)@@d67+Li4|+J58-8Ny8hDa zwPJnVKW;*Oi%#d zqj!O`a6Hp34RvnIe5QxBpTniOaiYh|Wx5hdxVs9`R5qfR$wy4sy^)2PV;wUY(k7?> zHST{O*|vj&wNGipd~Gj^GC>x}e}id1cK=TX<0k+AUdrbv{znxZ@Ped@dszxKx;4om z=pP>PVV;(czHpd1m=In^aDnWX;U0d$_V72#CsfkMKBhPvE5|$8 zn2t+VIVYM#Sm$pbj6Fc9L;nM`f@BHTI9R)|gbJ{T{*R||{oi;rZ1TVFrR2+habxs6 zYw~bcT&~^7?=&9WX@xw8pnwv13k49-zE)AVrwgqYjU;c!eCHe6$AFKyw8ltmjc(GD zbMO0_sf-8HwjFvwn(ld~Itj7Eb=!v142YUuwyN(%i~!sYPDB@x>XS3bE0talFL^_74*@ zKZ^s`N2x^Y6KwE4DXCZa>4Ol1beQk#`_Hj-a)-c^?Z z&^GRx2f8zpLFKR%SIm`p7yBCDGeW0YaI^)2 zv&Q6-_WBlimk2RBiPygG!WHz0>HZwD!pSC_rZQ}WTA%~)6AI>z4Jga*Ef`>Ie8y9E zTG9xe;i(_mRxuP!#^d3*1;90CqwaT5=}kwG@RQ?0e2)oSMX1N{-0{|T8c+0lh5kC!VSzgs$q}f%roT2D0jBjM#xJMEWDo&nm#nyT-N8r^7k0jqK_w({)l!= z&Er7)!xm(#x@dMel#TN!;_x#@rzBRr(HW0Z`II&5}n1hm*bZBE7ab=M3 zn%QCswo}-&Y5@#%d&F8n4+>|U{%ZNqJGLpiEH&uA*i>O`<-$v#=>2b)kpIV{Ve|gC zmy&P)fn!ndbE<^9p-NrF);xCEgjb3ndqpnWrQa6vV2JD+3iALxN;3{Qw`}LH!Z!JC z>a}ffLSj+TVv&3Dw$r6O2|BF=zIjpWRZW1bZvxGnwq z1BNV~KYL-N)F8)!N!vzp%l&fLGa4^rPQF@n3{*WXS_U3|kfnigX3_tBR_ zb6=P`f2Z@@fxos^l_PGQB%%(%eZhmj*MZv)L;t#ZXXIbecsmy*dE2iyXU%;U<-7FE zxE6o>oN*J=U=r;WZx8u%d2;WrA@IDTd#rj%gq8S|4yos^SnkKtQTnjq-yR^wA?DgqWEyhvhk#nyiAY3DOMJh8PdZJ2B{yo7CydLy{F}O+?FWs zak0ELgyfY@?GgkoQ6=kGG__s+=vEeJPtDtfY#dG72&=8f0oS=9ljvF=k7irlVbh+payhJ6-a9cZ*AFXgibZKbwUr^ z5T9KIT4%dHO}3LMgfebwsMiUL@UVzYo+t3w(*#m`S~guEEzw^B59c~7KzRyKYo-4f`nn@Wj#xfqD)QCNBU+y=hFPGj?{7Yu>?47^r z*tdLfz5rHdorrrc#*>Uo&80l-LSsksn^_)b&=p0DV413tR!!3hd{RbZ1o@#Yzr-8V zizUnnXX|44%W#qCmn2NgE=)0U$^uzlM{8OXoHO3rEbbqoZYOi!Q2WZcnY+MEK0(R5 zrKgOtSvG>vrrUZ#PWX=Enh0R|7D-Ybty6$P6&Q>fzEs<3dL>-?;%Z*QE1aPgVmqN& z-JqVRwD!Y1EdH8)=-Zm7qm^hi3)3hkb+c9>I+LGHP~DlaK*GYqAGnr1?#}+W0EHaA z*^tBvY&g6k;v&?Kh+7Ewx^CL-zc&T70=`f6rSl0r{K&vPpJ@hZNH)|4WK?-xuYvuL z+(_gF2K(`1_1CZB(>E?rgYt`YlK#44{(>$i>;HpopdMOecfHnY7aV`T{je?V1_>k` z4w88$c19PT7@-HD{29O}5M7R|HUbU)5907V_**34QvN>xM<%T_Cx}0$S0TLyRi(J` zidB|1KWMkYbf|yY`}|kQwLMD`isD~_1bX00K=P%_u>l!HixY0>=gmvp6!r<0R^s|i zX)7fJ-+@S}73yq^>1e2CQA4SFim_Mrd|LQQA$oc23nk_TS@xw@6}5qMy>~C=T#8Ra zSQwGx3B8Tsj!D~iuFV`{kaPOYS=2~sM&&X#lzIKvDoZ9%FgOpfA3g@z6 z93QhnuOD>PdeI+#qjxYlByBgk;YVVPF`4!0$=Wf2Nl4rkMjOVIMbTv#djs(x=={v0R5v z7vRMae4{Vb*jDuSZhL)j*-0^4u=H6z`q07BQkQ<*nyq|3VX}Ssu;$n=WhVyNd;DKlLRp$(@^MGSi?0(6eXiqWt_6npBq0WlZ`{ zDr^&=fm~!urzCgeht)EVqswqHPPfzlpQbcUJ*6q84UBSKh}BcJ4X_5hofUu^t5^aE zSNTquU_2E3te+|TCphCD^I=1Te)qu|mPzIjm};gPP@iN1hy95!m0GsmxVkIB;O ztmy6Yw8bmvYm&Q{53)4<$3S?p{}ZbKXXm&uac8YY#TMAX%$`7zwv6%&4LL@POL?jPulJrcWRb1NV{5T$luyA*FRHr+u9Fr(%%Jg&507_mdF!OAw!S@9Vi( zO)a%4_87=jGRLM5-mGLuiPergA4g)5{%y=ZNUA^@8Vi?EUbR^W zL#Dq+)mH>CdlZq4U9L<2q3}v706lZ$UPoo1^cS*N%S2kM=jG;Ulguyt+6s6Pl_cm5 zdkF9nMD!j)Up##YaM7Pj|4{!FcW#`YjTw7@tQtp;EH0zk8;Tgo`q28xbyo0O?ee6M zzE13vet!0pnUc`MAIkE2S3ZMhHAd63f6%6}N_qW`a7F@MNMU4esK_>t1jY=qc8?o} zYVEy%bR1M2C*Zd5m+=u2as?WNj~lCa!J$DtaGu`ie=AdtCIVX*&TTyj-wVcpsk6~e zL#oHr0^f^pl3lQP+#!Go`#=g<@UfI!85vKwjY)PMWqv!Hu$P@S9|cFydt(Q;Tf%EM zRq3bRW@{F1L4Yxm7B1`cJQN3kx0Cnugy!eq2bla5-Sd&4GxS|?M#wYy06vi>qt}EZ zb8&W(E2wvcZWg=@Cv{H}(SqQGWZ7u{xbz9PuI@K34%s`N(M&{gbIfBPL8Xt|t@{h* zXlq>fT%)S@j8)~qqBP_k1B%~aOhbDJ7{Zr@O-0*Vt~0uR<1pO z2FSFdHju7qTdybZ!uc?vGnoLD>jHQ?d^=wiU;=unE2-TSn*-|!D`+V;W@`yLt_{W| zTrLZ*%M`Tz4;O%Mv;pAkz~EWRoOa((16nhWi34#_;np_e0HlqZ==^KZBY%ZnR^SoR zA>#$VEWPxQ_0V=l2waQL$nSJp~)(ZA{rg)AWrIJs*Ti{`xvd7y3@1AmF z$`oN>r#69e_biKx@-Q-yps;;6SVd9=Z^lPP96jABRMa(|m+_3ak3h(;6?5-JnZUCC z6I|{Q$)8vHpi+#LnF3Oy!N^H9#m~j9@`uyTVYbN zqVZ)v4UXBla$W=nhaA~gAsQduDitQHRM3l@{`RNEN0ihlth9Sna4tqa`$7@wT2V=B z(-v0IDk$B_EU0YS=}3+dD-&ftDv7siw2dZYr4c%eOI48mSFIQu_`K< zDD+%;>RLbUpC|m1SJNrTMi1l~cFjY?Nmp@Mynm?g%eq?7C4(Nh(F_|X>wv0DV37HO zp8o*IX~9Cc#b!K z>Mb>$)r8qUDKb#0h}NdaeOI6ytA+g7!snmIGr~5Q>~jGuJVA|BHd-P5mpI@4noG zlts!QAHkHjb9j(EUd-N6ywlWk$lT&p@-9Nb>1`+nt1RfK`|aGLoYFLNj_ahGh$fNn zdTU696cc{fngp7u{=vrWwa+)ftm&*lo9;Nix~^vA9z~+&^Trh+Bd>e~tUfFGnab{S zXCBS|{$vHw+2sFaq?W3GhOa}{5Tt!P=fNk~8{MCvjOY&{;#t$?sBe>ZzyHG?;^gn% zZ)tPf>JXBqRwnNVu_(4M7yc6(IT>N`I!EIbj$~uZn8QeCUbrxg4%E0G;k|jI#MoS5 z;79a**!7QHN9#ATb2)^}D&zNgW1b+%li2+#_A18BdnV^TH~zeko97r}hO(En3M=PKd|o5dit?gO{C2=#bEHpmGFUqi?z zkZ^r0AC~YTVL27O!Jk#!WbW0ENjC>$b+1q4tk0E#^+&pF7&3y>IkNlJHWb)M!xg37d~sf?o8KjHoi4wF(p0}e_BcKYtu!p@Q*t3`njgp%rt-VS?O3vGijdn zD*ocvr&;z*k#U~!8L$m$Tw)ik*XKSq{Z6B$9JFUOafs*2NKB&!>hI5^Q!#0BZV#oF zEz;rAvE$q*o^otoh>0g;>L4l`S?hbkg_py{YZQhu__xx!?0;GsD>QlN5K3N9efkG=rNc=ji7)M&O&1jQroIeP0gz zFL!m-A@zoiHE`c^i|fI7cHm+`?*{T_z0B)2CxMgNTi?Vg`M(v*fGu=|j3 zBj4!Mi$`L@rvlbsRy>IO!^BSgbGGYbGT6`UkjQRO&-3jEhd5_zGYneHXO~$USF5bJ zpa+t2wSF|&<~aJXZ$F7oR_dOw!m{HCyJp(0zoNhGV<0c0 zompePzr?u&q*&Djl%i~vCJF7F6v9r+m~b%S=#IY0mJB0%2i4zdRfMX zEjZRoFl(tl3NALaoEuO|cymKbfBiIV9hGeEC-q;L@eBc{)o%>(b|wVp9;G4eV-YEg zbRnYUZ>>g9%=d_GK8j)`2SlE0Q1OQoXFOHls3&8tTVTAyP;hE@U-mhJ)bC5o5!8{} z+Bzgypm90jp*L;KZ!olhZ!e5WulcYL1C&wRX3RO!6x-Ig;V2Jmjd@<6GL||A%Wvkq zbk)+D9fK>U}f)I{<~OhMzQS8-}xhT*)~(gX9oMM%xaHM1XM5s+BQ^t{YRV2 z^rfo%_Svnr>LMX^C*IG60$EvMb!b5n7|Cbyqs{lymTMDg4u`HYm;sVhqUZEC9|^8D zXKcS&&3mwhb|~NcUYdh;gEsnn;g<{lR`+HcgHW{cJ3oOuZex5r62AsFd+OWNuP{~h zokhG`Pf_=qTJ}LlryUj%$aP-7OwP~zE%qp_kI86n)|3;+@402TLBsg^jW<0SELxgH ziB%lMs}r3*A3O9W;>D-%DFf}1^lrquh^r2<3`gF<+IF6BC5Q_qM8R)b39P*gP%8wrL*dw*oHA)#OE8|YPQ)$>tRJ35cDa9ZJ9_Z zDY?-2+40c^lDs2WK3Sqm(vD(M^zJh=HIL!$XP%-lscPQ9SPbK}lY42f94C5B6xTf% zE;6jPYJ$$X*-~3L&e?f)a_{u;uyuhr?d0#(rJ?0)Ycmt5Ycm!oAu!aDZtO@towZ%R6x$rqc2ncM_mhmmpv8C2#Uy0K|4(1jFehLD?gs|~EWG_k4D}G3FW+gENU>stea__aIw2hWfZZfHLKGNk#=EjctI5~K` zI}ui()u9#*gr$A$nL((r1Ph&|J=2&>7P`h-=dzJJByUwOt5QYNB9r@qTA|6-b)T90 z?GYQzaz5X&=NwP==pUu-I9%G!JTA|V`&;*_xLWoekN8!_LbZnoJ_{4;Gs`=sMl62v z#d5E4%N}w&!UgHS8rmiFDOY}--P6HsC3{Gin!uulF-zwDJQ2ASe&L-MT(b3H5u!*6N; zcc1Q9iL%b=+@bZoZ>Z!YdyZaBt4rO4WCl~sbXwnzXr*Em!3wHYHEYf=pVe8VT(A^w z7}FHmI61kyoE2ks&l=GJLSw`;AtP?MjE?<-(p;SZ-m@po#gQ7AT_c7)rKU#y9e9OU z(!PG>CF(tA^4YX$T~MccMWvbCSFA=o^AOmqqYmCq!qV#jK2z`crfFw%`-t++Ooi;J zAF9??=4T*1r%m0l7cR_?rx4V-gme$dEJk?&)CY-Ai2D5-GdPJ+Frk3{6T924+bbCp zp}kf%dp913`ObqyQV2`XmA45^{qD0~(DSMvYo2x$ksDIl7r&iCNvdX_DO4$nNc&&< z5S2;Ck42e$!-$D)>X|=TH^?qW*_F_kX(@l+%BK;E5nyT2{IwI;GZvM-xpRV#%{f(2 zwT#yyNVdlAx-;rQXn^D**=$4)e9__F_SX!vP03yeCS4)@Y@q0KU-4N_r|4o-J3t$V zzn#TIu!9YvCma5|3UO~4f`ls_{W0{}c&dzrQ!S!;LFXCiP+(r0U{s*%KNB(I^|=X(6gqkITSav<#g6!_{~B2u zexZIQR#?B&_#@nY-t12vVKmEJR8a6&Z~`)FP+OamsOcELe7KplkjkUYj=5qhdhgp^ z?A6iFBPl4}kKgEDGwFO32qPA?rHbe$Ng43EI@$hC8b0#&=$s8_qTAh-z-$o|`n3)v z_P?*FYIln=VxfyJUcBFareu7ANUZf*jaT_({gtd2Z3uu~xZqShd< z5vB-(Bv`v1R-_HFx!jrwTiOv6*kxj6)w5X3#+@$!c1R01Zr`AYja<7i;bYB*k`9fk z!a#)}klm`+4TpQ$4sVS^T<7sr^YdIw4tLr?Eohx!qRFUfS6E7HWxHr$AMQ zII7gxajCPXx-o5~?L@^x!xOkQwKas^h<8AOkREkV7c7=Ep?)8AM}+m%Hm*j&G~4r) z(ihWUgO5=L?pQOX^CfqlY4}fPQcaFw47KhJu0W*oX%ic^I7b4F)YDo7MHn zpGEH^h_w1X=1kv-3`ui$VHVgvO9qWA;3bEr8#2gbT1RJh z%`YXQZiZwhHxggoYUODnW-g^Lu<;mLEjz3fN{?#Y;W=r6RdhzKtG|-fB=GuxQbXir ze_Q%tT-^QKi-G7Unl|Y7qTl-FnjI`6#}ET`?0KDitpT53^{UAlfMw zInTudK5<*br+aR1EM_~%%11lA$~oR!j^9#*LWHJ*@3s)@3sHQ554-_gzV8EK z+t`>>lG1iSK{Jaiai`s6UjnmR**Kj_El2WWGh{4&hjNNf!DvgOBqoDgwnhvLwKj>I z@U>g=>z0Xw7n(uOaZqiDZ)FzU+b>V8d zPGbC9#xUnwbl6P}zW+u`o)IW4WYfgDrzt_9F>`1uvX(;$t9j&6pVMW@_J>jJt8=f4 zyo(!~ut@}(DE!rsDxlux6EKi;e;z6vd*aiOn`Q@^ z0I5>Sb*UAL-`!u$tT;O%^U+q6sYG=LDgP$T*IplT6X`oe71uZ${@|e_pD35t)NwD} z7(RbKbSFFMg*^Ps?07AS-~dw=2>PWQktZ3DO(d`CEy=auJ&>IJ?ELmF`d>BUPpT#Y zyl%4;2oQl} z3AtJn_j~#aBggs~ib`$0)U#eL&o}Z^e5Y4j)=891=?x-8{1bftjNPVjM;cn2sWy6| z=`N2;$JkwAN+D4`D+v)&KJoKhfJurSUraE)0VhQMIK@-{~+mtK=K>K{eQk=Ee7p-FBSXdg3uBpd@-aaaVz+piyY$FN&+(^jlm z>J-+U>SXL|P{Z8p3sot!OS4w?k{`_d@ZWdqx}ra#ILt>EP-TflU{VjblelP+53?I1 zCCjbHJtMd#-;=eWj{IWNJMw&vF8%zW`0_}PIEW@LdratrXVe`nJEsQi;RkY$Ua4*+ zL>lUEiWyL%VnJ zpGhD@eQeC69nS(S_y$mo4%!km;tbdL**o$@(4GP`W?TQou|9{W-Etg*`!{-vl~9w> ziV(WE@%o=)TZaZB1S9UHoR?A|hxv$@(ogq})02~v?&Mf)f>)`XT()23w{^EQjzq+w zu2E6hjeWayE%Bf~v=2i#EVoJg4r-g!Ag(MtI!TgT5E4$s0Q#S?7A}sFaP}%$r8VNa zI@&_nch6~?1`Ik;7>4yRH+229yzLrgzb^TrNK=C*PNd9z_D{>V{(<$?#ja4r?uKdE z#=4YuS3ri^#x7WbMr0REZzZ-X`vWE9 z>ooX-mB>TCn@X_vkw$9hGDmESx~H@txvBXK_c?e3*4 zix=8oMd)4}#ut4O2cD$({GF*4{@OUFz}J@mU^>+cUQu0`K{zhn*mcNyhOWjyP+c(a zD=s>POcm02bC=;d3B6pu)@JeSZKx?yScnd0UUqEcCEn7e;Oxq38I6}t26V$^6M?VO zb{DcoMMt5)>cN{YtsX_;eWw8z91VQ=JyI z3%ytX9IeIx8_ID&>V;bNB{cp*c?|4wL0?P;0oz1f@{z)hACaf=S}VW{#FKE(cnna` zsNu*g=)R{|Ot0(&Zb9dlvPU8pPqCgufbInv_*85C5q@WP4j`HyWhwEq;b1;1*+*#n z5m#bctTkuewJYcOM8sWo8qTiC4jI36>kA%s82}p&8LX-X{;4k9Jf=6VXKw< z`4$j@7&l$q18%f#oRRe2aqkCtS;n9-eva(#VmuCjIY{p~U?cAEG&}`+yC!<;S1v2X zXwX`%?Z-Jc6kaI+)_YGMpLGdM&xZg>#x3}?cMdAomnO^jKldI9Nl$@IWYyr4DUGBR z@Gw1I6^Hw)77X22+M#HA0#8gJp3*2B@E>|69zKUYVgze7Td!eYHDl&Zq?hF*`0i2w z{`cS2)F}TwtnVBS7JnhO3+5|Wd6FGIwfp~K3BVJn2;lX_BF2q}#_oW=e?T_(=P|Gm zTIXvdm;?;a$N7vRpy^sq9-UeLRn?O3$U_hchZOMSMmn|ppSHVK0zP|GA_Xe{7n1;f z8EXNnc4JTd-f;@BF7|J7rjCK%WB&KP<^l8*2c!3^3MD`PIgWTjd;aSTe3Vbcfa)Ef z4)5thdhl(R?g3dgva4z(E=Ug~QcSr6Abf#*^6_!y06V?@3IzxE0Ouq4C34PG(B|q1 zOZj{UuttsF>io$8TAoO*-KVd@ddY4JK&05-f;W%h?Wq#G;N4ST@D@5*_v-0}R#|{h d`d6WF0mu8VDw!7mCJG7wJltasqIjdD{6C@p+I#>2 literal 0 HcmV?d00001 diff --git a/hosting/kubernetes/budibase/Chart.yaml b/hosting/kubernetes/budibase/Chart.yaml index c5233842ad..a8db638a7e 100644 --- a/hosting/kubernetes/budibase/Chart.yaml +++ b/hosting/kubernetes/budibase/Chart.yaml @@ -22,13 +22,13 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.2.2 +version: 0.2.3 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "0.9.169" +appVersion: "0.1.6" dependencies: - name: couchdb diff --git a/hosting/kubernetes/budibase/charts/couchdb-3.3.4.tgz b/hosting/kubernetes/budibase/charts/couchdb-3.3.4.tgz new file mode 100644 index 0000000000000000000000000000000000000000..f7ebfd3e9653ef2e0fba07de4e498b46311de606 GIT binary patch literal 9668 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 GzyJWm|L4yD literal 0 HcmV?d00001 diff --git a/hosting/kubernetes/budibase/charts/couchdb/Chart.yaml b/hosting/kubernetes/budibase/charts/couchdb/Chart.yaml deleted file mode 100755 index 74ae734a17..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/Chart.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: v1 -appVersion: 3.1.0 -description: A database featuring seamless multi-master sync, that scales from big - data to mobile, with an intuitive HTTP/JSON API and designed for reliability. -home: https://couchdb.apache.org/ -icon: http://couchdb.apache.org/CouchDB-visual-identity/logo/CouchDB-couch-symbol.svg -keywords: -- couchdb -- database -- nosql -maintainers: -- email: kocolosk@apache.org - name: kocolosk -- email: willholley@apache.org - name: willholley -name: couchdb -sources: -- https://github.com/apache/couchdb-docker -version: 3.3.4 diff --git a/hosting/kubernetes/budibase/charts/couchdb/README.md b/hosting/kubernetes/budibase/charts/couchdb/README.md deleted file mode 100755 index 3227123d06..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/README.md +++ /dev/null @@ -1,244 +0,0 @@ -# CouchDB - -Apache CouchDB is a database featuring seamless multi-master sync, that scales -from big data to mobile, with an intuitive HTTP/JSON API and designed for -reliability. - -This chart deploys a CouchDB cluster as a StatefulSet. It creates a ClusterIP -Service in front of the Deployment for load balancing by default, but can also -be configured to deploy other Service types or an Ingress Controller. The -default persistence mechanism is simply the ephemeral local filesystem, but -production deployments should set `persistentVolume.enabled` to `true` to attach -storage volumes to each Pod in the Deployment. - -## TL;DR - -```bash -$ helm repo add couchdb https://apache.github.io/couchdb-helm -$ helm install couchdb/couchdb \ - --set allowAdminParty=true \ - --set couchdbConfig.couchdb.uuid=$(curl https://www.uuidgenerator.net/api/version4 2>/dev/null | tr -d -) -``` - -## Prerequisites - -- Kubernetes 1.9+ with Beta APIs enabled -- Ingress requires Kubernetes 1.14+ - -## Installing the Chart - -To install the chart with the release name `my-release`: - -Add the CouchDB Helm repository: - -```bash -$ helm repo add couchdb https://apache.github.io/couchdb-helm -``` - -Afterwards install the chart replacing the UUID -`decafbaddecafbaddecafbaddecafbad` with a custom one: - -```bash -$ helm install \ - --name my-release \ - --set couchdbConfig.couchdb.uuid=decafbaddecafbaddecafbaddecafbad \ - couchdb/couchdb -``` - -This will create a Secret containing the admin credentials for the cluster. -Those credentials can be retrieved as follows: - -```bash -$ kubectl get secret my-release-couchdb -o go-template='{{ .data.adminPassword }}' | base64 --decode -``` - -If you prefer to configure the admin credentials directly you can create a -Secret containing `adminUsername`, `adminPassword` and `cookieAuthSecret` keys: - -```bash -$ kubectl create secret generic my-release-couchdb --from-literal=adminUsername=foo --from-literal=adminPassword=bar --from-literal=cookieAuthSecret=baz -``` - -If you want to set the `adminHash` directly to achieve consistent salts between -different nodes you need to addionally add the key `password.ini` to the secret: - -```bash -$ kubectl create secret generic my-release-couchdb \ - --from-literal=adminUsername=foo \ - --from-literal=cookieAuthSecret=baz \ - --from-file=./my-password.ini -``` - -With the following contents in `my-password.ini`: - -``` -[admins] -foo = -``` - -and then install the chart while overriding the `createAdminSecret` setting: - -```bash -$ helm install \ - --name my-release \ - --set createAdminSecret=false \ - --set couchdbConfig.couchdb.uuid=decafbaddecafbaddecafbaddecafbad \ - couchdb/couchdb -``` - -This Helm chart deploys CouchDB on the Kubernetes cluster in a default -configuration. The [configuration](#configuration) section lists -the parameters that can be configured during installation. - -> **Tip**: List all releases using `helm list` - -## Uninstalling the Chart - -To uninstall/delete the `my-release` Deployment: - -```bash -$ helm delete my-release -``` - -The command removes all the Kubernetes components associated with the chart and -deletes the release. - -## Upgrading an existing Release to a new major version - -A major chart version change (like v0.2.3 -> v1.0.0) indicates that there is an -incompatible breaking change needing manual actions. - -### Upgrade to 3.0.0 - -Since version 3.0.0 setting the CouchDB server instance UUID is mandatory. -Therefore you need to generate a UUID and supply it as a value during the -upgrade as follows: - -```bash -$ helm upgrade \ - --reuse-values \ - --set couchdbConfig.couchdb.uuid= \ - couchdb/couchdb -``` - -## Migrating from stable/couchdb - -This chart replaces the `stable/couchdb` chart previously hosted by Helm and continues the -version semantics. You can upgrade directly from `stable/couchdb` to this chart using: - -```bash -$ helm repo add couchdb https://apache.github.io/couchdb-helm -$ helm upgrade my-release couchdb/couchdb -``` - -## Configuration - -The following table lists the most commonly configured parameters of the -CouchDB chart and their default values: - -| Parameter | Description | Default | -|---------------------------------|-------------------------------------------------------|----------------------------------------| -| `clusterSize` | The initial number of nodes in the CouchDB cluster | 3 | -| `couchdbConfig` | Map allowing override elements of server .ini config | *See below* | -| `allowAdminParty` | If enabled, start cluster without admin account | false (requires creating a Secret) | -| `createAdminSecret` | If enabled, create an admin account and cookie secret | true | -| `schedulerName` | Name of the k8s scheduler (other than default) | `nil` | -| `erlangFlags` | Map of flags supplied to the underlying Erlang VM | name: couchdb, setcookie: monster -| `persistentVolume.enabled` | Boolean determining whether to attach a PV to each node | false -| `persistentVolume.size` | If enabled, the size of the persistent volume to attach | 10Gi -| `enableSearch` | Adds a sidecar for Lucene-powered text search | false | - -You can set the values of the `couchdbConfig` map according to the -[official configuration][4]. The following shows the map's default values and -required options to set: - -| Parameter | Description | Default | -|---------------------------------|--------------------------------------------------------------------|----------------------------------------| -| `couchdb.uuid` | UUID for this CouchDB server instance ([Required in a cluster][5]) | | -| `chttpd.bind_address` | listens on all interfaces when set to any | any | -| `chttpd.require_valid_user` | disables all the anonymous requests to the port 5984 when true | false | - -A variety of other parameters are also configurable. See the comments in the -`values.yaml` file for further details: - -| Parameter | Default | -|--------------------------------------|----------------------------------------| -| `adminUsername` | admin | -| `adminPassword` | auto-generated | -| `adminHash` | | -| `cookieAuthSecret` | auto-generated | -| `image.repository` | couchdb | -| `image.tag` | 3.1.0 | -| `image.pullPolicy` | IfNotPresent | -| `searchImage.repository` | kocolosk/couchdb-search | -| `searchImage.tag` | 0.1.0 | -| `searchImage.pullPolicy` | IfNotPresent | -| `initImage.repository` | busybox | -| `initImage.tag` | latest | -| `initImage.pullPolicy` | Always | -| `ingress.enabled` | false | -| `ingress.hosts` | chart-example.local | -| `ingress.annotations` | | -| `ingress.path` | / | -| `ingress.tls` | | -| `persistentVolume.accessModes` | ReadWriteOnce | -| `persistentVolume.storageClass` | Default for the Kube cluster | -| `podManagementPolicy` | Parallel | -| `affinity` | | -| `annotations` | | -| `tolerations` | | -| `resources` | | -| `service.annotations` | | -| `service.enabled` | true | -| `service.type` | ClusterIP | -| `service.externalPort` | 5984 | -| `dns.clusterDomainSuffix` | cluster.local | -| `networkPolicy.enabled` | true | -| `serviceAccount.enabled` | true | -| `serviceAccount.create` | true | -| `serviceAccount.imagePullSecrets` | | -| `sidecars` | {} | -| `livenessProbe.enabled` | true | -| `livenessProbe.failureThreshold` | 3 | -| `livenessProbe.initialDelaySeconds` | 0 | -| `livenessProbe.periodSeconds` | 10 | -| `livenessProbe.successThreshold` | 1 | -| `livenessProbe.timeoutSeconds` | 1 | -| `readinessProbe.enabled` | true | -| `readinessProbe.failureThreshold` | 3 | -| `readinessProbe.initialDelaySeconds` | 0 | -| `readinessProbe.periodSeconds` | 10 | -| `readinessProbe.successThreshold` | 1 | -| `readinessProbe.timeoutSeconds` | 1 | - -## Feedback, Issues, Contributing - -General feedback is welcome at our [user][1] or [developer][2] mailing lists. - -Apache CouchDB has a [CONTRIBUTING][3] file with details on how to get started -with issue reporting or contributing to the upkeep of this project. In short, -use GitHub Issues, do not report anything on Docker's website. - -## Non-Apache CouchDB Development Team Contributors - -- [@natarajaya](https://github.com/natarajaya) -- [@satchpx](https://github.com/satchpx) -- [@spanato](https://github.com/spanato) -- [@jpds](https://github.com/jpds) -- [@sebastien-prudhomme](https://github.com/sebastien-prudhomme) -- [@stepanstipl](https://github.com/sebastien-stepanstipl) -- [@amatas](https://github.com/amatas) -- [@Chimney42](https://github.com/Chimney42) -- [@mattjmcnaughton](https://github.com/mattjmcnaughton) -- [@mainephd](https://github.com/mainephd) -- [@AdamDang](https://github.com/AdamDang) -- [@mrtyler](https://github.com/mrtyler) -- [@kevinwlau](https://github.com/kevinwlau) -- [@jeyenzo](https://github.com/jeyenzo) -- [@Pinpin31.](https://github.com/Pinpin31) - -[1]: http://mail-archives.apache.org/mod_mbox/couchdb-user/ -[2]: http://mail-archives.apache.org/mod_mbox/couchdb-dev/ -[3]: https://github.com/apache/couchdb/blob/master/CONTRIBUTING.md -[4]: https://docs.couchdb.org/en/stable/config/index.html -[5]: https://docs.couchdb.org/en/latest/setup/cluster.html#preparing-couchdb-nodes-to-be-joined-into-a-cluster diff --git a/hosting/kubernetes/budibase/charts/couchdb/ci/required-values.yaml b/hosting/kubernetes/budibase/charts/couchdb/ci/required-values.yaml deleted file mode 100755 index 79589d2e04..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/ci/required-values.yaml +++ /dev/null @@ -1,3 +0,0 @@ -couchdbConfig: - couchdb: - uuid: "decafbaddecafbaddecafbaddecafbad" diff --git a/hosting/kubernetes/budibase/charts/couchdb/ci/sidecar.yaml b/hosting/kubernetes/budibase/charts/couchdb/ci/sidecar.yaml deleted file mode 100755 index aa570bdf74..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/ci/sidecar.yaml +++ /dev/null @@ -1,9 +0,0 @@ -sidecars: - - name: foo - image: "busybox" - imagePullPolicy: IfNotPresent - resources: - requests: - cpu: "0.1" - memory: 10Mi - command: ['while true; do echo "foo"; sleep 5; done;'] diff --git a/hosting/kubernetes/budibase/charts/couchdb/password.ini b/hosting/kubernetes/budibase/charts/couchdb/password.ini deleted file mode 100755 index 4ce8445aae..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/password.ini +++ /dev/null @@ -1,2 +0,0 @@ -[admins] -{{ .Values.adminUsername }} = {{ .Values.adminHash }} diff --git a/hosting/kubernetes/budibase/charts/couchdb/templates/NOTES.txt b/hosting/kubernetes/budibase/charts/couchdb/templates/NOTES.txt deleted file mode 100755 index a3658bd37f..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/templates/NOTES.txt +++ /dev/null @@ -1,20 +0,0 @@ -Apache CouchDB is starting. Check the status of the Pods using: - - kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "couchdb.name" . }},release={{ .Release.Name }}" - -Once all of the Pods are fully Ready, execute the following command to create -some required system databases: - - kubectl exec --namespace {{ .Release.Namespace }} {{ if not .Values.allowAdminParty }}-it {{ end }}{{ template "couchdb.fullname" . }}-0 -c couchdb -- \ - curl -s \ - http://127.0.0.1:5984/_cluster_setup \ - -X POST \ - -H "Content-Type: application/json" \ -{{- if .Values.allowAdminParty }} - -d '{"action": "finish_cluster"}' -{{- else }} - -d '{"action": "finish_cluster"}' \ - -u -{{- end }} - -Then it's time to relax. diff --git a/hosting/kubernetes/budibase/charts/couchdb/templates/_helpers.tpl b/hosting/kubernetes/budibase/charts/couchdb/templates/_helpers.tpl deleted file mode 100755 index f9d013e487..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/templates/_helpers.tpl +++ /dev/null @@ -1,81 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "couchdb.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "couchdb.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- printf "%s-%s" .Values.fullnameOverride .Chart.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} - -{{/* -In the event that we create both a headless service and a traditional one, -ensure that the latter gets a unique name. -*/}} -{{- define "couchdb.svcname" -}} -{{- if .Values.fullnameOverride -}} -{{- printf "%s-svc-%s" .Values.fullnameOverride .Chart.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- printf "%s-svc-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} - -{{/* -Create a random string if the supplied key does not exist -*/}} -{{- define "couchdb.defaultsecret" -}} -{{- if . -}} -{{- . | b64enc | quote -}} -{{- else -}} -{{- randAlphaNum 20 | b64enc | quote -}} -{{- end -}} -{{- end -}} - -{{/* -Labels used to define Pods in the CouchDB statefulset -*/}} -{{- define "couchdb.ss.selector" -}} -app: {{ template "couchdb.name" . }} -release: {{ .Release.Name }} -{{- end -}} - -{{/* -Generates a comma delimited list of nodes in the cluster -*/}} -{{- define "couchdb.seedlist" -}} -{{- $nodeCount := min 5 .Values.clusterSize | int }} - {{- range $index0 := until $nodeCount -}} - {{- $index1 := $index0 | add1 -}} - {{ $.Values.erlangFlags.name }}@{{ template "couchdb.fullname" $ }}-{{ $index0 }}.{{ template "couchdb.fullname" $ }}.{{ $.Release.Namespace }}.svc.{{ $.Values.dns.clusterDomainSuffix }}{{ if ne $index1 $nodeCount }},{{ end }} - {{- end -}} -{{- end -}} - -{{/* -If serviceAccount.name is specified, use that, else use the couchdb instance name -*/}} -{{- define "couchdb.serviceAccount" -}} -{{- if .Values.serviceAccount.name -}} -{{- .Values.serviceAccount.name }} -{{- else -}} -{{- template "couchdb.fullname" . -}} -{{- end -}} -{{- end -}} - -{{/* -Fail if couchdbConfig.couchdb.uuid is undefined -*/}} -{{- define "couchdb.uuid" -}} -{{- required "A value for couchdbConfig.couchdb.uuid must be set" (.Values.couchdbConfig.couchdb | default dict).uuid -}} -{{- end -}} \ No newline at end of file diff --git a/hosting/kubernetes/budibase/charts/couchdb/templates/configmap.yaml b/hosting/kubernetes/budibase/charts/couchdb/templates/configmap.yaml deleted file mode 100755 index a6a20e0574..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/templates/configmap.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "couchdb.fullname" . }} - labels: - app: {{ template "couchdb.name" . }} - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - heritage: {{ .Release.Service | quote }} - release: {{ .Release.Name | quote }} -data: - inifile: | - {{ $couchdbConfig := dict "couchdb" (dict "uuid" (include "couchdb.uuid" .)) -}} - {{- $couchdbConfig := merge $couchdbConfig .Values.couchdbConfig -}} - {{- range $section, $settings := $couchdbConfig -}} - {{ printf "[%s]" $section }} - {{ range $key, $value := $settings -}} - {{ printf "%s = %s" $key ($value | toString) }} - {{ end }} - {{ end }} - - seedlistinifile: | - [cluster] - seedlist = {{ template "couchdb.seedlist" . }} diff --git a/hosting/kubernetes/budibase/charts/couchdb/templates/headless.yaml b/hosting/kubernetes/budibase/charts/couchdb/templates/headless.yaml deleted file mode 100755 index 0ce3ef0f35..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/templates/headless.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ template "couchdb.fullname" . }} - labels: - app: {{ template "couchdb.name" . }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -spec: - clusterIP: None - publishNotReadyAddresses: true - ports: - - name: couchdb - port: 5984 - selector: -{{ include "couchdb.ss.selector" . | indent 4 }} diff --git a/hosting/kubernetes/budibase/charts/couchdb/templates/ingress.yaml b/hosting/kubernetes/budibase/charts/couchdb/templates/ingress.yaml deleted file mode 100755 index c547847ce5..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/templates/ingress.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.ingress.enabled -}} -{{- $serviceName := include "couchdb.fullname" . -}} -{{- $servicePort := .Values.service.externalPort -}} -{{- $path := .Values.ingress.path | quote -}} -apiVersion: networking.k8s.io/v1beta1 -kind: Ingress -metadata: - name: {{ template "couchdb.fullname" . }} - labels: - app: {{ template "couchdb.name" . }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - annotations: - {{- range $key, $value := .Values.ingress.annotations }} - {{ $key }}: {{ $value | quote }} - {{- end }} -spec: - rules: - {{- range $host := .Values.ingress.hosts }} - - host: {{ $host }} - http: - paths: - - path: {{ $path }} - backend: - serviceName: {{ $serviceName }} - servicePort: {{ $servicePort }} - {{- end -}} - {{- if .Values.ingress.tls }} - tls: -{{ toYaml .Values.ingress.tls | indent 4 }} - {{- end -}} -{{- end -}} diff --git a/hosting/kubernetes/budibase/charts/couchdb/templates/networkpolicy.yaml b/hosting/kubernetes/budibase/charts/couchdb/templates/networkpolicy.yaml deleted file mode 100755 index 2830708bef..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/templates/networkpolicy.yaml +++ /dev/null @@ -1,31 +0,0 @@ - -{{- if .Values.networkPolicy.enabled }} -kind: NetworkPolicy -apiVersion: networking.k8s.io/v1 -metadata: - name: {{ template "couchdb.fullname" . }} - labels: - app: {{ template "couchdb.name" . }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -spec: - podSelector: - matchLabels: -{{ include "couchdb.ss.selector" . | indent 6 }} - ingress: - - ports: - - protocol: TCP - port: 5984 - - ports: - - protocol: TCP - port: 9100 - - protocol: TCP - port: 4369 - from: - - podSelector: - matchLabels: -{{ include "couchdb.ss.selector" . | indent 14 }} - policyTypes: - - Ingress -{{- end }} diff --git a/hosting/kubernetes/budibase/charts/couchdb/templates/secrets.yaml b/hosting/kubernetes/budibase/charts/couchdb/templates/secrets.yaml deleted file mode 100755 index 92f55c6d6b..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/templates/secrets.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- if .Values.createAdminSecret -}} -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "couchdb.fullname" . }} - labels: - app: {{ template "couchdb.fullname" . }} - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" -type: Opaque -data: - adminUsername: {{ template "couchdb.defaultsecret" .Values.adminUsername }} - adminPassword: {{ template "couchdb.defaultsecret" .Values.adminPassword }} - cookieAuthSecret: {{ template "couchdb.defaultsecret" .Values.cookieAuthSecret }} -{{- if .Values.adminHash }} - password.ini: {{ tpl (.Files.Get "password.ini") . | b64enc }} -{{- end -}} -{{- end -}} diff --git a/hosting/kubernetes/budibase/charts/couchdb/templates/service.yaml b/hosting/kubernetes/budibase/charts/couchdb/templates/service.yaml deleted file mode 100755 index 6d0382477d..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/templates/service.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{- if .Values.service.enabled -}} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "couchdb.svcname" . }} - labels: - app: {{ template "couchdb.name" . }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -{{- if .Values.service.annotations }} - annotations: -{{ toYaml .Values.service.annotations | indent 4 }} -{{- end }} -spec: - ports: - - port: {{ .Values.service.externalPort }} - protocol: TCP - targetPort: 5984 - type: {{ .Values.service.type }} - selector: -{{ include "couchdb.ss.selector" . | indent 4 }} -{{- end -}} diff --git a/hosting/kubernetes/budibase/charts/couchdb/templates/serviceaccount.yaml b/hosting/kubernetes/budibase/charts/couchdb/templates/serviceaccount.yaml deleted file mode 100755 index bb82799a49..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/templates/serviceaccount.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if .Values.serviceAccount.create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "couchdb.serviceAccount" . }} - labels: - app: {{ template "couchdb.name" . }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -{{- if .Values.serviceAccount.imagePullSecrets }} -imagePullSecrets: -{{ toYaml .Values.serviceAccount.imagePullSecrets }} -{{- end }} -{{- end }} diff --git a/hosting/kubernetes/budibase/charts/couchdb/templates/statefulset.yaml b/hosting/kubernetes/budibase/charts/couchdb/templates/statefulset.yaml deleted file mode 100755 index 6225fbe98c..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/templates/statefulset.yaml +++ /dev/null @@ -1,202 +0,0 @@ -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: {{ template "couchdb.fullname" . }} - labels: - app: {{ template "couchdb.name" . }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -spec: - replicas: {{ .Values.clusterSize }} - serviceName: {{ template "couchdb.fullname" . }} - podManagementPolicy: {{ .Values.podManagementPolicy }} - selector: - matchLabels: -{{ include "couchdb.ss.selector" . | indent 6 }} - template: - metadata: - labels: -{{ include "couchdb.ss.selector" . | indent 8 }} -{{- with .Values.annotations }} - annotations: - checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} -{{ toYaml . | indent 8 }} -{{- end }} - spec: - {{- if .Values.schedulerName }} - schedulerName: "{{ .Values.schedulerName }}" - {{- end }} - {{- if .Values.serviceAccount.enabled }} - serviceAccountName: {{ template "couchdb.serviceAccount" . }} - {{- end }} - initContainers: - - name: init-copy - image: "{{ .Values.initImage.repository }}:{{ .Values.initImage.tag }}" - imagePullPolicy: {{ .Values.initImage.pullPolicy }} - command: ['sh','-c','cp /tmp/chart.ini /default.d; cp /tmp/seedlist.ini /default.d; ls -lrt /default.d;'] - volumeMounts: - - name: config - mountPath: /tmp/ - - name: config-storage - mountPath: /default.d -{{- if .Values.adminHash }} - - name: admin-hash-copy - image: "{{ .Values.initImage.repository }}:{{ .Values.initImage.tag }}" - imagePullPolicy: {{ .Values.initImage.pullPolicy }} - command: ['sh','-c','cp /tmp/password.ini /local.d/ ;'] - volumeMounts: - - name: admin-password - mountPath: /tmp/password.ini - subPath: "password.ini" - - name: local-config-storage - mountPath: /local.d -{{- end }} - containers: - - name: couchdb - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - ports: - - name: couchdb - containerPort: 5984 - - name: epmd - containerPort: 4369 - - containerPort: 9100 - env: -{{- if not .Values.allowAdminParty }} - - name: COUCHDB_USER - valueFrom: - secretKeyRef: - name: {{ template "couchdb.fullname" . }} - key: adminUsername - - name: COUCHDB_PASSWORD - valueFrom: - secretKeyRef: - name: {{ template "couchdb.fullname" . }} - key: adminPassword - - name: COUCHDB_SECRET - valueFrom: - secretKeyRef: - name: {{ template "couchdb.fullname" . }} - key: cookieAuthSecret -{{- end }} - - name: ERL_FLAGS - value: "{{ range $k, $v := .Values.erlangFlags }} -{{ $k }} {{ $v }} {{ end }}" -{{- if .Values.livenessProbe.enabled }} - livenessProbe: -{{- if .Values.couchdbConfig.chttpd.require_valid_user }} - exec: - command: - - sh - - -c - - curl -G --silent --fail -u ${COUCHDB_USER}:${COUCHDB_PASSWORD} http://localhost:5984/_up -{{- else }} - httpGet: - path: /_up - port: 5984 -{{- end }} - failureThreshold: {{ .Values.livenessProbe.failureThreshold }} - initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.livenessProbe.periodSeconds }} - successThreshold: {{ .Values.livenessProbe.successThreshold }} - timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }} -{{- end }} -{{- if .Values.readinessProbe.enabled }} - readinessProbe: -{{- if .Values.couchdbConfig.chttpd.require_valid_user }} - exec: - command: - - sh - - -c - - curl -G --silent --fail -u ${COUCHDB_USER}:${COUCHDB_PASSWORD} http://localhost:5984/_up -{{- else }} - httpGet: - path: /_up - port: 5984 -{{- end }} - failureThreshold: {{ .Values.readinessProbe.failureThreshold }} - initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.readinessProbe.periodSeconds }} - successThreshold: {{ .Values.readinessProbe.successThreshold }} - timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }} -{{- end }} - resources: -{{ toYaml .Values.resources | indent 12 }} - volumeMounts: - - name: config-storage - mountPath: /opt/couchdb/etc/default.d -{{- if .Values.adminHash }} - - name: local-config-storage - mountPath: /opt/couchdb/etc/local.d -{{- end }} - - name: database-storage - mountPath: /opt/couchdb/data -{{- if .Values.enableSearch }} - - name: clouseau - image: "{{ .Values.searchImage.repository }}:{{ .Values.searchImage.tag }}" - imagePullPolicy: {{ .Values.searchImage.pullPolicy }} - volumeMounts: - - name: database-storage - mountPath: /opt/couchdb-search/data -{{- end }} -{{- if .Values.sidecars }} -{{ toYaml .Values.sidecars | indent 8}} -{{- end }} -{{- if .Values.nodeSelector }} - nodeSelector: -{{ toYaml .Values.nodeSelector | indent 8 }} -{{- end }} -{{- with .Values.tolerations }} - tolerations: -{{ toYaml . | indent 8 }} -{{- end }} -{{- with .Values.affinity }} - affinity: -{{ toYaml . | indent 8 }} -{{- end }} - volumes: - - name: config-storage - emptyDir: {} - - name: config - configMap: - name: {{ template "couchdb.fullname" . }} - items: - - key: inifile - path: chart.ini - - key: seedlistinifile - path: seedlist.ini - -{{- if .Values.adminHash }} - - name: local-config-storage - emptyDir: {} - - name: admin-password - secret: - secretName: {{ template "couchdb.fullname" . }} -{{- end -}} - -{{- if not .Values.persistentVolume.enabled }} - - name: database-storage - emptyDir: {} -{{- else }} - volumeClaimTemplates: - - metadata: - name: database-storage - labels: - app: {{ template "couchdb.name" . }} - release: {{ .Release.Name }} - spec: - accessModes: - {{- range .Values.persistentVolume.accessModes }} - - {{ . | quote }} - {{- end }} - resources: - requests: - storage: {{ .Values.persistentVolume.size | quote }} - {{- if .Values.persistentVolume.storageClass }} - {{- if (eq "-" .Values.persistentVolume.storageClass) }} - storageClassName: "" - {{- else }} - storageClassName: "{{ .Values.persistentVolume.storageClass }}" - {{- end }} - {{- end }} -{{- end }} diff --git a/hosting/kubernetes/budibase/charts/couchdb/values.yaml b/hosting/kubernetes/budibase/charts/couchdb/values.yaml deleted file mode 100755 index 5a5025f816..0000000000 --- a/hosting/kubernetes/budibase/charts/couchdb/values.yaml +++ /dev/null @@ -1,201 +0,0 @@ -## clusterSize is the initial size of the CouchDB cluster. -clusterSize: 3 - -## If allowAdminParty is enabled the cluster will start up without any database -## administrator account; i.e., all users will be granted administrative -## access. Otherwise, the system will look for a Secret called -## -couchdb containing `adminUsername`, `adminPassword` and -## `cookieAuthSecret` keys. See the `createAdminSecret` flag. -## ref: https://kubernetes.io/docs/concepts/configuration/secret/ -allowAdminParty: false - -## If createAdminSecret is enabled a Secret called -couchdb will -## be created containing auto-generated credentials. Users who prefer to set -## these values themselves have a couple of options: -## -## 1) The `adminUsername`, `adminPassword`, `adminHash`, and `cookieAuthSecret` -## can be defined directly in the chart's values. Note that all of a chart's -## values are currently stored in plaintext in a ConfigMap in the tiller -## namespace. -## -## 2) This flag can be disabled and a Secret with the required keys can be -## created ahead of time. -createAdminSecret: true - -# adminUsername: budibase -# adminPassword: budibase -# adminHash: -pbkdf2-this_is_not_necessarily_secure_either -# cookieAuthSecret: admin - -## When enabled, will deploy a networkpolicy that allows CouchDB pods to -## communicate with each other for clustering and ingress on port 5984 -networkPolicy: - enabled: true - -## Use an alternate scheduler, e.g. "stork". -## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ -## -# schedulerName: - -# Use a service account -serviceAccount: - enabled: true - create: true -# name: -# imagePullSecrets: -# - name: myimagepullsecret - -## The storage volume used by each Pod in the StatefulSet. If a -## persistentVolume is not enabled, the Pods will use `emptyDir` ephemeral -## local storage. Setting the storageClass attribute to "-" disables dynamic -## provisioning of Persistent Volumes; leaving it unset will invoke the default -## provisioner. -persistentVolume: - enabled: false - accessModes: - - ReadWriteOnce - size: 10Gi - storageClass: "" - -## The CouchDB image -image: - repository: couchdb - tag: 3.1.0 - pullPolicy: IfNotPresent - -## Experimental integration with Lucene-powered fulltext search -searchImage: - repository: kocolosk/couchdb-search - tag: 0.2.0 - pullPolicy: IfNotPresent - -## Flip this to flag to include the Search container in each Pod -enableSearch: true - -initImage: - repository: busybox - tag: latest - pullPolicy: Always - -## CouchDB is happy to spin up cluster nodes in parallel, but if you encounter -## problems you can try setting podManagementPolicy to the StatefulSet default -## `OrderedReady` -podManagementPolicy: Parallel - -## To better tolerate Node failures, we can prevent Kubernetes scheduler from -## assigning more than one Pod of CouchDB StatefulSet per Node using podAntiAffinity. -affinity: {} - # podAntiAffinity: - # requiredDuringSchedulingIgnoredDuringExecution: - # - labelSelector: - # matchExpressions: - # - key: "app" - # operator: In - # values: - # - couchdb - # topologyKey: "kubernetes.io/hostname" - -## Optional pod annotations -annotations: {} - -## Optional tolerations -tolerations: [] - -## A StatefulSet requires a headless Service to establish the stable network -## identities of the Pods, and that Service is created automatically by this -## chart without any additional configuration. The Service block below refers -## to a second Service that governs how clients connect to the CouchDB cluster. -service: - # annotations: - enabled: true - type: ClusterIP - externalPort: 5984 - -## An Ingress resource can provide name-based virtual hosting and TLS -## termination among other things for CouchDB deployments which are accessed -## from outside the Kubernetes cluster. -## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/ -ingress: - enabled: false - hosts: - - chart-example.local - path: / - annotations: [] - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - tls: - # Secrets must be manually created in the namespace. - # - secretName: chart-example-tls - # hosts: - # - chart-example.local - -## Optional resource requests and limits for the CouchDB container -## ref: http://kubernetes.io/docs/user-guide/compute-resources/ -resources: - {} - # requests: - # cpu: 100m - # memory: 128Mi - # limits: - # cpu: 56 - # memory: 256Gi - -## erlangFlags is a map that is passed to the Erlang VM as flags using the -## ERL_FLAGS env. `name` and `setcookie` flags are minimally required to -## establish connectivity between cluster nodes. -## ref: http://erlang.org/doc/man/erl.html#init_flags -erlangFlags: - name: couchdb - setcookie: monster - -## couchdbConfig will override default CouchDB configuration settings. -## The contents of this map are reformatted into a .ini file laid down -## by a ConfigMap object. -## ref: http://docs.couchdb.org/en/latest/config/index.html -couchdbConfig: - couchdb: - uuid: budibase-couchdb # REQUIRED: Unique identifier for this CouchDB server instance - # cluster: - # q: 8 # Create 8 shards for each database - chttpd: - bind_address: any - # chttpd.require_valid_user disables all the anonymous requests to the port - # 5984 when is set to true. - require_valid_user: false - -# Kubernetes local cluster domain. -# This is used to generate FQDNs for peers when joining the CouchDB cluster. -dns: - clusterDomainSuffix: cluster.local - -## Configure liveness and readiness probe values -## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes -livenessProbe: - enabled: true - failureThreshold: 3 - initialDelaySeconds: 0 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 1 -readinessProbe: - enabled: true - failureThreshold: 3 - initialDelaySeconds: 0 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 1 - -# Configure arbitrary sidecar containers for CouchDB pods created by the -# StatefulSet -sidecars: {} - # - name: foo - # image: "busybox" - # imagePullPolicy: IfNotPresent - # resources: - # requests: - # cpu: "0.1" - # memory: 10Mi - # command: ['echo "foo";'] - # volumeMounts: - # - name: database-storage - # mountPath: /opt/couchdb/data/ diff --git a/hosting/kubernetes/budibase/values.yaml b/hosting/kubernetes/budibase/values.yaml index bd9f6543b3..ec3629e094 100644 --- a/hosting/kubernetes/budibase/values.yaml +++ b/hosting/kubernetes/budibase/values.yaml @@ -126,12 +126,10 @@ services: couchdb: enabled: true - replicaCount: 3 # url: "" # only change if pointing to existing couch server # user: "" # only change if pointing to existing couch server # password: "" # only change if pointing to existing couch server port: 5984 - storage: 100Mi redis: enabled: true # disable if using external redis @@ -151,3 +149,151 @@ services: region: "" # AWS_REGION if using S3 or existing minio secret url: "" # only change if pointing to existing minio cluster and minio: false storage: 100Mi + +# Override values in couchDB subchart +couchdb: + ## clusterSize is the initial size of the CouchDB cluster. + clusterSize: 3 + allowAdminParty: false + + # Secret Management + createAdminSecret: true + + # adminUsername: budibase + # adminPassword: budibase + # adminHash: -pbkdf2-this_is_not_necessarily_secure_either + # cookieAuthSecret: admin + + ## When enabled, will deploy a networkpolicy that allows CouchDB pods to + ## communicate with each other for clustering and ingress on port 5984 + networkPolicy: + enabled: true + + # Use a service account + serviceAccount: + enabled: true + create: true + # name: + # imagePullSecrets: + # - name: myimagepullsecret + + ## The storage volume used by each Pod in the StatefulSet. If a + ## persistentVolume is not enabled, the Pods will use `emptyDir` ephemeral + ## local storage. Setting the storageClass attribute to "-" disables dynamic + ## provisioning of Persistent Volumes; leaving it unset will invoke the default + ## provisioner. + persistentVolume: + enabled: false + accessModes: + - ReadWriteOnce + size: 10Gi + storageClass: "" + + ## The CouchDB image + image: + repository: couchdb + tag: 3.1.0 + pullPolicy: IfNotPresent + + ## Experimental integration with Lucene-powered fulltext search + enableSearch: true + searchImage: + repository: kocolosk/couchdb-search + tag: 0.2.0 + pullPolicy: IfNotPresent + + initImage: + repository: busybox + tag: latest + pullPolicy: Always + + ## CouchDB is happy to spin up cluster nodes in parallel, but if you encounter + ## problems you can try setting podManagementPolicy to the StatefulSet default + ## `OrderedReady` + podManagementPolicy: Parallel + + ## Optional pod annotations + annotations: {} + + ## Optional tolerations + tolerations: [] + + service: + # annotations: + enabled: true + type: ClusterIP + externalPort: 5984 + + ## An Ingress resource can provide name-based virtual hosting and TLS + ## termination among other things for CouchDB deployments which are accessed + ## from outside the Kubernetes cluster. + ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/ + ingress: + enabled: false + hosts: + - chart-example.local + path: / + annotations: [] + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + tls: + # Secrets must be manually created in the namespace. + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + + ## Optional resource requests and limits for the CouchDB container + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + resources: + {} + # requests: + # cpu: 100m + # memory: 128Mi + # limits: + # cpu: 56 + # memory: 256Gi + + ## erlangFlags is a map that is passed to the Erlang VM as flags using the + ## ERL_FLAGS env. `name` and `setcookie` flags are minimally required to + ## establish connectivity between cluster nodes. + ## ref: http://erlang.org/doc/man/erl.html#init_flags + erlangFlags: + name: couchdb + setcookie: monster + + ## couchdbConfig will override default CouchDB configuration settings. + ## The contents of this map are reformatted into a .ini file laid down + ## by a ConfigMap object. + ## ref: http://docs.couchdb.org/en/latest/config/index.html + couchdbConfig: + couchdb: + uuid: budibase-couchdb # REQUIRED: Unique identifier for this CouchDB server instance + # cluster: + # q: 8 # Create 8 shards for each database + chttpd: + bind_address: any + # chttpd.require_valid_user disables all the anonymous requests to the port + # 5984 when is set to true. + require_valid_user: false + + # Kubernetes local cluster domain. + # This is used to generate FQDNs for peers when joining the CouchDB cluster. + dns: + clusterDomainSuffix: cluster.local + + ## Configure liveness and readiness probe values + ## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + livenessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 0 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + readinessProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 0 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 \ No newline at end of file diff --git a/scripts/index.yaml b/scripts/index.yaml new file mode 100644 index 0000000000..2990f842ce --- /dev/null +++ b/scripts/index.yaml @@ -0,0 +1,30 @@ +apiVersion: v1 +entries: + budibase: + - apiVersion: v2 + appVersion: 0.1.6 + created: "2021-12-06T17:18:57.819135+01:00" + dependencies: + - condition: services.couchdb.enabled + name: couchdb + repository: https://apache.github.io/couchdb-helm + version: 3.3.4 + - condition: ingress.nginx + name: ingress-nginx + repository: https://github.com/kubernetes/ingress-nginx + version: 3.35.0 + description: Budibase is an open source low-code platform, helping thousands of teams build apps for their workplace in minutes. + digest: 5bd6418e9a78bf4d8df6de077d4392a647ea30324e33cae38da480e162af3c22 + keywords: + - low-code + - database + - cluster + name: budibase + sources: + - https://github.com/Budibase/budibase + - https://budibase.com + type: application + urls: + - https://budibase.github.io/budibase/budibase-0.2.3.tgz + version: 0.2.3 +generated: "2021-12-06T17:18:57.814315+01:00" From 8269e85eb92623c259f28e9dc455b52608d16a92 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Mon, 6 Dec 2021 18:33:31 +0100 Subject: [PATCH 02/52] helm chart release --- docs/budibase-0.2.3.tgz | Bin 42443 -> 43033 bytes docs/index.yaml | 38 +++++++++++++++++++++---- hosting/kubernetes/budibase/Chart.yaml | 2 +- scripts/index.yaml | 30 ------------------- 4 files changed, 33 insertions(+), 37 deletions(-) delete mode 100644 scripts/index.yaml diff --git a/docs/budibase-0.2.3.tgz b/docs/budibase-0.2.3.tgz index 23fbe03712063a9a505435306cf01f76a437f727..b7207376a131ead28492f3a9f6330788396b7ee2 100644 GIT binary patch literal 43033 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 diff --git a/docs/index.yaml b/docs/index.yaml index 04543c147e..1230b3cbc2 100644 --- a/docs/index.yaml +++ b/docs/index.yaml @@ -1,9 +1,35 @@ apiVersion: v1 entries: budibase: + - apiVersion: v2 + appVersion: 1.0.6 + created: "2021-12-06T18:32:46.48467+01:00" + dependencies: + - condition: services.couchdb.enabled + name: couchdb + repository: https://apache.github.io/couchdb-helm + version: 3.3.4 + - condition: ingress.nginx + name: ingress-nginx + repository: https://github.com/kubernetes/ingress-nginx + version: 3.35.0 + description: Budibase is an open source low-code platform, helping thousands of teams build apps for their workplace in minutes. + digest: 6c58f3fa361f9447721405d11616436679599c90c719a91cf892add5b1ad665a + keywords: + - low-code + - database + - cluster + name: budibase + sources: + - https://github.com/Budibase/budibase + - https://budibase.com + type: application + urls: + - https://budibase.github.io/budibase/budibase-0.2.3.tgz + version: 0.2.3 - apiVersion: v2 appVersion: 0.9.169 - created: "2021-10-20T14:27:23.521358+01:00" + created: "2021-12-06T18:32:46.480554+01:00" dependencies: - condition: services.couchdb.enabled name: couchdb @@ -29,7 +55,7 @@ entries: version: 0.2.2 - apiVersion: v2 appVersion: 0.9.163 - created: "2021-10-20T14:27:23.5153+01:00" + created: "2021-12-06T18:32:46.475721+01:00" dependencies: - condition: services.couchdb.enabled name: couchdb @@ -55,7 +81,7 @@ entries: version: 0.2.1 - apiVersion: v2 appVersion: 0.9.163 - created: "2021-10-20T14:27:23.510041+01:00" + created: "2021-12-06T18:32:46.47183+01:00" dependencies: - condition: services.couchdb.enabled name: couchdb @@ -81,7 +107,7 @@ entries: version: 0.2.0 - apiVersion: v2 appVersion: 0.9.56 - created: "2021-10-20T14:27:23.504543+01:00" + created: "2021-12-06T18:32:46.468237+01:00" dependencies: - condition: services.couchdb.enabled name: couchdb @@ -106,7 +132,7 @@ entries: version: 0.1.1 - apiVersion: v2 appVersion: 0.9.56 - created: "2021-10-20T14:27:23.496847+01:00" + created: "2021-12-06T18:32:46.463312+01:00" dependencies: - condition: services.couchdb.enabled name: couchdb @@ -129,4 +155,4 @@ entries: urls: - https://budibase.github.io/budibase/budibase-0.1.0.tgz version: 0.1.0 -generated: "2021-10-20T14:27:23.491132+01:00" +generated: "2021-12-06T18:32:46.459076+01:00" diff --git a/hosting/kubernetes/budibase/Chart.yaml b/hosting/kubernetes/budibase/Chart.yaml index a8db638a7e..cc4bbaa5f5 100644 --- a/hosting/kubernetes/budibase/Chart.yaml +++ b/hosting/kubernetes/budibase/Chart.yaml @@ -28,7 +28,7 @@ version: 0.2.3 # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "0.1.6" +appVersion: "1.0.6" dependencies: - name: couchdb diff --git a/scripts/index.yaml b/scripts/index.yaml deleted file mode 100644 index 2990f842ce..0000000000 --- a/scripts/index.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v1 -entries: - budibase: - - apiVersion: v2 - appVersion: 0.1.6 - created: "2021-12-06T17:18:57.819135+01:00" - dependencies: - - condition: services.couchdb.enabled - name: couchdb - repository: https://apache.github.io/couchdb-helm - version: 3.3.4 - - condition: ingress.nginx - name: ingress-nginx - repository: https://github.com/kubernetes/ingress-nginx - version: 3.35.0 - description: Budibase is an open source low-code platform, helping thousands of teams build apps for their workplace in minutes. - digest: 5bd6418e9a78bf4d8df6de077d4392a647ea30324e33cae38da480e162af3c22 - keywords: - - low-code - - database - - cluster - name: budibase - sources: - - https://github.com/Budibase/budibase - - https://budibase.com - type: application - urls: - - https://budibase.github.io/budibase/budibase-0.2.3.tgz - version: 0.2.3 -generated: "2021-12-06T17:18:57.814315+01:00" From 1d0b08905f496e8db613194f4c2dc8dc9fb2ef98 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Wed, 8 Dec 2021 08:27:04 +0000 Subject: [PATCH 03/52] adding image tag to worker and app services --- .../kubernetes/budibase/templates/app-service-deployment.yaml | 2 +- .../budibase/templates/worker-service-deployment.yaml | 2 +- hosting/kubernetes/budibase/values.yaml | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/hosting/kubernetes/budibase/templates/app-service-deployment.yaml b/hosting/kubernetes/budibase/templates/app-service-deployment.yaml index 7c62ada63f..949a8f6286 100644 --- a/hosting/kubernetes/budibase/templates/app-service-deployment.yaml +++ b/hosting/kubernetes/budibase/templates/app-service-deployment.yaml @@ -110,7 +110,7 @@ spec: value: {{ .Values.globals.accountPortalApiKey | quote }} - name: COOKIE_DOMAIN value: {{ .Values.globals.cookieDomain | quote }} - image: budibase/apps + image: budibase/apps:{{ .Values.services.budibaseVersion }} imagePullPolicy: Always name: bbapps ports: diff --git a/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml b/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml index 6cded8545f..858587be1c 100644 --- a/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml +++ b/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml @@ -115,7 +115,7 @@ spec: value: {{ .Values.globals.smtp.from | quote }} - name: APPS_URL value: http://app-service:{{ .Values.services.apps.port }} - image: budibase/worker + image: budibase/worker:{{ .Values.services.budibaseVersion }} imagePullPolicy: Always name: bbworker ports: diff --git a/hosting/kubernetes/budibase/values.yaml b/hosting/kubernetes/budibase/values.yaml index ec3629e094..fe48a7b7e0 100644 --- a/hosting/kubernetes/budibase/values.yaml +++ b/hosting/kubernetes/budibase/values.yaml @@ -2,8 +2,6 @@ # This is a YAML-formatted file. # Declare variables to be passed into your templates. -replicaCount: 1 - image: pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. @@ -109,6 +107,7 @@ globals: enabled: false services: + budibaseVersion: latest dns: cluster.local proxy: From f40fe2e4ede6f546f8d699a021c28e5082cead6c Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Wed, 8 Dec 2021 10:14:30 +0000 Subject: [PATCH 04/52] account for integer type from JSON schema --- .../automation/SetupPanel/AutomationBlockSetup.svelte | 2 +- packages/server/src/api/controllers/webhook.js | 4 ++++ packages/server/src/integrations/oracle.ts | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte b/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte index e7208518d5..6c4f84936b 100644 --- a/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte +++ b/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte @@ -241,7 +241,7 @@ value={inputData[key]} /> - {:else if value.type === "string" || value.type === "number"} + {:else if value.type === "string" || value.type === "number" || value.type === "integer"} {#if isTestModal} { let automation = await db.get(webhook.action.target) const autoOutputs = automation.definition.trigger.schema.outputs let properties = webhook.bodySchema.properties + // reset webhook outputs + autoOutputs.properties = { + body: autoOutputs.properties.body, + } for (let prop of Object.keys(properties)) { autoOutputs.properties[prop] = { type: properties[prop].type, diff --git a/packages/server/src/integrations/oracle.ts b/packages/server/src/integrations/oracle.ts index afaa902655..f602a97591 100644 --- a/packages/server/src/integrations/oracle.ts +++ b/packages/server/src/integrations/oracle.ts @@ -450,7 +450,7 @@ module OracleModule { }) return lastRow.rows } else { - return [{ [ operation.toLowerCase() ]: true }] + return [{ [operation.toLowerCase()]: true }] } } } From 1b8a3c9813a36d525d69c6c27bfa75a650772d6c Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Wed, 8 Dec 2021 11:32:28 +0000 Subject: [PATCH 05/52] updating cypress test to cover automation creation --- .../cypress/integration/createAutomation.spec.js | 10 +++++++--- .../AutomationBuilder/FlowChart/TestDataModal.svelte | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/builder/cypress/integration/createAutomation.spec.js b/packages/builder/cypress/integration/createAutomation.spec.js index 6ff013cd7a..efd3c7d023 100644 --- a/packages/builder/cypress/integration/createAutomation.spec.js +++ b/packages/builder/cypress/integration/createAutomation.spec.js @@ -35,19 +35,20 @@ context("Create a automation", () => { cy.contains("dog").click() cy.get(".spectrum-Textfield-input") .first() - .type("goodboy") + .type("{{ trigger.row.name }}", { parseSpecialCharSequences: false }) cy.get(".spectrum-Textfield-input") .eq(1) .type("11") + cy.contains("Finish and test automation").click() - cy.contains("Run test").click() cy.get(".modal-inner-wrapper").within(() => { cy.wait(1000) cy.get(".spectrum-Picker-label").click() cy.contains("dog").click() + cy.wait(1000) cy.get(".spectrum-Textfield-input") .first() - .type("goodboy") + .type("automationGoodboy") cy.get(".spectrum-Textfield-input") .eq(1) .type("11") @@ -57,6 +58,9 @@ context("Create a automation", () => { cy.get(".spectrum-Textfield-input") .eq(3) .type("123456") + cy.contains("Test").click() }) + cy.contains("Data").click() + cy.contains("automationGoodboy") }) }) diff --git a/packages/builder/src/components/automation/AutomationBuilder/FlowChart/TestDataModal.svelte b/packages/builder/src/components/automation/AutomationBuilder/FlowChart/TestDataModal.svelte index 3c75c9963d..e43729edbe 100644 --- a/packages/builder/src/components/automation/AutomationBuilder/FlowChart/TestDataModal.svelte +++ b/packages/builder/src/components/automation/AutomationBuilder/FlowChart/TestDataModal.svelte @@ -25,7 +25,7 @@ // Check the schema to see if required fields have been entered $: isError = !trigger.schema.outputs.required.every( - required => testData[required] + required => testData[required] || required !== "row" ) function parseTestJSON(e) { From 6f7926015a83b720382a20da151075a069c3f783 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Wed, 8 Dec 2021 13:19:43 +0000 Subject: [PATCH 06/52] ensure that dry runs between budibase-infra and standard templates match --- .../templates/app-service-deployment.yaml | 6 +-- .../budibase/templates/couchdb-backup.yaml | 43 +++++++++++++++++++ .../templates/worker-service-deployment.yaml | 6 +-- hosting/kubernetes/budibase/values.yaml | 8 +++- 4 files changed, 52 insertions(+), 11 deletions(-) create mode 100644 hosting/kubernetes/budibase/templates/couchdb-backup.yaml diff --git a/hosting/kubernetes/budibase/templates/app-service-deployment.yaml b/hosting/kubernetes/budibase/templates/app-service-deployment.yaml index 949a8f6286..5e45474c8a 100644 --- a/hosting/kubernetes/budibase/templates/app-service-deployment.yaml +++ b/hosting/kubernetes/budibase/templates/app-service-deployment.yaml @@ -73,17 +73,13 @@ spec: name: {{ template "budibase.fullname" . }} key: objectStoreSecret - name: MINIO_URL - {{ if .Values.services.objectStore.url }} value: {{ .Values.services.objectStore.url }} - {{ else }} - value: http://minio-service:{{ .Values.services.objectStore.port }} - {{ end }} - name: PORT value: {{ .Values.services.apps.port | quote }} - name: MULTI_TENANCY value: {{ .Values.globals.multiTenancy | quote }} - name: LOG_LEVEL - value: {{ .Values.services.apps.logLevel | quote }} + value: {{ default "info" .Values.services.apps.logLevel | quote }} - name: REDIS_PASSWORD value: {{ .Values.services.redis.password }} - name: REDIS_URL diff --git a/hosting/kubernetes/budibase/templates/couchdb-backup.yaml b/hosting/kubernetes/budibase/templates/couchdb-backup.yaml new file mode 100644 index 0000000000..8d9c368864 --- /dev/null +++ b/hosting/kubernetes/budibase/templates/couchdb-backup.yaml @@ -0,0 +1,43 @@ +{{- if .Values.services.couchdb.backup.enabled }} +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + kompose.cmd: kompose convert + kompose.version: 1.21.0 (992df58d8) + creationTimestamp: null + labels: + app.kubernetes.io/name: couchdb-backup + name: couchdb-backup +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: couchdb-backup + strategy: + type: Recreate + template: + metadata: + annotations: + kompose.cmd: kompose convert + kompose.version: 1.21.0 (992df58d8) + creationTimestamp: null + labels: + app.kubernetes.io/name: couchdb-backup + spec: + containers: + - env: + - name: SOURCE + value: {{ .Values.services.couchdb.url }} + - name: TARGET + value: {{ .Values.services.couchdb.backup.target }} + - name: RUN_EVERY_SECS + value: {{ .Values.services.couchdb.backup.interval }} + - name: VERBOSE + value: "true" + image: redgeoff/replicate-couchdb-cluster + imagePullPolicy: Always + name: couchdb-backup + resources: {} +status: {} +{{- end }} diff --git a/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml b/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml index 858587be1c..70249123d0 100644 --- a/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml +++ b/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml @@ -70,17 +70,13 @@ spec: name: {{ template "budibase.fullname" . }} key: objectStoreSecret - name: MINIO_URL - {{ if .Values.services.objectStore.url }} value: {{ .Values.services.objectStore.url }} - {{ else }} - value: http://minio-service:{{ .Values.services.objectStore.port }} - {{ end }} - name: PORT value: {{ .Values.services.worker.port | quote }} - name: MULTI_TENANCY value: {{ .Values.globals.multiTenancy | quote }} - name: LOG_LEVEL - value: {{ .Values.services.worker.logLevel | quote }} + value: {{ default "info" .Values.services.worker.logLevel | quote }} - name: REDIS_PASSWORD value: {{ .Values.services.redis.password | quote }} - name: REDIS_URL diff --git a/hosting/kubernetes/budibase/values.yaml b/hosting/kubernetes/budibase/values.yaml index fe48a7b7e0..24197383e2 100644 --- a/hosting/kubernetes/budibase/values.yaml +++ b/hosting/kubernetes/budibase/values.yaml @@ -129,6 +129,12 @@ services: # user: "" # only change if pointing to existing couch server # password: "" # only change if pointing to existing couch server port: 5984 + backup: + enabled: false + # target couchDB instance to back up to + target: "" + # backup interval in seconds + interval: "" redis: enabled: true # disable if using external redis @@ -146,7 +152,7 @@ services: accessKey: "" # AWS_ACCESS_KEY if using S3 or existing minio access key secretKey: "" # AWS_SECRET_ACCESS_KEY if using S3 or existing minio secret region: "" # AWS_REGION if using S3 or existing minio secret - url: "" # only change if pointing to existing minio cluster and minio: false + url: "http://minio-service:9000" # only change if pointing to existing minio cluster or S3 and minio: false storage: 100Mi # Override values in couchDB subchart From b429a5bbcf2de389ff315feeda32ea3ff638acf3 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Wed, 8 Dec 2021 14:06:32 +0000 Subject: [PATCH 07/52] v1.0.9-alpha.0 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index d19745b11c..dbc85162be 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.8", + "version": "1.0.9-alpha.0", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index aa41d93782..e3339f0245 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.8", + "version": "1.0.9-alpha.0", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 826c833602..2611c78dc6 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.8", + "version": "1.0.9-alpha.0", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 8bef61384f..4b574d5252 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.8", + "version": "1.0.9-alpha.0", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.8", - "@budibase/client": "^1.0.8", + "@budibase/bbui": "^1.0.9-alpha.0", + "@budibase/client": "^1.0.9-alpha.0", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.8", + "@budibase/string-templates": "^1.0.9-alpha.0", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index ad050235fe..75a7362184 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.8", + "version": "1.0.9-alpha.0", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 3b831055d0..389b614f0b 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.8", + "version": "1.0.9-alpha.0", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.8", + "@budibase/bbui": "^1.0.9-alpha.0", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.8", + "@budibase/string-templates": "^1.0.9-alpha.0", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index df15113e98..3285b07d6e 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.8", + "version": "1.0.9-alpha.0", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -70,9 +70,9 @@ "license": "GPL-3.0", "dependencies": { "@apidevtools/swagger-parser": "^10.0.3", - "@budibase/auth": "^1.0.8", - "@budibase/client": "^1.0.8", - "@budibase/string-templates": "^1.0.8", + "@budibase/auth": "^1.0.9-alpha.0", + "@budibase/client": "^1.0.9-alpha.0", + "@budibase/string-templates": "^1.0.9-alpha.0", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 53d94f91e7..1116c949c0 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.8", + "version": "1.0.9-alpha.0", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 34986cef6a..6552b4f1b5 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.8", + "version": "1.0.9-alpha.0", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.8", - "@budibase/string-templates": "^1.0.8", + "@budibase/auth": "^1.0.9-alpha.0", + "@budibase/string-templates": "^1.0.9-alpha.0", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 7ff93e975a90d7da0bed6665d057663ef332fada Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Wed, 8 Dec 2021 16:27:33 +0000 Subject: [PATCH 08/52] completely automate helm chart incrementing and semver --- .github/workflows/release-selfhost.yml | 1 + docs/budibase-0.2.3.tgz | Bin 43033 -> 0 bytes docs/index.yaml | 22 +++++----- hosting/kubernetes/budibase/Chart.yaml | 39 +++++------------- .../templates/app-service-deployment.yaml | 2 +- .../templates/worker-service-deployment.yaml | 2 +- package.json | 3 +- scripts/releaseHelmChart.js | 39 ++++++++++++++++++ scripts/release_helm_chart.sh | 3 -- yarn.lock | 12 ++++++ 10 files changed, 78 insertions(+), 45 deletions(-) delete mode 100644 docs/budibase-0.2.3.tgz create mode 100755 scripts/releaseHelmChart.js delete mode 100755 scripts/release_helm_chart.sh diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index ad0941709c..444071fa7b 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -53,5 +53,6 @@ jobs: uses: helm/chart-releaser-action@v1.1.0 with: charts_dir: docs + branch: helm-repo env: CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" diff --git a/docs/budibase-0.2.3.tgz b/docs/budibase-0.2.3.tgz deleted file mode 100644 index b7207376a131ead28492f3a9f6330788396b7ee2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43033 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 + Budibase is an open source low-code platform, helping thousands of teams build + apps for their workplace in minutes. keywords: -- low-code -- database -- cluster + - low-code + - database + - cluster sources: -- https://github.com/Budibase/budibase -- https://budibase.com - -# A chart can be either an 'application' or a 'library' chart. -# -# Application charts are a collection of templates that can be packaged into versioned archives -# to be deployed. -# -# Library charts provide useful utilities or functions for the chart developer. They're included as -# a dependency of application charts to inject those utilities and functions into the rendering -# pipeline. Library charts do not define any templates and therefore cannot be deployed. + - https://github.com/Budibase/budibase + - https://budibase.com type: application - -# This is the chart version. This version number should be incremented each time you make changes -# to the chart and its templates, including the app version. -# Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.2.3 - -# This is the version number of the application being deployed. This version number should be -# incremented each time you make changes to the application. Versions are not expected to -# follow Semantic Versioning. They should reflect the version the application is using. -# It is recommended to use it with quotes. -appVersion: "1.0.6" - +version: 0.2.4 +appVersion: 2.0.0 dependencies: - name: couchdb version: 3.3.4 repository: https://apache.github.io/couchdb-helm condition: services.couchdb.enabled - name: ingress-nginx - version: 3.35.0 + version: 3.35.0 repository: https://github.com/kubernetes/ingress-nginx condition: ingress.nginx diff --git a/hosting/kubernetes/budibase/templates/app-service-deployment.yaml b/hosting/kubernetes/budibase/templates/app-service-deployment.yaml index 5e45474c8a..e75f84e779 100644 --- a/hosting/kubernetes/budibase/templates/app-service-deployment.yaml +++ b/hosting/kubernetes/budibase/templates/app-service-deployment.yaml @@ -106,7 +106,7 @@ spec: value: {{ .Values.globals.accountPortalApiKey | quote }} - name: COOKIE_DOMAIN value: {{ .Values.globals.cookieDomain | quote }} - image: budibase/apps:{{ .Values.services.budibaseVersion }} + image: budibase/apps:{{ .Chart.appVersion }} imagePullPolicy: Always name: bbapps ports: diff --git a/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml b/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml index 70249123d0..d71fc80578 100644 --- a/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml +++ b/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml @@ -111,7 +111,7 @@ spec: value: {{ .Values.globals.smtp.from | quote }} - name: APPS_URL value: http://app-service:{{ .Values.services.apps.port }} - image: budibase/worker:{{ .Values.services.budibaseVersion }} + image: budibase/worker:{{ .Chart.appVersion }} imagePullPolicy: Always name: bbworker ports: diff --git a/package.json b/package.json index 4be3fe1401..63de8251d4 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "eslint-plugin-cypress": "^2.11.3", "eslint-plugin-svelte3": "^3.2.0", "husky": "^7.0.1", + "js-yaml": "^4.1.0", "kill-port": "^1.6.1", "lerna": "3.14.1", "prettier": "^2.3.1", @@ -49,7 +50,7 @@ "build:docker:airgap": "node hosting/scripts/airgapped/airgappedDockerBuild", "build:digitalocean": "cd hosting/digitalocean && ./build.sh && cd -", "build:docs": "lerna run build:docs", - "release:helm": "./scripts/release_helm_chart.sh", + "release:helm": "node scripts/releaseHelmChart", "env:multi:enable": "lerna run env:multi:enable", "env:multi:disable": "lerna run env:multi:disable", "env:selfhost:enable": "lerna run env:selfhost:enable", diff --git a/scripts/releaseHelmChart.js b/scripts/releaseHelmChart.js new file mode 100755 index 0000000000..4c022c9a0c --- /dev/null +++ b/scripts/releaseHelmChart.js @@ -0,0 +1,39 @@ +const yaml = require("js-yaml") +const { execSync } = require("child_process") +const fs = require("fs") +const path = require("path") + +const UpgradeTypes = { + MAJOR: "major", + MINOR: "minor", + PATCH: "patch" +} + +const CHART_PATH = path.join(__dirname, "../", "hosting", "kubernetes", "budibase", "Chart.yaml") +const UPGRADE_VERSION = process.env.BUDIBASE_RELEASE_VERSION +const UPGRADE_TYPE = process.env.HELM_CHART_UPGRADE_TYPE || UpgradeTypes.PATCH + +if (!UPGRADE_VERSION) { + throw new Error("BUDIBASE_RELEASE_VERSION env var must be set.") +} + +try { + const chartFile = fs.readFileSync(CHART_PATH, "utf-8") + const chart = yaml.load(chartFile) + + // Upgrade app version in chart to match budibase release version + chart.appVersion = UPGRADE_VERSION + + // semantically version the chart + const [major, minor, patch] = chart.version.split(".") + const newPatch = parseInt(patch) + 1 + chart.version = [major, minor, newPatch].join(".") + const updatedChartYaml = yaml.dump(chart) + fs.writeFileSync(CHART_PATH, updatedChartYaml) + + execSync(`helm package hosting/kubernetes/budibase --destination docs`) + execSync(`helm repo index docs --url https://budibase.github.io/budibase`) +} catch (err) { + console.error("Error releasing helm chart") + throw err +} diff --git a/scripts/release_helm_chart.sh b/scripts/release_helm_chart.sh deleted file mode 100755 index b1594cca91..0000000000 --- a/scripts/release_helm_chart.sh +++ /dev/null @@ -1,3 +0,0 @@ -cd docs -helm package ../hosting/kubernetes/budibase -helm repo index . --url https://budibase.github.io/budibase \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index aa02ce87f5..628e48bd0c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1082,6 +1082,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -3260,6 +3265,13 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" From 5a614f33c380db09ee9790ea536a4e2c5f0b1962 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Wed, 8 Dec 2021 17:13:00 +0000 Subject: [PATCH 09/52] CI Automation for helm chart release --- .github/workflows/release-selfhost.yml | 6 +++++- .github/workflows/release.yml | 2 ++ docs/index.yaml | 2 +- hosting/kubernetes/budibase/Chart.yaml | 2 +- scripts/releaseHelmChart.js | 2 +- 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 444071fa7b..1c1806a0ef 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -43,10 +43,14 @@ jobs: DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }} BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} + - name: Configure Git + run: | + git config user.name "Budibase Production Bot" + git config user.email "<>" + - uses: azure/setup-helm@v1 id: install - # So, we need to inject the values into this - run: yarn release:helm - name: Run chart-releaser diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 71432c2403..d4142f7ac9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -56,3 +56,5 @@ jobs: DOCKER_USER: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }} BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} + + # Release to pre-prod environment \ No newline at end of file diff --git a/docs/index.yaml b/docs/index.yaml index 21586652f6..232f3445f9 100644 --- a/docs/index.yaml +++ b/docs/index.yaml @@ -2,7 +2,7 @@ apiVersion: v1 entries: budibase: - apiVersion: v2 - appVersion: 2.0.0 + appVersion: 1.0.6 created: "2021-12-08T16:26:47.061065Z" dependencies: - condition: services.couchdb.enabled diff --git a/hosting/kubernetes/budibase/Chart.yaml b/hosting/kubernetes/budibase/Chart.yaml index 790c7845d8..0528e56562 100644 --- a/hosting/kubernetes/budibase/Chart.yaml +++ b/hosting/kubernetes/budibase/Chart.yaml @@ -12,7 +12,7 @@ sources: - https://budibase.com type: application version: 0.2.4 -appVersion: 2.0.0 +appVersion: 1.0.6 dependencies: - name: couchdb version: 3.3.4 diff --git a/scripts/releaseHelmChart.js b/scripts/releaseHelmChart.js index 4c022c9a0c..9c62f3dd8f 100755 --- a/scripts/releaseHelmChart.js +++ b/scripts/releaseHelmChart.js @@ -31,8 +31,8 @@ try { const updatedChartYaml = yaml.dump(chart) fs.writeFileSync(CHART_PATH, updatedChartYaml) + // package the chart and write to docs dir execSync(`helm package hosting/kubernetes/budibase --destination docs`) - execSync(`helm repo index docs --url https://budibase.github.io/budibase`) } catch (err) { console.error("Error releasing helm chart") throw err From 8c0632e4b92f3ef5bfa84bdf257fe31d01a69af7 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Wed, 8 Dec 2021 17:21:37 +0000 Subject: [PATCH 10/52] v1.0.9-alpha.1 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index dbc85162be..2582e41098 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.9-alpha.0", + "version": "1.0.9-alpha.1", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index e3339f0245..489543a544 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.9-alpha.0", + "version": "1.0.9-alpha.1", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 2611c78dc6..b0f36d4aef 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.9-alpha.0", + "version": "1.0.9-alpha.1", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 4b574d5252..5f473e086f 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.9-alpha.0", + "version": "1.0.9-alpha.1", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.9-alpha.0", - "@budibase/client": "^1.0.9-alpha.0", + "@budibase/bbui": "^1.0.9-alpha.1", + "@budibase/client": "^1.0.9-alpha.1", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.9-alpha.0", + "@budibase/string-templates": "^1.0.9-alpha.1", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 75a7362184..b264d574fd 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.9-alpha.0", + "version": "1.0.9-alpha.1", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 389b614f0b..9d37066647 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.9-alpha.0", + "version": "1.0.9-alpha.1", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.9-alpha.0", + "@budibase/bbui": "^1.0.9-alpha.1", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.9-alpha.0", + "@budibase/string-templates": "^1.0.9-alpha.1", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 3285b07d6e..3cbf8183e4 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.9-alpha.0", + "version": "1.0.9-alpha.1", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -70,9 +70,9 @@ "license": "GPL-3.0", "dependencies": { "@apidevtools/swagger-parser": "^10.0.3", - "@budibase/auth": "^1.0.9-alpha.0", - "@budibase/client": "^1.0.9-alpha.0", - "@budibase/string-templates": "^1.0.9-alpha.0", + "@budibase/auth": "^1.0.9-alpha.1", + "@budibase/client": "^1.0.9-alpha.1", + "@budibase/string-templates": "^1.0.9-alpha.1", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 1116c949c0..36dc24ca22 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.9-alpha.0", + "version": "1.0.9-alpha.1", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 6552b4f1b5..9f0bda3c77 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.9-alpha.0", + "version": "1.0.9-alpha.1", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.9-alpha.0", - "@budibase/string-templates": "^1.0.9-alpha.0", + "@budibase/auth": "^1.0.9-alpha.1", + "@budibase/string-templates": "^1.0.9-alpha.1", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From fe85dc74e478731f6d1c41140a0f79aebd87193b Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Wed, 8 Dec 2021 17:44:39 +0000 Subject: [PATCH 11/52] v1.0.9 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index d19745b11c..fbc9c2ebde 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.8", + "version": "1.0.9", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index aa41d93782..12373bd273 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.8", + "version": "1.0.9", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 826c833602..5a778bcab0 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.8", + "version": "1.0.9", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 8bef61384f..0408010aaa 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.8", + "version": "1.0.9", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.8", - "@budibase/client": "^1.0.8", + "@budibase/bbui": "^1.0.9", + "@budibase/client": "^1.0.9", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.8", + "@budibase/string-templates": "^1.0.9", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index ad050235fe..0ce9f23ac3 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.8", + "version": "1.0.9", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 3b831055d0..086850c8cf 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.8", + "version": "1.0.9", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.8", + "@budibase/bbui": "^1.0.9", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.8", + "@budibase/string-templates": "^1.0.9", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 155b85d84d..3ac9fac4d1 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.8", + "version": "1.0.9", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.8", - "@budibase/client": "^1.0.8", - "@budibase/string-templates": "^1.0.8", + "@budibase/auth": "^1.0.9", + "@budibase/client": "^1.0.9", + "@budibase/string-templates": "^1.0.9", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 53d94f91e7..3656c4700a 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.8", + "version": "1.0.9", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 34986cef6a..d4cb12e877 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.8", + "version": "1.0.9", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.8", - "@budibase/string-templates": "^1.0.8", + "@budibase/auth": "^1.0.9", + "@budibase/string-templates": "^1.0.9", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 832a4e52622fcca4095ad0db92a0deee262d66e6 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Wed, 8 Dec 2021 18:00:59 +0000 Subject: [PATCH 12/52] adding budibase release version env var --- .github/workflows/release-selfhost.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index 1c1806a0ef..ce2bb1c949 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -52,6 +52,8 @@ jobs: id: install - run: yarn release:helm + env: + BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} - name: Run chart-releaser uses: helm/chart-releaser-action@v1.1.0 From 92bab31ffc344536dd1df7297518aad353d325cd Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Wed, 8 Dec 2021 18:11:06 +0000 Subject: [PATCH 13/52] v1.0.10 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index fbc9c2ebde..3aef8ef137 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.9", + "version": "1.0.10", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 12373bd273..a516e1ba58 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.9", + "version": "1.0.10", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 5a778bcab0..8dedae0d3f 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.9", + "version": "1.0.10", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 0408010aaa..b8eb15794f 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.9", + "version": "1.0.10", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.9", - "@budibase/client": "^1.0.9", + "@budibase/bbui": "^1.0.10", + "@budibase/client": "^1.0.10", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.9", + "@budibase/string-templates": "^1.0.10", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 0ce9f23ac3..a074da5f59 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.9", + "version": "1.0.10", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 086850c8cf..b42abfc095 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.9", + "version": "1.0.10", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.9", + "@budibase/bbui": "^1.0.10", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.9", + "@budibase/string-templates": "^1.0.10", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 3ac9fac4d1..3b1e9add44 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.9", + "version": "1.0.10", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.9", - "@budibase/client": "^1.0.9", - "@budibase/string-templates": "^1.0.9", + "@budibase/auth": "^1.0.10", + "@budibase/client": "^1.0.10", + "@budibase/string-templates": "^1.0.10", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 3656c4700a..08e6b6383b 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.9", + "version": "1.0.10", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index d4cb12e877..62048dd240 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.9", + "version": "1.0.10", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.9", - "@budibase/string-templates": "^1.0.9", + "@budibase/auth": "^1.0.10", + "@budibase/string-templates": "^1.0.10", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 7334fc6748dc44b7f008b8c177eeab052e1da018 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 9 Dec 2021 11:05:43 +0000 Subject: [PATCH 14/52] automate helm deployment with CI --- .github/workflows/release-selfhost.yml | 17 +- .../budibase/.helmignore | 0 .../kubernetes => charts}/budibase/Chart.yaml | 4 +- .../kubernetes => charts}/budibase/README.md | 0 .../budibase/charts/couchdb-3.3.4.tgz | Bin .../budibase/charts/ingress-nginx-3.35.0.tgz | Bin .../budibase/templates/NOTES.txt | 0 .../budibase/templates/_helpers.tpl | 0 .../budibase/templates/alb-ingress.yaml | 0 .../templates/app-service-deployment.yaml | 2 +- .../templates/app-service-service.yaml | 0 .../budibase/templates/couchdb-backup.yaml | 4 +- .../budibase/templates/hpa.yaml | 0 .../budibase/templates/ingress.yaml | 0 .../minio-data-persistentvolumeclaim.yaml | 0 .../templates/minio-service-deployment.yaml | 0 .../templates/minio-service-service.yaml | 0 .../templates/proxy-service-deployment.yaml | 0 .../templates/proxy-service-service.yaml | 0 .../redis-data-persistentvolumeclaim.yaml | 0 .../templates/redis-service-deployment.yaml | 0 .../templates/redis-service-service.yaml | 0 .../budibase/templates/secrets.yaml | 0 .../budibase/templates/service.yaml | 0 .../budibase/templates/serviceaccount.yaml | 0 .../templates/tests/test-connection.yaml | 0 .../templates/worker-service-deployment.yaml | 2 +- .../templates/worker-service-service.yaml | 0 .../budibase/values.yaml | 1 + docs/budibase-0.1.0.tgz | Bin 43708 -> 0 bytes docs/budibase-0.1.1.tgz | Bin 43391 -> 0 bytes docs/budibase-0.2.0.tgz | Bin 40877 -> 0 bytes docs/budibase-0.2.1.tgz | Bin 40795 -> 0 bytes docs/budibase-0.2.2.tgz | Bin 40807 -> 0 bytes docs/index.html | 9 - docs/index.yaml | 158 ------------------ scripts/releaseHelmChart.js | 6 +- 37 files changed, 15 insertions(+), 188 deletions(-) rename {hosting/kubernetes => charts}/budibase/.helmignore (100%) rename {hosting/kubernetes => charts}/budibase/Chart.yaml (94%) rename {hosting/kubernetes => charts}/budibase/README.md (100%) rename {hosting/kubernetes => charts}/budibase/charts/couchdb-3.3.4.tgz (100%) rename {hosting/kubernetes => charts}/budibase/charts/ingress-nginx-3.35.0.tgz (100%) rename {hosting/kubernetes => charts}/budibase/templates/NOTES.txt (100%) rename {hosting/kubernetes => charts}/budibase/templates/_helpers.tpl (100%) rename {hosting/kubernetes => charts}/budibase/templates/alb-ingress.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/app-service-deployment.yaml (98%) rename {hosting/kubernetes => charts}/budibase/templates/app-service-service.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/couchdb-backup.yaml (87%) rename {hosting/kubernetes => charts}/budibase/templates/hpa.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/ingress.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/minio-data-persistentvolumeclaim.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/minio-service-deployment.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/minio-service-service.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/proxy-service-deployment.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/proxy-service-service.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/redis-data-persistentvolumeclaim.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/redis-service-deployment.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/redis-service-service.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/secrets.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/service.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/serviceaccount.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/tests/test-connection.yaml (100%) rename {hosting/kubernetes => charts}/budibase/templates/worker-service-deployment.yaml (98%) rename {hosting/kubernetes => charts}/budibase/templates/worker-service-service.yaml (100%) rename {hosting/kubernetes => charts}/budibase/values.yaml (99%) delete mode 100644 docs/budibase-0.1.0.tgz delete mode 100644 docs/budibase-0.1.1.tgz delete mode 100644 docs/budibase-0.2.0.tgz delete mode 100644 docs/budibase-0.2.1.tgz delete mode 100644 docs/budibase-0.2.2.tgz delete mode 100644 docs/index.html delete mode 100644 docs/index.yaml diff --git a/.github/workflows/release-selfhost.yml b/.github/workflows/release-selfhost.yml index ce2bb1c949..78009501f8 100644 --- a/.github/workflows/release-selfhost.yml +++ b/.github/workflows/release-selfhost.yml @@ -43,11 +43,6 @@ jobs: DOCKER_PASSWORD: ${{ secrets.DOCKER_API_KEY }} BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} - - name: Configure Git - run: | - git config user.name "Budibase Production Bot" - git config user.email "<>" - - uses: azure/setup-helm@v1 id: install @@ -55,10 +50,12 @@ jobs: env: BUDIBASE_RELEASE_VERSION: ${{ steps.previoustag.outputs.tag }} + - name: Configure Git + run: | + git config user.name "Budibase Helm Bot" + git config user.email "<>" + - name: Run chart-releaser - uses: helm/chart-releaser-action@v1.1.0 - with: - charts_dir: docs - branch: helm-repo + uses: helm/chart-releaser-action@v1.2.0 env: - CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" \ No newline at end of file diff --git a/hosting/kubernetes/budibase/.helmignore b/charts/budibase/.helmignore similarity index 100% rename from hosting/kubernetes/budibase/.helmignore rename to charts/budibase/.helmignore diff --git a/hosting/kubernetes/budibase/Chart.yaml b/charts/budibase/Chart.yaml similarity index 94% rename from hosting/kubernetes/budibase/Chart.yaml rename to charts/budibase/Chart.yaml index 0528e56562..602ffbf420 100644 --- a/hosting/kubernetes/budibase/Chart.yaml +++ b/charts/budibase/Chart.yaml @@ -11,8 +11,8 @@ sources: - https://github.com/Budibase/budibase - https://budibase.com type: application -version: 0.2.4 -appVersion: 1.0.6 +version: 0.2.6 +appVersion: 1.0.10 dependencies: - name: couchdb version: 3.3.4 diff --git a/hosting/kubernetes/budibase/README.md b/charts/budibase/README.md similarity index 100% rename from hosting/kubernetes/budibase/README.md rename to charts/budibase/README.md diff --git a/hosting/kubernetes/budibase/charts/couchdb-3.3.4.tgz b/charts/budibase/charts/couchdb-3.3.4.tgz similarity index 100% rename from hosting/kubernetes/budibase/charts/couchdb-3.3.4.tgz rename to charts/budibase/charts/couchdb-3.3.4.tgz diff --git a/hosting/kubernetes/budibase/charts/ingress-nginx-3.35.0.tgz b/charts/budibase/charts/ingress-nginx-3.35.0.tgz similarity index 100% rename from hosting/kubernetes/budibase/charts/ingress-nginx-3.35.0.tgz rename to charts/budibase/charts/ingress-nginx-3.35.0.tgz diff --git a/hosting/kubernetes/budibase/templates/NOTES.txt b/charts/budibase/templates/NOTES.txt similarity index 100% rename from hosting/kubernetes/budibase/templates/NOTES.txt rename to charts/budibase/templates/NOTES.txt diff --git a/hosting/kubernetes/budibase/templates/_helpers.tpl b/charts/budibase/templates/_helpers.tpl similarity index 100% rename from hosting/kubernetes/budibase/templates/_helpers.tpl rename to charts/budibase/templates/_helpers.tpl diff --git a/hosting/kubernetes/budibase/templates/alb-ingress.yaml b/charts/budibase/templates/alb-ingress.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/alb-ingress.yaml rename to charts/budibase/templates/alb-ingress.yaml diff --git a/hosting/kubernetes/budibase/templates/app-service-deployment.yaml b/charts/budibase/templates/app-service-deployment.yaml similarity index 98% rename from hosting/kubernetes/budibase/templates/app-service-deployment.yaml rename to charts/budibase/templates/app-service-deployment.yaml index e75f84e779..8086c0ab20 100644 --- a/hosting/kubernetes/budibase/templates/app-service-deployment.yaml +++ b/charts/budibase/templates/app-service-deployment.yaml @@ -106,7 +106,7 @@ spec: value: {{ .Values.globals.accountPortalApiKey | quote }} - name: COOKIE_DOMAIN value: {{ .Values.globals.cookieDomain | quote }} - image: budibase/apps:{{ .Chart.appVersion }} + image: budibase/apps:{{ .Values.globals.appVersion }} imagePullPolicy: Always name: bbapps ports: diff --git a/hosting/kubernetes/budibase/templates/app-service-service.yaml b/charts/budibase/templates/app-service-service.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/app-service-service.yaml rename to charts/budibase/templates/app-service-service.yaml diff --git a/hosting/kubernetes/budibase/templates/couchdb-backup.yaml b/charts/budibase/templates/couchdb-backup.yaml similarity index 87% rename from hosting/kubernetes/budibase/templates/couchdb-backup.yaml rename to charts/budibase/templates/couchdb-backup.yaml index 8d9c368864..1072046c8c 100644 --- a/hosting/kubernetes/budibase/templates/couchdb-backup.yaml +++ b/charts/budibase/templates/couchdb-backup.yaml @@ -30,9 +30,9 @@ spec: - name: SOURCE value: {{ .Values.services.couchdb.url }} - name: TARGET - value: {{ .Values.services.couchdb.backup.target }} + value: {{ .Values.services.couchdb.backup.target | quote }} - name: RUN_EVERY_SECS - value: {{ .Values.services.couchdb.backup.interval }} + value: {{ .Values.services.couchdb.backup.interval | quote }} - name: VERBOSE value: "true" image: redgeoff/replicate-couchdb-cluster diff --git a/hosting/kubernetes/budibase/templates/hpa.yaml b/charts/budibase/templates/hpa.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/hpa.yaml rename to charts/budibase/templates/hpa.yaml diff --git a/hosting/kubernetes/budibase/templates/ingress.yaml b/charts/budibase/templates/ingress.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/ingress.yaml rename to charts/budibase/templates/ingress.yaml diff --git a/hosting/kubernetes/budibase/templates/minio-data-persistentvolumeclaim.yaml b/charts/budibase/templates/minio-data-persistentvolumeclaim.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/minio-data-persistentvolumeclaim.yaml rename to charts/budibase/templates/minio-data-persistentvolumeclaim.yaml diff --git a/hosting/kubernetes/budibase/templates/minio-service-deployment.yaml b/charts/budibase/templates/minio-service-deployment.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/minio-service-deployment.yaml rename to charts/budibase/templates/minio-service-deployment.yaml diff --git a/hosting/kubernetes/budibase/templates/minio-service-service.yaml b/charts/budibase/templates/minio-service-service.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/minio-service-service.yaml rename to charts/budibase/templates/minio-service-service.yaml diff --git a/hosting/kubernetes/budibase/templates/proxy-service-deployment.yaml b/charts/budibase/templates/proxy-service-deployment.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/proxy-service-deployment.yaml rename to charts/budibase/templates/proxy-service-deployment.yaml diff --git a/hosting/kubernetes/budibase/templates/proxy-service-service.yaml b/charts/budibase/templates/proxy-service-service.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/proxy-service-service.yaml rename to charts/budibase/templates/proxy-service-service.yaml diff --git a/hosting/kubernetes/budibase/templates/redis-data-persistentvolumeclaim.yaml b/charts/budibase/templates/redis-data-persistentvolumeclaim.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/redis-data-persistentvolumeclaim.yaml rename to charts/budibase/templates/redis-data-persistentvolumeclaim.yaml diff --git a/hosting/kubernetes/budibase/templates/redis-service-deployment.yaml b/charts/budibase/templates/redis-service-deployment.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/redis-service-deployment.yaml rename to charts/budibase/templates/redis-service-deployment.yaml diff --git a/hosting/kubernetes/budibase/templates/redis-service-service.yaml b/charts/budibase/templates/redis-service-service.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/redis-service-service.yaml rename to charts/budibase/templates/redis-service-service.yaml diff --git a/hosting/kubernetes/budibase/templates/secrets.yaml b/charts/budibase/templates/secrets.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/secrets.yaml rename to charts/budibase/templates/secrets.yaml diff --git a/hosting/kubernetes/budibase/templates/service.yaml b/charts/budibase/templates/service.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/service.yaml rename to charts/budibase/templates/service.yaml diff --git a/hosting/kubernetes/budibase/templates/serviceaccount.yaml b/charts/budibase/templates/serviceaccount.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/serviceaccount.yaml rename to charts/budibase/templates/serviceaccount.yaml diff --git a/hosting/kubernetes/budibase/templates/tests/test-connection.yaml b/charts/budibase/templates/tests/test-connection.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/tests/test-connection.yaml rename to charts/budibase/templates/tests/test-connection.yaml diff --git a/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml b/charts/budibase/templates/worker-service-deployment.yaml similarity index 98% rename from hosting/kubernetes/budibase/templates/worker-service-deployment.yaml rename to charts/budibase/templates/worker-service-deployment.yaml index d71fc80578..8b6f5564ad 100644 --- a/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml +++ b/charts/budibase/templates/worker-service-deployment.yaml @@ -111,7 +111,7 @@ spec: value: {{ .Values.globals.smtp.from | quote }} - name: APPS_URL value: http://app-service:{{ .Values.services.apps.port }} - image: budibase/worker:{{ .Chart.appVersion }} + image: budibase/worker:{{ .Values.globals.appVersion }} imagePullPolicy: Always name: bbworker ports: diff --git a/hosting/kubernetes/budibase/templates/worker-service-service.yaml b/charts/budibase/templates/worker-service-service.yaml similarity index 100% rename from hosting/kubernetes/budibase/templates/worker-service-service.yaml rename to charts/budibase/templates/worker-service-service.yaml diff --git a/hosting/kubernetes/budibase/values.yaml b/charts/budibase/values.yaml similarity index 99% rename from hosting/kubernetes/budibase/values.yaml rename to charts/budibase/values.yaml index 24197383e2..b634f1581f 100644 --- a/hosting/kubernetes/budibase/values.yaml +++ b/charts/budibase/values.yaml @@ -85,6 +85,7 @@ tolerations: [] affinity: {} globals: + appVersion: "latest" budibaseEnv: PRODUCTION enableAnalytics: true sentryDSN: "" diff --git a/docs/budibase-0.1.0.tgz b/docs/budibase-0.1.0.tgz deleted file mode 100644 index 7873874ab002c1d4bd6622aaa79c2b01e7d2b229..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43708 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 diff --git a/docs/budibase-0.1.1.tgz b/docs/budibase-0.1.1.tgz deleted file mode 100644 index b38527c4a40a10a6f1d5afa8627fc5237a69da21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43391 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%0DQnUs9pIdxY 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 diff --git a/docs/budibase-0.2.1.tgz b/docs/budibase-0.2.1.tgz deleted file mode 100644 index f3423763a5e9f8246b7f0c0789f4b522b205ee8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40795 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 diff --git a/docs/budibase-0.2.2.tgz b/docs/budibase-0.2.2.tgz deleted file mode 100644 index c70754eb990a6b711a3d7b3e7cdbc091d6c7b2f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40807 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%0Dhs{NdkV&Me@L^E$}%r zW&-(F6W5N^ZAit2f~fhm(ibfy5sW9q8ah@(^xw7}l3J~WnyERZniu`N>dOy_zMjTw zURh^?)q9#c7ruUN9hzO#R+)6c*|M27OnA$-S~azRaa67olh0$(sU(?bQY8~G-#DSp zkxxyuoJOg=a>J8#K_kB6DY%syX9c=iI;9Jh9$E~lPlq4fd!5;B1XY-mpPN}p+W4t8 z&VOxyb*@8iz=IUi%qonX{X|pMjaK#KUuNiM?JEuath|({>z!LNvY?vp%))u}>NV+) z>bmKxgWB}KjbO0V%PJhKw=?uq)$cEwPzfE;m@-pGEh-XGi;oua2TDxr08I-~Vns-D=wZ^>?@W z5B4AT^0@p!K` zqk=POqZ%Goss2a2KqjXxvt1T!i!h|ff`Jk?}sfxobnIGzOc{A&=CznOcjn!rfsZF>2)!!yV| zKg42U6VEGQ1K}ibv7~JHdXwkaUv&ykJsB?ffI1;TaKYUy zxnP}s!bjjibbQPARr>$;gCN*Xl3IwmAMARWJY;vZmM}m2BT0&D$SN@pt~T+o1AFu4 z_%L{{WU|o^CyV}lZ_o^iOCfoNI3x2A+phG6fJvz4V7+a!3Jz$cu|M^Y0gpk-lGp}9 zv^iF*oT-olLv3F_U8+lW;}T0;Ot>JmA|~NyL1aP6lq8TN20~wp+C2EdyES|7O@T`( z5^^-=q2+R4JW{NWLhEx*Cy&rar0B)o4hqAB#5^H-w8uJ?T$SC`p~(efbjek1o;f>9 z!Tc<(lYMtl>fPFGxalyRnHhmYPvh2^2^F0SQz{kyeNhAC#fbCP0v50rLtHcqG@*Pk z#J|+0@ES8|(&Ork!BzU&YSI*{jwfp6)jZiek^-kvxV$|TLR9aS)7e(4ZOUo|6+L_rb+cJmGZoO&`jbV5 zeq?x)3y3nninT%OVFqsjHt{Y{P`yBZH|c68SWLdr4Vz%etPKHAXi99VB74r;Qa_s@ zTVH^>nr*&-+&A}v+<;=#IW1{`ugh&nt%QE0KKF_Cvi3tY%^`WhqX{$X&V2A z(M43aw4b^ONr_2D;FDaBW13%XQ>Q9!r5x&!lC{bFN+ z9;ft*plL7KindYs4Vw0&UetSnC`%y0vT&i93y4RGSwNW@36^x25;QCbzJk-L+f$ee z5_v+lI;0Z_2ms&050GxFZi3*PDvsL11TS40(^_QSdU`BiKM2ycFpSV!G%&M}R8S z3@Ox0nMw5?*yRxyU`Jppb(REq^{XUmTjg=L!ZN!&T4f5?@&FWAG8Z_l&sTw~k1ykGbGQtjva_n2Ubh zR6Ibv?G~h%x2XDN@Ts_TfJa&>Rup>Z5jIi^>n~8b$XE6{~8eol% zH4ahypk+BBNIhA1IclcbZOd`urM|d&=I4}tY?IPrW)I$zs@{7>)3#mK283s})xI$y zz2wN`?sSpz4L4r0gcRva&2p6@RM)H7S8ldt)%>_j6=YiZmh+UrAa!D1)zkHa=+Rpp z5yI&7N2eH4XU1-a);>h-5Z2ckL=5_ioA#=*Q9yaUE}mGOwO-AxcV*r(y&utjk|^qI zQ}ronyOCVpODylz)0=&bB@QeRvof3^*k*i9oB)|f`rX@| zcbZYI2#c8TYeQ0S{zx>a0x*6qDml;fWwI79e^rXHq>seqoT-DSk+;WMLEi9GRGKOUT7(o; zl}7BcIs$bb-|N!^o=5L>a$vREqq2a86CyE9*JHuVKpM}N9Ei`@&~=sCf;lwAca6#Z zIH!|a)M6=lXl18ljTW`$YjMHV(0MJ+>j=LT#-?LMdy7`^SO-Sui?MXn+fhI2t!l5< zVr7}t4x^tgc2$e*24zi#?uy4e<>IPgueGwpMPvVndbb#LyH(me)4Ber+gzmPd1;fD zcP$ue9#sp^j7}fE-l*Grt>$6ePp|PztlMHOX7GZQSsN{TEkX#`g`);xHzYSW%TuEB zX0L3~^EaJq_jZ`V4@~615uE%~P)Q(}>MdLJ4PBgo zU`ds|r}{@ZB))`PYjNJoxn*S(p-fZKy1>mAt)=2JY3p|LxNO&aUW=ZI<{h=@jJ58J z7Pdqv`oc5Qh%U7NQ`|~i_kt5GK84QQ<2EpQL6qk4BXFK;!nh!d*ZX>lwfz4pT5Ju{ z`@RX|XUt>6)4WLwzo12}uenPYoAFTIqucLCW7@qOQ+)Weev7S6b6+&-q`X|d_gVn^NoY#8f)Efp=iO^fZmU|(`(R=6se9e$g& zUhS>){+4UK%xB4)$6KuR3g;y=>MvNC*2TU>i^0YQ`i_ufh~ukGbSy+k#HKdbqr*~C zHV#bM%oL4GIYb4zCTYww$S};y0=+E-Dc-&9zeBu0Zxb>lDbLlLt#>HH6z+`S_9vRN z#hk!(;oF1PCl_bO-@dsxKKcIL+wFH+%>ehfM!$eKLlb_j?;oXB)srNEB2)nmcU_R* zA3@r|Y79<&oL>==Yh5H2C@=WWB$g36W=KqUAvc3k5cEBjKa@i^83_l&e%(02Y$hkr z1w)5Cz9PjVH5)@grMXW&;Vf*7@la0)m|R{EoK+Ld3$T}a`=1O;T;QMa48MD9ujtI( zT+Fj>_4x@D7g)xV{HC?6`DO~{m|@A=3+ivW;Lmv?T1%-9rY$nWLQ=xQyeN|i&oa{9 z?tD4ZfFwC)Lee~4QPC@@tKtkx+zz1rq>CL)XvWBFXREcO`>G3PSjwNXnBj6fk({+w zX_T=QDI@tLSx`fN)J69boE>5|ZY^p*npO)rOG(k*sQ#u4UXdwf*C{Sri@L97UCE5F zU)nc-`KAk=QkGM;-H%#}+OJQ7;BEii!1~6j!yV!xp3o@~k-1am#kiaCjzJ z7@`}z-TIum37K|-x7(&_bNQj7v+f_JeAv~N+g%^2L|GEN-SL`8ch64 zh(nuj__sEl|5H4R{6AvawRb|Hr`i6jK32v5?Dw9|<^Ox||G1y0cGWnjjDWOzS6R|z zfI6$}06Pz7@sIi}IsZmF{(`{o=2>_>|4m66 zB%W~88FAkE8xpA!R(92UM*jBb-2*1N-LvTY`zG&S+Q+K%-+TJBdH%Qdb|23FeLT*M z!SiNr=B3fewOd0G{MO(S}X+(Up@j8+PMvyxTodtz4#j z%p)-!cXxZe{3fiwi~xf`e7|xw4z9>d5nM3{LYwO`2$6Ljc<$gZ?DWN9UTD*6KrS`T$i8ZazfIa6e5y&8f-uz+tMJ| zKsF>*^)9H$NtMo`dKXy1*9fy?Dx?xjubzo$92XI-3CHy*sI`L728?8g<0~E7z0NosgpDcBsJBZKJYC(UfB2jOl{%X{SMO>@l5`f}pPnl@n5YjpDKZmu_q1ZwJuT zjq<{8Ys8BTOZC$8Th&fv!)1M z4FvtgOcMMG4M+jfT<XKhjKzf)naH`1R$&^C?uApK-XBHVT#!m8j={R(YZJQ zjJr5n5u!dn?4pS;7p)pJZcT6?YAQB6SS%QlM zBJe_xtuhxV;Y5I?j1r+{I=d7vS&bGfcoNPYNtDqWG$S%X z2RdX%Lh^#dz?5-SZ8=W!(Hocvb+@*kZ}p&CDo{p>F-Zc1YUimMxhA+U|C+iz>j8|4 zHo@mZ?Jbsg(bz0LSG6h%XDst<ha#ZjVf`k;j98XLPgBlJ{y_s5IeLpa|0+?Tj z$zVgFK+GlQIj8v)MZI;;$6gzb*Y?j`{fl;t6J@TZkR)aUDP;4_3)GML&l+HznR*MC z!YrM)^s4XE$`KC&5vG(~={O^Xf;p+civxv|glhb5TB)CE7dERFYL7w>+zSp*_CvcR6hV5B#e`&|(o9XHlQRjM2q6OZY$v1oN#IFrpy$LrlNX+wbjHaq8> z#ATsmhy%{R7dcnhn;Ox{!)-ZFgxxGT*l9vNQ_bV3luXrvxhdBSh{WPbbV2p6*vY~g z;dI4J#4>e1AzmXi$hbmDoarUkkz*2rSal^0n1amwb_2G*_2^ND5gEn2Ad%o1zKJp$P>ScVXSrJx#nWH-3kCw9A^BI6CK#Gdc|`|t!#8=zs`meFU@I>iB9XH+Bd zR6?!?VTx;EN_DISCqQl+8wx$?AX(b6KoNK2=xSWsy$%c@Vh&Ut=fliw0&<*=Lvams z55j5AQ8u;5s8I5bIv#3+8j@uQWaCVNr~|v*O{f>5$~xcc7VL0<;iXJ%Yg_eIDWswn ze|H+;Z@Pas#V;XPjVWmkjGQ>x+zLt?=q1gl_KgQ^vh95y1;Xcr$i;!6n%3u7uO1x7 zS`20=w#IgH%qr?4pP5x}Tz7TB;uX$M?j8^s=a%&l;hab#V-pnp^Fgp%VY#p+wAw-^z6g>N!-08$zgB|2RZ2)~!`YX(;j-xL0lO0tCx zO)Oo&dk)zSQ$CI|-3D+_TfP4CZhx!Wf7TUr%;<>5n90yw#e|ZF+KZ2}afn$G0!j_X zgr};PF!6dZ&A!x-{XaCmwbNy62+vDFbqjtG{;gHYzAa>zZh$5zfmy+p%7{4RUM#C1Ea(Rks6_NK;dE= z@-|yFNW!MH;0(;mr?{Xx(0~qeVQU|;sTiQQ?_hzdH--$^+m-KLzcz0gdBir1DN8eh z*oN~Z07CB9M=t8Tt`s^3%<#CFWSpH7(9u-^;_Q*oiF&>Fw^fgLVUAS?wl~{;bHf{M zgrt#}baS4j=O+5i0CoP8Oi3|Ad%euzaL4z2J_P9;E95!{aW%&>p430df{w?e7$~MF z4Jgx~s z{_M=Jq5;e(J0m!8IfN8&Q%)0fMYUE|adK8&b4`E=SIo!Eg4bwZfO>%yGdKjks}hBP z@S+2cnCL}DM`bt)hzp1*lbS=T-vqQUhp`d{b1)wAwK`ZR{1xUr0b}m2qfB0U5_{Ne zs*KJRnRV5X$>V;shd4`TPaI;jsZSJ2#7xrAIuzgOY;4$80g2D|6L=|CY~qd$q|P=n+CW7$ zbv#`N3dbAJZlY^K#}lbIK*Q4NtP%atX1Cl>wf32$`!2bQevPVz4$4u))jt)1lLD5xuQK)qUh?o**ZASqxy2V zyp|iDJ6E--j@jHt8z-;%K5X2cuL*z+>+_oe;evnO6%=!#v3?}adCJE#U^D6i#|2CiC1k?Tl4n2bjg-mzTs}O-ImO7`}{6jblnx!rm}}B^4v8S(ih8!lk90uHeG+1E=Sumnz9F@#2l!xJD1D zQH7gj)lmk4jDBC>n4J1P$GXThrl8-J9F6FdC~l~fq>7ZEsF{OXTF#hOi#om7(&h(f zyVvs>DYJFv^=wE}c*mZv+#mj>7*9wjtnS$DfO^t6HHYz{~rox5S3cKmuE)(uPJ8 zf>Sv;n2`AD6w8ULpcAEay88Pso$3Rm2<`W_c6Z!6#o8*t>W7PqQ}ePlx96_;*htf9 zUpI4QZkhM<`8W-W-;#|~wbjU#jOG)e-eNiyOve0Fv`oZ;Y3OTatuYJcZF3Sdu4$iw zMHA3Wi~H|21KUOrRp487mxdd~YFLP{Bj zt5wrM%dat4K`T8=S;9UdH*s1DMRGxHa77Xf;SoiQ6|_oIx zmRfjyR+KFCOsBgOUeI3@j!Qu;U>hgh4RgI3j(8CoBOkxJ(CCp)&0*8xb+zIKHedIs zm5i{TFU{`0td8xa{*V`3p|eZ7A1)=AaF=RWahO-XRSm}eloWVOz(2_Qh`raaoz#X} zx_c&hbMvVEq<4+)I?z$CBQfbt`#8-fxUV^Zs)#Y}5#FZkM>l9H&{lK|s zdBHOxC!`cXC1zLoS1Tz{>m~Q~wWo`M@%O4emze#37%4J((YQG z6sP2nUo&saLPBmsjiY{|EaBHR*~1mIcl=)6IwELD*sv9=cTK+LS+54woBV!Y+FAnB zo|UwY;EbV+W;jiGtX+GOg6AP+Hpz&~&8W*5p?nc>&uCn5!AG)d8+8^t(AO*T)-(96 zEYgkbn6)_%kh#8eL}UJ1(xsDiZ@ud`vH1GE^_~%-#zhF&w%DMCwpAkn3dmtu*$xna zFl3yHC(XMTd)KOCU0V*!Hgya6)i%`KuwfHJnhXD$-@ZRS)%d{-Ldllj8s9845*V!a z`W#TvnQ=t3RrRd>0G3>wSa=WQF7fWlcnSZ#i^)fO!pGfyu0E41iJ4o!W9h*)tOSW;vCuZ{Mj*G z=pk7nPPZYPF@|;zK%EoLNJnusoddAxJwELqIzocT$oH!Q1AlvmE4ir`nMT)EAGk3X z3rfny_FZ>lN(;pXsGS0LAm&4u7yO12vwM)xyslIIdSlb~&D7e@`qC6=`9KzW%*qT> z&cQF8#pQ|93;9Mlo(Ocp6LPA`Q^Ee<|M|btb(L(IzP-x+i2@vAlFUMfkd8!7Gkj>DYLA7B*yJNZ=W@jrQLQY7ijk-g(>kJev z(*T!==vHQvmRmfXuc7{1uLJ*>T0lEqdgtG+w*F#4GB26=>8ToZC)-=SXT91xMY^`M z@u<=4SPL0VkDm3O^;D5(y=U;Y(X?&YWeGQJy5Fj~iqR^Q+zPxNMH4zfFl$n_qAw?Gx8*|?fKHU!rm?&ncLd+CP7Ni2rBak{fGtwUt1{aqhJ&y zx>Gy$7N)n=9A+U_x8Kw*7m8JrCb>QOju*A{uFmA4XUx-!;D6m-WLjEHBJK|HuSEU7 z1@d2s{=tCdfIIhKBiS}gf9&TKW*Rw9qIpYEkHJbw##x%+JcJ-_w&J4qilwum+pPtF zmQk}=XoAvMS<<-Lfs8uPG34r17WC1m?@F=pBB%zvXe;X3de~YeS;lrzHNQ+4;#BaI zk0lo}Aw}b(GbnrU)#KCGhnFY&ua3@7_YaPq%r)-0V_MS&Hm$*U%UxZytE<{0^P}Hm+oAD6YB?$yrp(h_*SG2-h<$Kx3+gf`+W@p@ zd5w7_SuSUXw6ORcdOc=Tw&9iP-KLQ@z)GoP)@}(>`sBHfb-J3*2(R__ z0=w5SVXo}Gc#@;vg*Q2B^(aTyt9;szcB8&~x6}n3u+pjK+mt|7P!3)*+Q|w$F%5P! z^RCxd!T2*Dx+d(sqNxsUO*I`)>s6QjP`kpfUeDV=qPk=HR!^H97`6Yv!wc2T=7#oG zqC(4>I?XK`Lw-!{-RfTpDxB(DNjq=ebk?TWzRgjs)U%4)6>)*p+3Bcr(OFPPL)3x6 zRN_IKR%=bYmXKJAklcV@nv){Hd#t9}xet%TX%|?{0r?SZnB*%mIrJJ=0y4i zHh#q!b!H}u1U|=IysT>@kuk9bC8hO|1h*<#P%_n&|7SkbXKqyREOPaJ=0j+0fI96q zbr$%VFHiGb%Ng6S0^|Vc9oga$0;a#!5V$Rg(^NZ6OFxrlb@egdZ*^CKFq_qAf^O5l z_Ho+>O*rF)olUQf)}Gi8ZbxWza7JLFDI0s6tvX(3WlBDO9owe4DAU@;L}0{uF(E=* zqW@e9X~j9AOK+lF=fcJb&cTx_Q#%4wVT_POcuj=}r$p^Z(6eiweZ?h#2VFI<0Y7LLnzUhnFyVSE_LrzH~$dnYI zhKvg;X^hiaftG7BTeB9}Y={%zUvEUmD6GZdL6FdGG(QIji89Nu;wVaH$gEcP=p1ma zRdWF3H!{2$5bARh3*SM)y)^Hus6* z1|CnikWWwuEb!wePtf1dUT^1F?>Al;AyS{+ek`77?nDnm5zti4uAC5tFuEq>YSHQx zgpq4q57;1&1+NTP5`N9p1T0*H3(j9*Hrws>M9cK|dp-0udJNZK^(+^P?o=vtk4CDRI$)Vvy( znhfhZpY0wJzJ;>nXuH?jtWx#?>R#IdBcxe$o3q*AkBx#@xo z0RFN76Es%vD%o(R*k>?rR~RU=7WBq{icU#7LlR#p0zSoHHsx{xjR=-yVcgdbocFVN zZ7i~RaYc$yOiHP+Txe7sFuPjtqyla2^n|ZJ==aP(!C=;`l97E1axQu9_?jCMd-24L z3dp?xZS6It(g6?zizGM*cE{5c(l&wZT(Geb6l6*T7S zY*Wb~Uh?$Ti^9n2uE$2n~`Qq4ebKcMO zY>CD~1@4DE*qE=yz@_A%hCZ)Vz2H}bxjO4RRl`24p9pImTz9q(oWisB%o+flIp+oK zm~Q+Uw3~t7GOA9`I#+OTgKqCu2$)?uWwiI+b{IONb>rdCt+3OaIe(kcH(F$DzP-%Y ze34msQ(e5stbQJny~U8U0(Pg-HAg)W#n(?sBY$OZ1$~@zctz4(l-7ZH5>m`<-h1Av^fF4yPMFK75d!k z&^h0Rr5A$h8;oxmj^=LN9cs$_R^y$|w<>K;>O%GV@7S;uHC67$f~@5xaIqv|Oqb8T z-9JEBD7w0yuTd@NtBdzq3~{VOrt0{NYqeyfE$;0Fsy<|Ot8;!jXqII_wOCn{WYd&G z|9{}`PkB<&B+W}#XeiiNi%@G*D{veYrm4`p3p@g1IQ14`X`YX5jK$+&*Wh3w(728D zhl>Kw)V^-!68D1&<^`RqIk7^G>K~lOaVqBGq~Dt7RANd9-G`>5&`D206D-)Jm5GE7 z8FT`H6*kbt!KpiSih639EyuJ_Yqdr+casdbwh`@?s+bRr>#! zJu7i0)cfIR-Tv-z95?Y9C-I8YPUq&=RZ}D^v8D(P0m*jL+|Pa%UL?RbDMfZtVy)@K z6doHJz%Vigap(7m!lV zT$&inA+xPBOC7X3t=8wy25_z=hs0F-VG#g+fA{{?>F*cs zKYaXANo!Zw6YYmW0$mLA`uyQ3WgZrBfnh{BvFJ!i?}IO2c$$9s4$DB`4~#tDB+DP$ zpF7xxR)@X0_|*F?1m{be_U3q&yS5={YpbVDLuNi{gAVxe<&XpK*>WCrF^W@AdRY^v zI2WmxUmdIconkcvo`HRKQ3q&l7>hyd5V&GnfZrK*LLH1wK>YEg&EB2z+^D}e*dg-q z><jX|It=X{YsX5t8(l1szc$GAlIc$yU4X*0CWlZtHBYCmDzewb3^C zN@O?O&C=n&&UR)|E3ETl%Uu%W|UGQB}DHoqgV!WNLVNX9z0fb-O}FUr@I2ggLkop9g8O)NM8gs696ZX zQehWU3%>}LGoE{zl4x-c$~@0n@=kY&Fqwhd+uM$OJY=EB?SUa&xdWy<4yzw%7xUuu44)sQ*44~J`nWUD6{aXH7lVV@9Y7TF(76U5&o6-^4avg(5t6THeE=Y; zKLf9XVbG;@axqY6JWZSO-F{p zPwdQ1v;}$Bi5=)AAWhvXQ3K-Qjzt&b|KW->fS!eHXfr7PE3Cq<7UETI;61IuO?~=C zXE+iPQ_2>Xsg%BaX&vmkh#mm||2qEg?(E&`8MsOgeH97nQHGZP8Q-!X)?--CNYp-n z6u;~uLmeoVSL&*h>~WW~R;b`Z>qp;vDXaghSr)5~k+1*vd*f*=|L34T8ul9fe;?)Z z=k7DGaaJ?#vf;RplE5D+4L7YNoPlRurlNJ9wNCGRO5$a%=TQ1!Il^0_o*{zMr3-FG zREOObb$EhtCXPwcswV3Me*qG#Jqt{R?4Qo+a(#X6+<~?cbw()#{Wpj5gx_Frhav_i z1zKb&1}5eSxBe=Y-Y0`%kMS? z&QR0hz37@l2&?wBGJx?dr1i$ft+G?H{#|khDR#d{wvkem;|wG|%}}rvt@+oxK!DV*N|+jdrO{ilmM>I^$kq zIxd01ZDdSRXK#CaWJ~WM5xdF3+{7d-Ruw5w$<@ehmA5zwJrh$cN7OQ@+7>GqK~SUb z%!U2H-fzh}g#h`1!`O`PybjRXXR^gb+`lV@Q6zl8I5q&a)w@ie#VREZ#2w1a1flD^c8H{T8k?bG(t+}Xa?pl%1bQs{OTM5jwmAzrsO9mE z2!_->iMe3gmVgz)goUAn@<+;)myXb`T@w=^t}RkFHa-da{%9_KF}!~j~n~nK8iRx zre~+^^F-LIj=Ui%RhjLMunCv$q8p%KZdx64O;{LwegPWZQMUNakhtakfLz#8FNcam zLj4Zi2q9~w+-tU_1W#dZ&ww95L-;#Ar~h92i@>zub01+6{XqW^za)Dx_={uV=-i%( zhq(q1?IiNAKWBfjCsvT>idJ82vvosD@C z!}`J{SzRRY_)*C`!P{&oKVpv+#TeRCEq;f$fx%p9vVbJ~x5%a+qv%N~L2fEGZ54R% z=}E-9pZpdB6MT9Smn9u2t8uUxAfKMBF^siljsVf>u*YlV&P?=NQ!bOi)DaL$ZK?;9 z__g}h79HuFM*nBx{O_9n&mGTpyoJUFis=6+?*BRL4~Gr?-%I&s=>JQ;u~OJT!v}W2 z2apRzh*n8Ta~3G{+)(-R7F-#xS-?rbh@?}9s+B4ZAvH;(;y04+-IZ<_d+77|waZTE zKm8ZChHzJ&m=aJx|Hq@zFfRX32GfTA@1r~*{hzbF6Vm$sgXTMt@x@MTl{oT@R@P+% z-!i%9{*~dif@(rLzBm&rggb9c4BB#;M5Zl1;sH3Of697lLymxA;i|YxnA2$JiCY7Y@ki1TEGh4&(;bK__Z>rE4C=%~-w>kYTifIc zCt8bolf4Mf{CTHW%BB}WA}$7+U55hSWDXRm}`GQNDFm{z{94?_LqKZ%FV zU%qtd-?D$jb~&TpiMbG8oon#4V>=7TLOOo=0{-{s&*JYdUx3oC9h<6#C~XyF=%#AB zg4?m9&`)~jGM__KjN}UNG!09H*}HS8`ddzd2q2OqngNmf<-PY44}K(mPTus@)*z}A zKs9a=MR2_0Ph|`zUpyjpTR=X`jJ8>+&P`F1jg0TTTcw05%5jOlg zsen7v|Jc6-Ml0%nQ2qNJ?S0?90w^~@qyIJf-{aN)qFov- zZlnI~QT>ZA09Te|7N+gBrOJ951ISpd3A;l7QO(*BRoa;{r;aIt#tP<@@u)tDc`dn_ zj_^iRY*fWYReaoKC;Fd{{WQNnSqlCChVl2mlfh`x=zsetd({7mow>3@QRO;S9VS#u z5n)uuI^hat!X3SFDg1h>WpUmE0Io52G~r%$JPxn$e_NS%JokdkbF*?h87VnfyKn~H zt}*#Q$uNtJ&4a1D3XrervfQ8K`24)3()zSc1b<*blFuD)eW%u9HIBV|`s>>FUATfC zFU5Nzk*DgpOfR${)yCsF;azF1z5F6OxZDsIz4Iu78Mr96p#ee#r zwX-o@nf5srOg>@J;-3>S^A-Ooxs75?qM-V`@O-k#dM6)Fk3XJjpMJi0rG84-(s(T~ zU&t+Ln$Jb~yKCK5h*<^VaO+x+7B#sY|`Umi(pRM3n$eijoO!5{BC|_iUh>$g5I-z zB=Xk_=>gd=`b%X021S=*u7jgnF_ws`m2a70%aCV{;T1gH+EH=BVQZ|_Py!*b_8A%9 z5&*Qbt^+k@P!+}y->LVEmG3Qi)~=$9%arxX7%K`!6%C(|Fx%ijzMUBTBMUZN7TF1K z*@%D}=%sH}?Zs^5LA|fZcX@KQG{{8ku&lXmH89I^RSWfxTUe;U|8s77(@UZKzaRJi z98SiK{bw)bVfcUAo$mg{fc?k3s(huHl?O2`fORLK!u?I}G@DYsl&1et9+FTDHcZ_{mjVFV+|7U;N(Eq)ZJj07E(*0%M+@6Hq%DbiH1=i*W%IaojYmEt7(XDHU zy<76Gn9Z)ptQ4Xwn$qA=li97#KT8W)OaY4Izy5F(KmU`#pgI5hDB}F1AT_Cxp7t{@ z`{{Q`BG~Nf5Q&^*v2l#@TtL|rC0;*FEFh>#m>E37OeB{_ljF1dKP&`jnE}Z6XdC}K zl&$DLv2x#i%2Fi%P5W{AZ!~G%|Lmv4NENaC$4ttz2`k--TR2z5o5x_(4Ad35392uBsi%jVXXOyh4Lhwu5i+^s(Ip8?0v93(qW-N&{m?tef6TFR zybsW{?+cvBW7UeI?dDjmO9aGK*0MB@%j!4ccbPmc8ZG8UUN?Ad-cBnYL^nn_3XpoP z(T+I%$ZL`cTWtDeLigGpKG6gX0K!iNdp2rXCOo6<;r!<+VTH#Mxi{|;XZyIu72_9Y zh~QB~I}!FW)e-j|TSVPvsi88<&ptV5r5zk^yv<4^rUroc6irG{BmTXBAf@zYL~L60 zk@gx%#I4OCRz;*LFHCg$77APFTd+uA`5VTI&Wj73y}4ZH8d~?38$(w3xqv=K&7&RO zAH;`FOerl&b(gUyLo%!clS!F}c-!~Vv~Hkh>*wGgEF)K3zIC%LCnWwa)X0B!?81hX3H99uhQCwt4cXR zMh~J6V-{(BgeKWKtCpu`WGoJ`{4_9#7Mzi7C?l_JO1t>ZC<<^ z!$USS9MO^CFvn7g>WtHnI`}pOCOgzY3e3r{7eCHQM-N8;#~5@>h%mp|KwY2fl74HkaG@J+JJ05;xjIZ#XM z_3(}a=5eq{@G9C%_Zc|0Ea($(1Me{tQ_-4m`59A1hY7AMMl>)*L=o_;o6?hW4d8#k z)0n*d7jU6>2nK2RiOdR#&V)pp)8xlUwohxHhOxxQ%q#`8Sh3L6da(oKC%?+@)_O5* zJFV)w(~rNuJbU-*_si1{znsNVZxkj&;8L`f`al~qGv0SzcUi6U-U~B{#3sArBqF&( z?>UJH$R%o=Z@qO^6t7ltKXcH}U;TdZ;q?6d@vAhrXP~>rLDxl=>2_UbPXD(OJ$5jv z&j1)%IQ2HEWFcFTikf99Qq=`6Vg_XGUj%3#JIv}Y1qzo)~C+FiSRdr9`Nmsb* z;pyjBj}=eSOqy=@=Uy)#g=MP~<_uwm;4BXM3rjQd7Og#!>a3G_0%MxSM(HQc7cyM7 z^1w~3^osV(g`h4ZR#*2#iQ$uP3vM2jRSXVctR`i6?>+ZEmI7>Vgo-KjF__e;Mk1G@ z#pCW*nniL)R2Rv#=9T21>L?O)Wb@Ky_yV+@gf}&@8|wmmDecN! z-xfe|<~bw{5=Z-9fSk0Rwz-c>HTNkWvp8}}yV7HBojGx584|b5gjg-(VGf15zNVW% z;Xd+9kzrB7+q3Gy%rOh=G3_Qv=99j8pIw#m#94Qb*cw9Ptj{MtJNpP!kRk^lE_knsN=4u_5Z_dZHl|L<_k_w4{44%~QvHy+@-@BmjX zUDKwvCJ0-m>v#*DlLpXt9m~v=?ZodVRLDvoVvm03SbChd3fX7lb>4WLgE-A!jfMw6l<@F(Z zFsJf%9Oic8RNgq1KVqly#*4f0;%>aS8!v9qcyWIhUfj{QaKX>EL z-S~4qMm#+xr>@4IyYc64{J9%{?#7?H0FuU^yYc64{JD#0XyeZvmBydD@#p@wN)7+- zrEiwc{ro?Q^FItG{c+6ydoUd|@xS*{@^56*ykVd2+E-k07SD9cy@9r=QbOHhJc6>j z8O$Lu2f};&4GNq;sVMATAp2NUgMsEs9&;zn^I}rbk#L`mIewGCSzWHLubn&4{%@~c z;9dK;@*!^Pb{_hDQ*3`Ug9RkvT}hg&KmDF?_t%(y4M3SEa=y>Dx}HjP(cZkP)IO>% z+H*5&l|4lms@}pC3hsX>dU%U>OnZ~x z_z00`z&ldL3V$&-FfbQT`H5p8W%E{>-pR$!73QW-O`DnJuOGpzq+}>%kd(I{gGBG? z|9l9+r3U{ORhSD|DM6qp|I=ukc>gsSH~fDuMdANXFnfuOIuJ{*lpZ zgU*TK)6n_ndJY8%@4R-1_~#*bTHs44k91^*R``Az02Rjvv4>$n>6%) zFC}09)6}l7r1%|xB_TeZb-QddyzJV@!d+d(OQ%MxK~yaw(U(;5u;0)BfYw948{S5J z$)>CvP09?ndCHsLS*gdpF(ohZ=`68gZT2B#wx;VZ&3;>AI*K$qR5U+X>(K&h|0jV^3ORB(_F3>B+hG&1Nd&!L)6MGDy=s&on32 z@2pt4tPC(CNW8N}fYv@kt>SE+!(tO{$qcq{vV^!V3P3v z7>^tJzmJka|CMk#JaS1S_QRD=?$bTD984T2frzAbaUP=s^Nb`mp^;hyoQ%iRH4t?#1t~rI6^sB(JYV@f5L0e_}lGP-iu)I zWZ?iD(<*@SbKy41Zs2jJ6>}psz?0B_@`?Py_S7pU;2#bQ@Wc<$AJ8Ju4(o95#i)jj zZoOMGu#Yd!p5&l5;f7w_bv=fu%%E6mv(k@^>QVsO=DFs9{+P+2dRWR+%$0c; z`x@Uf!lqhsvX#J&y}sNn+}dK6eSmqOJh+U8F8R1p!c?MqDF_REgbzSiL3#)mf}Q__ zGG_wW4P#R&`Ihn^`F2uSYUK@HxX|KTrQyOSi3iCih_!|bDJb2#XBQ_C`DA{aw3 ziqOEx8TbJIvvvXq$Pz|x9sxnLW*Ar_K!`--nUPj5r_R8Ww`)v3&|cpm?*l@NPU5xi zyKn_PV!E$GQ8?Lz(^Q77&lp?y#)h|jn8E2PD?tWGd%S}-ztWp$#^^* zw*a`tY}EY@Dqqu4B>d#K5Z_}0R}tzlJa@eHody&G=-9h|^4KKv{gfK=e}G)L%lrS~ zXfll7|M&Zi{eLed#$|%JX?3gsQXM%i# z0gN%2zN6Ao`l;R4JXDom!oGQsh7Ann%C8GZs&^U2l*8dCAKB3#TuhGshMw&s$0Ioq z@PE4wj{abA;i>~CBj4?AEO@;E{aPnEbSGa*0M>XtG zoOy=)80F5k+6a9qf`#|<9;#gr7oRC;l^jPFCdE4pQ zo&=p%0$;wg^DbHAtL`GxerdXN~uB4114=N zwPma9XH0tia|NgE!^5HnJUUf`;NAu<}KpA-00cEqOLSt=c+M-S!iix=KR+L}p_12?tAUG`Lw7>2>2Y3}Z8i!_df7t$m%a?^AWzJ>TysCc;OBF z&8Bp}>55HO28cY_G(M#Ge?5hVDvzpNSJk9aPj(57D!pB*X0?Un8y`hVua!jKtWHv8 z-$yR)ZXy2(-_ot+zrkc0fB!Kaj2r*2y_7m$#ygP&lilw?CM?(K3G)<|F6rWlDYiU)}}0fd5a%3H#4*()fSxr<660SK|7+xuI02`Jugb2!iY;c>Hkc~5mtv?eWb(sr#1D@zlh|x{rMk`CW-SuXx@M9r{ur?s1W~C?25Ny zSJaIEd8zfXxA>ni;OoZ!%Pt|;1*3DrMzAnSE_;S~t+MjVLwGw*FuJ!C;v1|LQmX|NAL1 z`XHA1C12%CDNZKtO(gBztNIt)lO<%t*z~^XWE%0=e@-UQj!ic$lM5RwNXv5^YaFB` zK?=!q05=ZZ8E+g+P;h_ltQ_5*omN3`7eQhK8kPN%5RhUJ`N%#_x(F1y3+DHdFYfRG zTy2?aFZ5B=W95xr3OjM3G*xiVY?caW3>We&B!F>N<^o=Flp|B|*uiPpud zQh`VZwcaJ;uNo7j?(W|fUx zDN}-xzAHgmc&`}9Y<<;zDYgZB>CZ72Kp$Z$I^I*}Lsvxk!afL*ng6tKFkwG*>EE({ zIcej|ml^#|%!T;sT!W__+gU(NSiE}hzdwH#e}DM`ly>ddv@{%Q`#HtsAZ^+mKdc)+ znK^v;js)g$u)zA*X0T9JugrB*xqf+1-Dlv~vY=1E4ZO!;Bx2Sl1}NZ5%wp>T6Z7xj zSvRF8o_g_V%w6j*;6m?EW=D^T0SqH?(WR__66!6z$&ZPs;JGW9@-eku{Ag-DTZtq9 zQLzK$$G;ii`21Y^7R7}w+(Kd1`1}GT3UtYCMD2J_*-`(Cdd+H?fHfmnb0O5J?W!H6 zQ*RU7^3dCqptVush{W~>g*(S}Hqe6@Uj%3l^_{RJ#D5J*e0%sNSdS!)*W zlQ=7g)}(T$db@b9cx_n_Bb>OIrL;Cwe*OP|e7 z_g1Xy9c`{yue;k_v5t4Sy<%PG?=R)Kge)npbFx@!x{>PJD9xX!6gmHeC7F3kRnr*O zH_9)m3B3xtt3c@UAq`{a#!qk!hUz9I>iBh&KN;TJx@@dgIw0xE;d!t3i8@2Up*Tew2O{VsuDu^#Kg z-|*hQQK`%SePr7X4%R;1O7pe7fZ2`!1^mC?PsIP8_NGn#_q~+J|NH5JfTv|HfByoG zM-D;%FtI-SivE|KNvuFajJ<Xo;6p= zk89|OZW%X-65;Yxwqbf*=8(m53fr#&V%d6*DBH~yl;$ApCYpzV1o0n*K3+R=k z@iN)oTa)Kzmf7OjA7P^SR+Rmc{Zq*g-*BGXQkVW$NdjC*|NH$o{htmS``=zl3jJ4e zz-`SFzKJBl)rI^_=2APOFei(TDk*0+1D9CcQ({hu-@F8!4}Fln(XtKwFPj9ki2e_T ziTrPa$)utG`zVi;{y#_((S5UlJ!TY*bdeop7Omoz(IgsuyrnMvuMz~d=>C7)pEmiQ zAE?xO|5rZZdpez{9OJ!2HxC-s{b8>O5>Z(*(3KIHHKTT^=&WVhWPpVA>~S+|E1xZfw?mHElc_2 z4<*k3a2&V)52nK={>NTQ(&)RqpzEA>fY~+M)}h&cs3n^J5I^)127Af&XUCUsNE>TH znUa70J4@)UoP~!1xWyPn=YKqi#sBF~2hI84PdNY=CZTE)1_S}V)ZlgrJuqK8uI+dW z;G5Qsxq!ISIshM+4rW*WEc!WKLe~Wg7tOhEn&T~=g8;fFaW;@WG*!Nvp4~bC9$fI( z;7|PkUORWt=H%yp9(KTc&%Fo8V=XC2z=r{F9S?R|omZE?UlJ6+)&V#{s}=IVFDIA4 zb^_e$EF98h|K;GfI`cn+F8i(v|vl;*54#NZQ#E7K#61vXp?al8c|Y1ZvxxZ1#=gM!6jr`0+*H~_=WaMbCwS_b$u z9gHWxfeJ8n{k7|MX)|za+mS2}t{v#w!0`ZCLgh2IkPq$fMmtm=a0tp!g3_Oi>VVRp zjKI&nO;r;1nIe7D?+kjKemKS;9HT$2HAa8RrmLD!uTcQrTpWjE^usZR^~Mpayv`)aL*BOoJ@1pKR zN6hp^EtsY+4h0FafolKb@p~vrWUya3?pPmpJgqhEc*+;V6#GM2kv#P}gkq#a(L1WQ zB1aqw;qgeJh#4tB6lpUYdswhaBW0Ba8k|SHIwy-Z6L5yB!re00j9Q!WM89&buN`Q- zfv&qUJ-{?FNMOLZiULNz&MBhJ4#BbOqFc%!=#lo;D;PLdM42%?)l_Q%OrQzT(AUr~ zJsQ>-e|j|JXb{s?=_Wzo(lT9Wzh@Wh%2<4kek)K&WE3*6L1=#)ooG)2cEht6{-_ETG3j ztqDFjj@Te)i3WIuSnx|>fc)p_t7D25%j7%dl?hkKyMzRHS_b&Zx#Kl91A5?Cq#5KX zJ!-pUSc}|FhrPoXP;V}d+2PU6dopaNKx8P+^j{R5^I>$(`$rnclcQSnXmWHU4;ZIN z2D>tpPS*^dp)Ci*-3;%Q@n6*1^ph9;LvTiwDW*RLjA5f|exM_25>C2^T@4fjP53UM zE6+%SA*9X#n3lTueVwmOMw41I8BN&ng*G_XFa07C%Hr00rYlc$2*J24s5&bgAJqbN zd^9;^V?9}!cPq!U&m9YT82%I9KVi}mKj@wyF3j{BLZGw3(WI6TFq*uO+fGncfe}vE zCBKpT&h%^`P52Uyp^k~ss1_zhBaR7iKIJIv+%h`5F$0Gl(r{dzy^j0!#_f+na!a@R zAe5HrRM&iW+bEKO`hC7bWu4PLJ93H3U0W4=CwoK`;^Ne z*YOq#9BlehsQf3iO>i8&{0!^$q8%MT1_|F&BtZ7sf=t8ebw>S8j}IrW?x`%cgj5GK zwT&+bH0uwonH*cH-wTs0KT?u*dS_apbfAm)qd_gGTgM5TriwYB~{CG6VND|J6D8};kXuk8jd+B4FhmmBFrs@gs>bH z$de~ll7(n7d$kzRsMqI|Kp{JlCMi;%I!?V!(;FUwGalzo5nF|&g&Ae|ZkcKaemJOy z$$_BsGQ=RGFJVA9u8?!Pt>XckNlX|LU6h{c`?g;XlK$inyraUq=`z7K7KYpLq|nR8 zsCYIUjMos;QO1W7Y@MqQ>ru=hrI>UpN(SLN-ug}pnI^{@YYR4bQHwDSUcBH7rfdx% z3q<3n^BPQQiK>H1Pcq=hHb)r%XUEQ;5SaGL;nY=-mM2&}3D09u6Q3s&nLG!GsYYS6 zIJ)^Led4C~P}B&y+$c7+S|aUWauiZXf+#cSbq2bU2o5HLqodFcr7zsL-olMvP}a)L znukTjzEHc_m3VnqG z2nfU^8d6*SdIWaRV{^JT*^X0GiW_*J(3bm?TGo;NL|8|ZEydMiW)^^VKEhC%u_88t zfy^VUKyXy+{PvG}2|5wt_ygQH@K#*pV?|CDXn+&ii@)!xxGGy;X{FO#s+Q`b9QBzmPtF4%`w2%t_~ z`@MSj>5UG-TL)X<+PM?LAN$=9wZ#h2?{g}j2H*xlmy!NxlNiW{fk}kmxCj(ke-Kyg zdM|3xf!+(9whco|_E#N2*#NZ;c8?zH%Ug$7OD@7QigI&=I}0o5I0%^66sNzKEEwo3 zv@#tJ{Ny@*IJbdDxO>xDa!+qMJ_MKdo~02O8G}@udaR78;d5Avxb%iEgt1jvn%Nbk zo>xpyd*?D+v}bD>%M>{383lUMDDdy&x9616l2C~oPz89XO|=$R?+uR*!OQi^7nl{- zo#5j5t?Q;SyKYL#K#Ug9^D&Yp+(BqZ z5Cb07x=W(XLdK9fUUVMElW8sVO{V=r@YcM6kqX6?rWFbx;5q>h66_H`mZlfiuEH7j z^cj!p&>Y&Viuy0cexa@IQ7v-^ZN`r$)zj#~BM9JoY!MfOIke0*zt3m4Ga_Y(2cb=? zQ5`dY7jT-;|y_5rR2_f63e65+8c~;=(VWHJ(O<8|;?xJ~j zWnuyYo+8|tuL%lpcd>SC*hRM<3~*;}YjX`O(K_wTFkgC-Rn97n} zIsCoVlK#U6Fav0I>CX?1({HKdpZ^c1$FJU=Zsq(}?Eg0$B>aCT!zTX2e#(JMO`nbgK>=B;ZiG*<9indd zEhHU+jeO=|V!AH36t`N>o}I0H6cE!RvuDo$^4xnSf)7FDFAnV_gpTOu(}&aZ)8ot2 z-`^d-J^c;D%=sEf41$kT3`47x89GSe*d!5mmQnB~mqfVHNE3djUb0{tt=8|9A%4=n z{`T}h`}+{gp^I)izsuU{ToOy%r7V^G!T$5RsMkFd_u66>!sC{M@jFBE&z_^BIgY-y zmySS*B!_Ny?hi>T#StQ3#$jM$j4a0_(j8xjx#9-ehAwMBB46E(HuVsW!pVm<%S_*2 z1SXTZv!>4~!1(U@bn@o-!^hu%VTiFfI#hUh!(wQ8y<%8ZVE;uC`2WEGfmi6(BMx`Z zx?nfb+_3fXKHPm2rTWHIXy?+5%*D*ECjud3=7>cJCveCU%p7s3_(N$MG3iMIC;$QE zCj;6YaOMGi%})@xcJ8QZN}dBOL_c_ELD!|^ZBEq~A7KLK_u$;|Y;4|xbJMefdvG0~ z6*xgQv`ibW?q@0)oPl=?c#58!sYeK3LEBlc7(21TE)7Ug0GSK8LY;)39WhJrRSxO8;zw%MYV|wdClm;rC7C8=lhEeIROA^};1I`({Dkmx zzG^0RASPf1$r9O=&=LebDM#@j{I|gdK4i_1YloAe%k?R$pHka{w*YxiLYx4F-Q9+3 z!1k3i#{+G#o>MLiZXMSJx6C+#_?y3e2Yfoqg1`irT_>jCNH+ceZ6|;h;Y|M3yGua0 zNt~~goUwAM2nuJG?Cu;b^bY2TEVZSvxz8&RqJy`9RILf;@^cydE6^a%g5iktz;i=| z9Z+4!<}f%!cK;J|9wesYGOq_p)X_EV7DIpu^f5crpUM*>3Z<-UP|}}w#131ncZfi~ z$|O8B7_A_%o$G5DP#VI0mKfo*b?%D69FkiIIRmDLjcXmxfeo=0ICE%Iy7R$VnHao9 z7Th?Nv&I|=|L3OwEhO`9M>8ZSMnK<$roT4bK5Sp2Yw#&X3!-YV8;f{{5zz{q)f)fV z@gV80WM>9JhAstnz%gf)C1?TL368hsmMAV`B~J=BC;@97Fa%3f)8jY42f^C&=&U$v zD-c`+4`aKBZ*8^$T$X~qU!DjL04c_D*MOJs8U;{Ff#JKH1S@5pSY0Lr|IXOz zffe;#aH;CAU)bVmUX-2ybH2Z}&ouc5^FHF8~aOXnt^8#y`!E)tVva}JAjdO0|~f=bH1FMewblm4wFRB z;W{k<Sejel2(ajhK|y$0u;=(bB%FPJO1K$tOzjfc6r=ze;viBGXy4({pr=VbAf$q) zIH_?q%3oN5PfFDSAPvW})^kb?y3)_XuswVjGiyCjc>!9EmV#q~d(LnmT)$N#zn=TmTc{*p85%gb}{F-k<*Y6*AG z#D<_c?-Jd5Qq+qrv^(W@*7et!YsFpj7I)ogSK!2Or(7N=hrB2NS%^Hg`_-st9KPsF z3c@ANm_rgrwRwvT7n!ypEujX+F1yd20WYj;ND&p z;5pVkM7SCx4VPzK;1nNGk~#zUG0fFXI#nGh9rS$qm49^i2x<`59` z2GX5UdeZC#8N`Z}-9_v0T=wWtMiG@0G+AK`j$NH z033i5{!BH*{OS42@YhPzID`ST>8NdGjAQQ}AhKld_(GaS_dQ!r%QXXNgCz{05GGU{ zygoVII}XlYcEDSy!v-rEqgWDqwtk%jLJLk2RWXj6v&E$Xx-|&u%5GJBIo?7U|0g=n zf1XDAR=?Aq@{3Wb(?`i(A-P2XJ^7u*4W!GUF98n<+?KSs9UB6gf$P8^97g#$F{P3n z*IHzdT;=0G*Fi}kw!$iw+Q@X|{cPp;foZuAoUr46=3NISCc)Yw4>fgUIbUz$$6Tdk zM3hdRkyLC!&kP(y>HgB(@IVsScO7DE9C*uY`CM4IWu|5p(Pce%9Si(P*~ZDc{`iaI8Jk$auN_#a#h$}+|PAKBuy3v;57v2?hBld(+c->(SMR~yrH zY-URrUaOkj=t{k@zJ?}YB02(o05|N$(hS`j#DxuHJBd9~70W1Y{yVK_&v=L{(M=S* z0?eZ;S?qWg1U(k|sPpVu5rQ0!o6a--TAJ+!HaTSn^gI30Kc3Ti6L$Uji5&oDDy`wv zIvNl9!b_H2Vw?s63c$ap935VZ%-Ca(juN!}%wve=;@k|h+f4qFLgYHSPl;@M44-DW z1?1%oM-5|1{m!5>pg8tI$!h@#TYLtT>)b%rqi#WG5YNER7q34Yzd8j!9iN?_z6xUl zgZBSRi-P1fT`Gr9pv25(GHe$H&T6%0ceR`ly<*n|ETjawWiz;4-ZKO^Ug4^!W^T3+ z{UHnUKxIc}DPqDmN1%4T@9ysI!jp|w4mpv)D`sgy21;VW>1-`sKHY$#V~g<}-?e-D!R zUxveB-A<}*z3LMiEnFL|GCe9?zdW^A#c(aQhS#`OlC*Dqh7n!5^Z^_v>FeM^~X~x zoc|>>Z5ZH6te=%a{y$CR{~wH-_|JPOyW;<*ZNK6BgID;~_$e?~(BLKyJOegl>EapR zzl0=S83ngyU_;xupdx`VuNKJ_4~@LY^8(PY$||9zCNc>Y82|DosDl_DyWbm( zN9~l~v9*L+Qrh^>fyta2{&qq`h4W7=-&ote!A-euO+QR+SwIVl?SFCm|76#uTzU1Z!)3UY{qhDUN#sIj(QseyZ-u{=!|2iD>8vFlV%6{(uniKn2OU3hF`RxCX zGUtCZjOTwI4SLP_-$!{Q=f64m4^)cJKQzVpmx<|i&j0(Pl>5KN{=b*9m-GM7lWa<6 zsc`;<_2nzb|Gh!t{7)PGe=p_X?SBuAfxmaDaQ=P#wdDVPT>l@81`Yq;OWBY7?<4zC zByZ!HN@zWuN<1_o{-&kE`Ik8bOwX=H3yRNw!vAM7X#D^7Qno$+WjK6u{2yf`5z|k|Hu77lmBfm zCC2}E;O*Z$_WhPhmGfWM0icloC*pq$N6r2Je#!wjht~wmUDLZ^;j$nmVI(Y(A3rY+ za>LTU?Na6Z*9`zrbp8k9IR77xM$P%(OR2~Io7eu|OQ~}H>jnTQl>hsQ_&*+y5SVMopHODx08q&P6ZZeX zWZ1m_-%F`r+i%=>zr#}H{MQWtRA~Q8y#Jl{hmHU5UdmUo|25HmzL`?z{O|n!Z;-tI z?>F-QUdmTE|ILa0hDz1*|5fDwMEtM8q~F;8_fo3J|4kI1@2^xj|8*Y#7oPt_{-1HL z(f{{Ts`3BkweR;<>YV?b-~T7?|3;JM{O_gg{`^1mjGEGvrZlA~Wy=2z00960pWe+D H0AvIJht$&8 diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 0fa6060f8f..0000000000 --- a/docs/index.html +++ /dev/null @@ -1,9 +0,0 @@ - - - Budibase Helm Chart Repo - - -

Budibase Charts Repo

-

Point Helm at this repo to see charts.

- - \ No newline at end of file diff --git a/docs/index.yaml b/docs/index.yaml deleted file mode 100644 index 232f3445f9..0000000000 --- a/docs/index.yaml +++ /dev/null @@ -1,158 +0,0 @@ -apiVersion: v1 -entries: - budibase: - - apiVersion: v2 - appVersion: 1.0.6 - created: "2021-12-08T16:26:47.061065Z" - dependencies: - - condition: services.couchdb.enabled - name: couchdb - repository: https://apache.github.io/couchdb-helm - version: 3.3.4 - - condition: ingress.nginx - name: ingress-nginx - repository: https://github.com/kubernetes/ingress-nginx - version: 3.35.0 - description: Budibase is an open source low-code platform, helping thousands of teams build apps for their workplace in minutes. - digest: 9e3d5b600368a4fd65ba827986c943b65d7ffae6544b3fda0418e760866e8929 - keywords: - - low-code - - database - - cluster - name: budibase - sources: - - https://github.com/Budibase/budibase - - https://budibase.com - type: application - urls: - - https://budibase.github.io/budibase/budibase-0.2.4.tgz - version: 0.2.4 - - apiVersion: v2 - appVersion: 0.9.169 - created: "2021-12-08T16:26:47.055284Z" - dependencies: - - condition: services.couchdb.enabled - name: couchdb - repository: https://apache.github.io/couchdb-helm - version: 3.3.4 - - condition: ingress.nginx - name: ingress-nginx - repository: https://github.com/kubernetes/ingress-nginx - version: 3.35.0 - description: Budibase is an open source low-code platform, helping thousands of teams build apps for their workplace in minutes. - digest: 57f365d799fcaace4658883cb8ec961a7905383a68acf065af4f6e57f9878ff8 - keywords: - - low-code - - database - - cluster - name: budibase - sources: - - https://github.com/Budibase/budibase - - https://budibase.com - type: application - urls: - - https://budibase.github.io/budibase/budibase-0.2.2.tgz - version: 0.2.2 - - apiVersion: v2 - appVersion: 0.9.163 - created: "2021-12-08T16:26:47.051008Z" - dependencies: - - condition: services.couchdb.enabled - name: couchdb - repository: https://apache.github.io/couchdb-helm - version: 3.3.4 - - condition: ingress.nginx - name: ingress-nginx - repository: https://github.com/kubernetes/ingress-nginx - version: 3.35.0 - description: Budibase is an open source low-code platform, helping thousands of teams build apps for their workplace in minutes. - digest: ebac6d8631cc38b266c3689508b5123f5afc395f23bdb02738be26c7cae0b0b5 - keywords: - - low-code - - database - - cluster - name: budibase - sources: - - https://github.com/Budibase/budibase - - https://budibase.com - type: application - urls: - - https://budibase.github.io/budibase/budibase-0.2.1.tgz - version: 0.2.1 - - apiVersion: v2 - appVersion: 0.9.163 - created: "2021-12-08T16:26:47.046825Z" - dependencies: - - condition: services.couchdb.enabled - name: couchdb - repository: https://apache.github.io/couchdb-helm - version: 3.3.4 - - condition: ingress.nginx - name: ingress-nginx - repository: https://github.com/kubernetes/ingress-nginx - version: 3.35.0 - description: Budibase is an open source low-code platform, helping thousands of teams build apps for their workplace in minutes. - digest: f369536c0eac1f6959d51e8ce6d74a87a7a9df29ae84fb9cbed0a273ab77429b - keywords: - - low-code - - database - - cluster - name: budibase - sources: - - https://github.com/Budibase/budibase - - https://budibase.com - type: application - urls: - - https://budibase.github.io/budibase/budibase-0.2.0.tgz - version: 0.2.0 - - apiVersion: v2 - appVersion: 0.9.56 - created: "2021-12-08T16:26:47.042113Z" - dependencies: - - condition: services.couchdb.enabled - name: couchdb - repository: https://apache.github.io/couchdb-helm - version: 3.3.4 - - name: ingress-nginx - repository: https://github.com/kubernetes/ingress-nginx - version: 3.35.0 - description: Budibase is an open source low-code platform, helping thousands of teams build apps for their workplace in minutes. - digest: 8dc4f2ed4d98cad5adf25936aefea680042d3e4e17832f846b961fd8708ad192 - keywords: - - low-code - - database - - cluster - name: budibase - sources: - - https://github.com/Budibase/budibase - - https://budibase.com - type: application - urls: - - https://budibase.github.io/budibase/budibase-0.1.1.tgz - version: 0.1.1 - - apiVersion: v2 - appVersion: 0.9.56 - created: "2021-12-08T16:26:47.036016Z" - dependencies: - - condition: services.couchdb.enabled - name: couchdb - repository: https://apache.github.io/couchdb-helm - version: 3.3.4 - - name: ingress-nginx - repository: https://github.com/kubernetes/ingress-nginx - version: 3.35.0 - description: Budibase is an open source low-code platform, helping thousands of teams build apps for their workplace in minutes. - digest: 08031b0803cce0eff64472e569d454d9176119c8207aa9873a9c95ee66cc7d3f - keywords: - - low-code - - database - - cluster - name: budibase - sources: - - https://github.com/Budibase/budibase - - https://budibase.com - type: application - urls: - - https://budibase.github.io/budibase/budibase-0.1.0.tgz - version: 0.1.0 -generated: "2021-12-08T16:26:47.031998Z" diff --git a/scripts/releaseHelmChart.js b/scripts/releaseHelmChart.js index 9c62f3dd8f..0e469bd012 100755 --- a/scripts/releaseHelmChart.js +++ b/scripts/releaseHelmChart.js @@ -1,5 +1,4 @@ const yaml = require("js-yaml") -const { execSync } = require("child_process") const fs = require("fs") const path = require("path") @@ -9,7 +8,7 @@ const UpgradeTypes = { PATCH: "patch" } -const CHART_PATH = path.join(__dirname, "../", "hosting", "kubernetes", "budibase", "Chart.yaml") +const CHART_PATH = path.join(__dirname, "../", "charts", "budibase", "Chart.yaml") const UPGRADE_VERSION = process.env.BUDIBASE_RELEASE_VERSION const UPGRADE_TYPE = process.env.HELM_CHART_UPGRADE_TYPE || UpgradeTypes.PATCH @@ -30,9 +29,6 @@ try { chart.version = [major, minor, newPatch].join(".") const updatedChartYaml = yaml.dump(chart) fs.writeFileSync(CHART_PATH, updatedChartYaml) - - // package the chart and write to docs dir - execSync(`helm package hosting/kubernetes/budibase --destination docs`) } catch (err) { console.error("Error releasing helm chart") throw err From 4a3f59641527d897addc1e37975bac79e275e740 Mon Sep 17 00:00:00 2001 From: Rory Powell Date: Thu, 9 Dec 2021 11:40:59 +0000 Subject: [PATCH 15/52] Escape mysql describe to handle non standard table names --- packages/server/src/integrations/mysql.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/server/src/integrations/mysql.ts b/packages/server/src/integrations/mysql.ts index 98584e04d2..24a55a273d 100644 --- a/packages/server/src/integrations/mysql.ts +++ b/packages/server/src/integrations/mysql.ts @@ -143,7 +143,7 @@ module MySQLModule { const schema: TableSchema = {} const descResp = await internalQuery( this.client, - { sql: `DESCRIBE ${tableName};` }, + { sql: `DESCRIBE \`${tableName}\`;` }, false ) for (let column of descResp) { From 558c85d736ff2d63f7e5723c6d5337ddc87da4f4 Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Thu, 9 Dec 2021 14:33:04 +0000 Subject: [PATCH 16/52] v1.0.11 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 3aef8ef137..4a50521f33 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.10", + "version": "1.0.11", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index a516e1ba58..b055740333 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.10", + "version": "1.0.11", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 8dedae0d3f..294dd4be20 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.10", + "version": "1.0.11", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index b8eb15794f..bfd35e7f00 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.10", + "version": "1.0.11", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.10", - "@budibase/client": "^1.0.10", + "@budibase/bbui": "^1.0.11", + "@budibase/client": "^1.0.11", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.10", + "@budibase/string-templates": "^1.0.11", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index a074da5f59..16fb9498e7 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.10", + "version": "1.0.11", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index b42abfc095..cbd921e053 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.10", + "version": "1.0.11", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.10", + "@budibase/bbui": "^1.0.11", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.10", + "@budibase/string-templates": "^1.0.11", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 3b1e9add44..39bedf4af6 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.10", + "version": "1.0.11", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.10", - "@budibase/client": "^1.0.10", - "@budibase/string-templates": "^1.0.10", + "@budibase/auth": "^1.0.11", + "@budibase/client": "^1.0.11", + "@budibase/string-templates": "^1.0.11", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 08e6b6383b..480ac11395 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.10", + "version": "1.0.11", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 62048dd240..ba76aa9e5a 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.10", + "version": "1.0.11", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.10", - "@budibase/string-templates": "^1.0.10", + "@budibase/auth": "^1.0.11", + "@budibase/string-templates": "^1.0.11", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 97816ab99f419a8a63151460d285d83f6d587763 Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Thu, 9 Dec 2021 19:15:19 +0000 Subject: [PATCH 17/52] v1.0.12 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 4a50521f33..07bbf908e6 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.11", + "version": "1.0.12", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index b055740333..c0599f6bc0 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.11", + "version": "1.0.12", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 294dd4be20..3ffb11667b 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.11", + "version": "1.0.12", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index bfd35e7f00..df91d83c98 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.11", + "version": "1.0.12", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.11", - "@budibase/client": "^1.0.11", + "@budibase/bbui": "^1.0.12", + "@budibase/client": "^1.0.12", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.11", + "@budibase/string-templates": "^1.0.12", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 16fb9498e7..6adda8617a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.11", + "version": "1.0.12", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index cbd921e053..d85a297e73 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.11", + "version": "1.0.12", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.11", + "@budibase/bbui": "^1.0.12", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.11", + "@budibase/string-templates": "^1.0.12", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 39bedf4af6..f0e01676fd 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.11", + "version": "1.0.12", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.11", - "@budibase/client": "^1.0.11", - "@budibase/string-templates": "^1.0.11", + "@budibase/auth": "^1.0.12", + "@budibase/client": "^1.0.12", + "@budibase/string-templates": "^1.0.12", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 480ac11395..22b167c8af 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.11", + "version": "1.0.12", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index ba76aa9e5a..fa7117cd09 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.11", + "version": "1.0.12", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.11", - "@budibase/string-templates": "^1.0.11", + "@budibase/auth": "^1.0.12", + "@budibase/string-templates": "^1.0.12", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From b688e50272cea0360c5381690d2c3d972eb65afa Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Fri, 10 Dec 2021 10:39:20 +0000 Subject: [PATCH 18/52] v1.0.13-alpha.0 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 07bbf908e6..7ae40501a4 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.12", + "version": "1.0.13-alpha.0", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index c0599f6bc0..5145c456b1 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.12", + "version": "1.0.13-alpha.0", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 3ffb11667b..2dc54bacc4 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.12", + "version": "1.0.13-alpha.0", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index df91d83c98..bbb28adecc 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.12", + "version": "1.0.13-alpha.0", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.12", - "@budibase/client": "^1.0.12", + "@budibase/bbui": "^1.0.13-alpha.0", + "@budibase/client": "^1.0.13-alpha.0", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.12", + "@budibase/string-templates": "^1.0.13-alpha.0", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 6adda8617a..869cc55b9f 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.12", + "version": "1.0.13-alpha.0", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index d85a297e73..96c4a1cc11 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.12", + "version": "1.0.13-alpha.0", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.12", + "@budibase/bbui": "^1.0.13-alpha.0", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.12", + "@budibase/string-templates": "^1.0.13-alpha.0", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 40113a34e3..0389621272 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.12", + "version": "1.0.13-alpha.0", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -70,9 +70,9 @@ "license": "GPL-3.0", "dependencies": { "@apidevtools/swagger-parser": "^10.0.3", - "@budibase/auth": "^1.0.12", - "@budibase/client": "^1.0.12", - "@budibase/string-templates": "^1.0.12", + "@budibase/auth": "^1.0.13-alpha.0", + "@budibase/client": "^1.0.13-alpha.0", + "@budibase/string-templates": "^1.0.13-alpha.0", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 22b167c8af..7869323edf 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.12", + "version": "1.0.13-alpha.0", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index fa7117cd09..a73d802593 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.12", + "version": "1.0.13-alpha.0", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.12", - "@budibase/string-templates": "^1.0.12", + "@budibase/auth": "^1.0.13-alpha.0", + "@budibase/string-templates": "^1.0.13-alpha.0", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From b489ec1b5206c2776c9ca63a6dac9501ea7908b7 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 10 Dec 2021 11:04:19 +0000 Subject: [PATCH 19/52] Fixing symlink to env file for development. --- hosting/.env | 1 + 1 file changed, 1 insertion(+) create mode 120000 hosting/.env diff --git a/hosting/.env b/hosting/.env new file mode 120000 index 0000000000..bb1b54ad77 --- /dev/null +++ b/hosting/.env @@ -0,0 +1 @@ +hosting.properties \ No newline at end of file From 6e582909ca9e15c44fd25819fa82dae537c5b1fa Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 10 Dec 2021 11:04:19 +0000 Subject: [PATCH 20/52] Fixing symlink to env file for development. --- hosting/.env | 1 + 1 file changed, 1 insertion(+) create mode 120000 hosting/.env diff --git a/hosting/.env b/hosting/.env new file mode 120000 index 0000000000..bb1b54ad77 --- /dev/null +++ b/hosting/.env @@ -0,0 +1 @@ +hosting.properties \ No newline at end of file From dc92cbeac012da6d2d2dc68c07ccc4516472cff2 Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Fri, 10 Dec 2021 11:12:06 +0000 Subject: [PATCH 21/52] v1.0.13 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 07bbf908e6..cf8ebab2af 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.12", + "version": "1.0.13", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index c0599f6bc0..7053ddab67 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.12", + "version": "1.0.13", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 3ffb11667b..edc16608cb 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.12", + "version": "1.0.13", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index df91d83c98..f9a4cf2407 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.12", + "version": "1.0.13", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.12", - "@budibase/client": "^1.0.12", + "@budibase/bbui": "^1.0.13", + "@budibase/client": "^1.0.13", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.12", + "@budibase/string-templates": "^1.0.13", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 6adda8617a..6e5d4760c8 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.12", + "version": "1.0.13", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index d85a297e73..66bc2f4da0 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.12", + "version": "1.0.13", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.12", + "@budibase/bbui": "^1.0.13", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.12", + "@budibase/string-templates": "^1.0.13", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index f0e01676fd..87610747af 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.12", + "version": "1.0.13", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.12", - "@budibase/client": "^1.0.12", - "@budibase/string-templates": "^1.0.12", + "@budibase/auth": "^1.0.13", + "@budibase/client": "^1.0.13", + "@budibase/string-templates": "^1.0.13", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 22b167c8af..ad7928f062 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.12", + "version": "1.0.13", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index fa7117cd09..7bba900ee7 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.12", + "version": "1.0.13", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.12", - "@budibase/string-templates": "^1.0.12", + "@budibase/auth": "^1.0.13", + "@budibase/string-templates": "^1.0.13", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 8d1e0e5dfbeb64c0a9d67fc8e515e65b63ef0a71 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Fri, 10 Dec 2021 11:14:30 +0000 Subject: [PATCH 22/52] v1.0.13-alpha.1 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 7ae40501a4..517159c0ae 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.13-alpha.0", + "version": "1.0.13-alpha.1", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 5145c456b1..9c7c13db38 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.13-alpha.0", + "version": "1.0.13-alpha.1", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 2dc54bacc4..916798c3cd 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.13-alpha.0", + "version": "1.0.13-alpha.1", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index bbb28adecc..6db8d96cb3 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.13-alpha.0", + "version": "1.0.13-alpha.1", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.13-alpha.0", - "@budibase/client": "^1.0.13-alpha.0", + "@budibase/bbui": "^1.0.13-alpha.1", + "@budibase/client": "^1.0.13-alpha.1", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.13-alpha.0", + "@budibase/string-templates": "^1.0.13-alpha.1", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 869cc55b9f..00631b82f5 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.13-alpha.0", + "version": "1.0.13-alpha.1", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 96c4a1cc11..ed5d8e4b61 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.13-alpha.0", + "version": "1.0.13-alpha.1", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.13-alpha.0", + "@budibase/bbui": "^1.0.13-alpha.1", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.13-alpha.0", + "@budibase/string-templates": "^1.0.13-alpha.1", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 0389621272..54044133ef 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.13-alpha.0", + "version": "1.0.13-alpha.1", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -70,9 +70,9 @@ "license": "GPL-3.0", "dependencies": { "@apidevtools/swagger-parser": "^10.0.3", - "@budibase/auth": "^1.0.13-alpha.0", - "@budibase/client": "^1.0.13-alpha.0", - "@budibase/string-templates": "^1.0.13-alpha.0", + "@budibase/auth": "^1.0.13-alpha.1", + "@budibase/client": "^1.0.13-alpha.1", + "@budibase/string-templates": "^1.0.13-alpha.1", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 7869323edf..97f55e565d 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.13-alpha.0", + "version": "1.0.13-alpha.1", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index a73d802593..0eaac76816 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.13-alpha.0", + "version": "1.0.13-alpha.1", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.13-alpha.0", - "@budibase/string-templates": "^1.0.13-alpha.0", + "@budibase/auth": "^1.0.13-alpha.1", + "@budibase/string-templates": "^1.0.13-alpha.1", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 312db6182d34bc947ab6e12f0d3a039278ce02ca Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 10 Dec 2021 15:10:45 +0000 Subject: [PATCH 23/52] Reducing the load on DB caused by CouchDB all_db when working with a large number of couch databases. --- packages/auth/src/db/utils.js | 45 +++++++++++++++++++++++++++++------ packages/auth/src/helpers.js | 9 +++++++ 2 files changed, 47 insertions(+), 7 deletions(-) create mode 100644 packages/auth/src/helpers.js diff --git a/packages/auth/src/db/utils.js b/packages/auth/src/db/utils.js index d23d407dab..7ced405c82 100644 --- a/packages/auth/src/db/utils.js +++ b/packages/auth/src/db/utils.js @@ -3,10 +3,15 @@ const Replication = require("./Replication") const { DEFAULT_TENANT_ID, Configs } = require("../constants") const env = require("../environment") const { StaticDatabases, SEPARATOR, DocumentTypes } = require("./constants") -const { getTenantId, getTenantIDFromAppID } = require("../tenancy") +const { + getTenantId, + getTenantIDFromAppID, + getGlobalDBName, +} = require("../tenancy") const fetch = require("node-fetch") const { getCouch } = require("./index") const { getAppMetadata } = require("../cache/appMetadata") +const { checkSlashesInUrl } = require("../helpers") const NO_APP_ERROR = "No app provided" @@ -194,6 +199,10 @@ exports.getCouchUrl = () => { return `${protocol}://${env.COUCH_DB_USERNAME}:${env.COUCH_DB_PASSWORD}@${rest}` } +exports.getStartEndKeyURL = (base, baseKey, tenantId = "") => { + return `${base}?startkey="${baseKey}${SEPARATOR}${tenantId}"&endkey="${baseKey}${SEPARATOR}${tenantId}${UNICODE_MAX}"` +} + /** * if in production this will use the CouchDB _all_dbs call to retrieve a list of databases. If testing * when using Pouch it will use the pouchdb-all-dbs package. @@ -203,12 +212,34 @@ exports.getAllDbs = async () => { if (env.isTest()) { return getCouch().allDbs() } - const response = await fetch(`${exports.getCouchUrl()}/_all_dbs`) - if (response.status === 200) { - return response.json() - } else { - throw "Cannot connect to CouchDB instance" + let dbs = [] + async function addDbs(url) { + const response = await fetch(checkSlashesInUrl(encodeURI(url))) + if (response.status === 200) { + let json = await response.json() + dbs = dbs.concat(json) + } else { + throw "Cannot connect to CouchDB instance" + } } + let couchUrl = `${exports.getCouchUrl()}_all_dbs` + if (env.MULTI_TENANCY) { + let tenantId = getTenantId() + // get prod apps + await addDbs( + exports.getStartEndKeyURL(couchUrl, DocumentTypes.APP, tenantId) + ) + // get dev apps + await addDbs( + exports.getStartEndKeyURL(couchUrl, DocumentTypes.APP_DEV, tenantId) + ) + // add global db name + dbs.push(getGlobalDBName(tenantId)) + } else { + // just get all DBs in self host + await addDbs(couchUrl) + } + return dbs } /** @@ -389,7 +420,7 @@ const getScopedFullConfig = async function (db, { type, user, workspace }) { } const getPlatformUrl = async settings => { - let platformUrl = env.PLATFORM_URL + let platformUrl = env.PLATFORM_URL || "http://localhost:10000" if (!env.SELF_HOSTED && env.MULTI_TENANCY) { // cloud and multi tenant - add the tenant to the default platform url diff --git a/packages/auth/src/helpers.js b/packages/auth/src/helpers.js new file mode 100644 index 0000000000..b402a82cf3 --- /dev/null +++ b/packages/auth/src/helpers.js @@ -0,0 +1,9 @@ +/** + * Makes sure that a URL has the correct number of slashes, while maintaining the + * http(s):// double slashes. + * @param {string} url The URL to test and remove any extra double slashes. + * @return {string} The updated url. + */ +exports.checkSlashesInUrl = url => { + return url.replace(/(https?:\/\/)|(\/)+/g, "$1$2") +} From ce3d7df39de7f224aa3ef25b9dee01979f5478c1 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 10 Dec 2021 15:17:18 +0000 Subject: [PATCH 24/52] Allowing start end key syntax to be used outside of tenancy if we need to. --- packages/auth/src/db/utils.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/auth/src/db/utils.js b/packages/auth/src/db/utils.js index 7ced405c82..a091896342 100644 --- a/packages/auth/src/db/utils.js +++ b/packages/auth/src/db/utils.js @@ -199,8 +199,9 @@ exports.getCouchUrl = () => { return `${protocol}://${env.COUCH_DB_USERNAME}:${env.COUCH_DB_PASSWORD}@${rest}` } -exports.getStartEndKeyURL = (base, baseKey, tenantId = "") => { - return `${base}?startkey="${baseKey}${SEPARATOR}${tenantId}"&endkey="${baseKey}${SEPARATOR}${tenantId}${UNICODE_MAX}"` +exports.getStartEndKeyURL = (base, baseKey, tenantId = null) => { + const tenancy = tenantId ? `${SEPARATOR}${tenantId}` : "" + return `${base}?startkey="${baseKey}${tenancy}"&endkey="${baseKey}${tenancy}${UNICODE_MAX}"` } /** From 7567c778c8b46b3a4630be6d37567a32d56d682c Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 10 Dec 2021 15:18:57 +0000 Subject: [PATCH 25/52] Removing repeated line. --- packages/auth/src/db/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/auth/src/db/utils.js b/packages/auth/src/db/utils.js index a091896342..03c6e8e145 100644 --- a/packages/auth/src/db/utils.js +++ b/packages/auth/src/db/utils.js @@ -436,7 +436,7 @@ const getPlatformUrl = async settings => { } } - return platformUrl ? platformUrl : "http://localhost:10000" + return platformUrl } async function getScopedConfig(db, params) { From e1a527a4bbc086c926154cc81c59e25679ba6a8b Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Fri, 10 Dec 2021 15:45:07 +0000 Subject: [PATCH 26/52] v1.0.14 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index cf8ebab2af..77d9f56696 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.13", + "version": "1.0.14", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 7053ddab67..9770f84c25 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.13", + "version": "1.0.14", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index edc16608cb..0a62ba22b3 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.13", + "version": "1.0.14", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index f9a4cf2407..5e64f3a427 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.13", + "version": "1.0.14", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.13", - "@budibase/client": "^1.0.13", + "@budibase/bbui": "^1.0.14", + "@budibase/client": "^1.0.14", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.13", + "@budibase/string-templates": "^1.0.14", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 6e5d4760c8..a04ed0b907 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.13", + "version": "1.0.14", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 66bc2f4da0..8b708c0794 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.13", + "version": "1.0.14", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.13", + "@budibase/bbui": "^1.0.14", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.13", + "@budibase/string-templates": "^1.0.14", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 87610747af..bbd6248efd 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.13", + "version": "1.0.14", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.13", - "@budibase/client": "^1.0.13", - "@budibase/string-templates": "^1.0.13", + "@budibase/auth": "^1.0.14", + "@budibase/client": "^1.0.14", + "@budibase/string-templates": "^1.0.14", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index ad7928f062..f8b298196f 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.13", + "version": "1.0.14", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 7bba900ee7..0dabee0e97 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.13", + "version": "1.0.14", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.13", - "@budibase/string-templates": "^1.0.13", + "@budibase/auth": "^1.0.14", + "@budibase/string-templates": "^1.0.14", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 1a2bcc02f19ce23afc1c836d7ce8cfac31aa3503 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Fri, 10 Dec 2021 16:29:45 +0000 Subject: [PATCH 27/52] v1.0.15-alpha.0 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 77d9f56696..97a1bff210 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.14", + "version": "1.0.15-alpha.0", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 9770f84c25..29b57a6f2b 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.14", + "version": "1.0.15-alpha.0", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 0a62ba22b3..128bb0e4ca 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.14", + "version": "1.0.15-alpha.0", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 5e64f3a427..f527874b21 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.14", + "version": "1.0.15-alpha.0", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.14", - "@budibase/client": "^1.0.14", + "@budibase/bbui": "^1.0.15-alpha.0", + "@budibase/client": "^1.0.15-alpha.0", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.14", + "@budibase/string-templates": "^1.0.15-alpha.0", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index a04ed0b907..5a40eae11b 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.14", + "version": "1.0.15-alpha.0", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 8b708c0794..61ef968698 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.14", + "version": "1.0.15-alpha.0", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.14", + "@budibase/bbui": "^1.0.15-alpha.0", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.14", + "@budibase/string-templates": "^1.0.15-alpha.0", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index b81911bf92..55ae9a4e0f 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.14", + "version": "1.0.15-alpha.0", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -70,9 +70,9 @@ "license": "GPL-3.0", "dependencies": { "@apidevtools/swagger-parser": "^10.0.3", - "@budibase/auth": "^1.0.14", - "@budibase/client": "^1.0.14", - "@budibase/string-templates": "^1.0.14", + "@budibase/auth": "^1.0.15-alpha.0", + "@budibase/client": "^1.0.15-alpha.0", + "@budibase/string-templates": "^1.0.15-alpha.0", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index f8b298196f..19c10556a9 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.14", + "version": "1.0.15-alpha.0", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 0dabee0e97..c39de40dbf 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.14", + "version": "1.0.15-alpha.0", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.14", - "@budibase/string-templates": "^1.0.14", + "@budibase/auth": "^1.0.15-alpha.0", + "@budibase/string-templates": "^1.0.15-alpha.0", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From a0bb13e5c08148aca71a128cc4258558bfb14368 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 10 Dec 2021 16:44:58 +0000 Subject: [PATCH 28/52] Adding slash incase couch URL doesn't contain. --- packages/auth/src/db/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/auth/src/db/utils.js b/packages/auth/src/db/utils.js index 03c6e8e145..2bad09c306 100644 --- a/packages/auth/src/db/utils.js +++ b/packages/auth/src/db/utils.js @@ -223,7 +223,7 @@ exports.getAllDbs = async () => { throw "Cannot connect to CouchDB instance" } } - let couchUrl = `${exports.getCouchUrl()}_all_dbs` + let couchUrl = `${exports.getCouchUrl()}/_all_dbs` if (env.MULTI_TENANCY) { let tenantId = getTenantId() // get prod apps From f136bcbc8c93adb7d9948cc8581ad3abcdba2937 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 10 Dec 2021 16:44:58 +0000 Subject: [PATCH 29/52] Adding slash incase couch URL doesn't contain. --- packages/auth/src/db/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/auth/src/db/utils.js b/packages/auth/src/db/utils.js index 03c6e8e145..2bad09c306 100644 --- a/packages/auth/src/db/utils.js +++ b/packages/auth/src/db/utils.js @@ -223,7 +223,7 @@ exports.getAllDbs = async () => { throw "Cannot connect to CouchDB instance" } } - let couchUrl = `${exports.getCouchUrl()}_all_dbs` + let couchUrl = `${exports.getCouchUrl()}/_all_dbs` if (env.MULTI_TENANCY) { let tenantId = getTenantId() // get prod apps From 9f45829bfa9f2091540c34e51d628f195962d57e Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Fri, 10 Dec 2021 16:55:00 +0000 Subject: [PATCH 30/52] v1.0.15 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 77d9f56696..2b05f84750 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.14", + "version": "1.0.15", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 9770f84c25..ab4cc7f7ba 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.14", + "version": "1.0.15", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 0a62ba22b3..e761b250bd 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.14", + "version": "1.0.15", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 5e64f3a427..63318f3649 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.14", + "version": "1.0.15", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.14", - "@budibase/client": "^1.0.14", + "@budibase/bbui": "^1.0.15", + "@budibase/client": "^1.0.15", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.14", + "@budibase/string-templates": "^1.0.15", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index a04ed0b907..7d032b77b5 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.14", + "version": "1.0.15", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 8b708c0794..8d80e65b20 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.14", + "version": "1.0.15", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.14", + "@budibase/bbui": "^1.0.15", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.14", + "@budibase/string-templates": "^1.0.15", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index bbd6248efd..fa716bedfd 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.14", + "version": "1.0.15", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.14", - "@budibase/client": "^1.0.14", - "@budibase/string-templates": "^1.0.14", + "@budibase/auth": "^1.0.15", + "@budibase/client": "^1.0.15", + "@budibase/string-templates": "^1.0.15", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index f8b298196f..a383b15c89 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.14", + "version": "1.0.15", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 0dabee0e97..a74c53f4af 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.14", + "version": "1.0.15", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.14", - "@budibase/string-templates": "^1.0.14", + "@budibase/auth": "^1.0.15", + "@budibase/string-templates": "^1.0.15", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 2565d5476ff4180911787e35bbe6412d31aeb866 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Fri, 10 Dec 2021 16:56:34 +0000 Subject: [PATCH 31/52] v1.0.15-alpha.1 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 97a1bff210..698e56dc5c 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.15-alpha.0", + "version": "1.0.15-alpha.1", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 29b57a6f2b..72dddf313d 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.15-alpha.0", + "version": "1.0.15-alpha.1", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 128bb0e4ca..1badc1b059 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.15-alpha.0", + "version": "1.0.15-alpha.1", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index f527874b21..891b19e674 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.15-alpha.0", + "version": "1.0.15-alpha.1", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.15-alpha.0", - "@budibase/client": "^1.0.15-alpha.0", + "@budibase/bbui": "^1.0.15-alpha.1", + "@budibase/client": "^1.0.15-alpha.1", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.15-alpha.0", + "@budibase/string-templates": "^1.0.15-alpha.1", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 5a40eae11b..97428696df 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.15-alpha.0", + "version": "1.0.15-alpha.1", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 61ef968698..87b66419b7 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.15-alpha.0", + "version": "1.0.15-alpha.1", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.15-alpha.0", + "@budibase/bbui": "^1.0.15-alpha.1", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.15-alpha.0", + "@budibase/string-templates": "^1.0.15-alpha.1", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 55ae9a4e0f..ca6ef7bf3a 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.15-alpha.0", + "version": "1.0.15-alpha.1", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -70,9 +70,9 @@ "license": "GPL-3.0", "dependencies": { "@apidevtools/swagger-parser": "^10.0.3", - "@budibase/auth": "^1.0.15-alpha.0", - "@budibase/client": "^1.0.15-alpha.0", - "@budibase/string-templates": "^1.0.15-alpha.0", + "@budibase/auth": "^1.0.15-alpha.1", + "@budibase/client": "^1.0.15-alpha.1", + "@budibase/string-templates": "^1.0.15-alpha.1", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 19c10556a9..e06ee69e96 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.15-alpha.0", + "version": "1.0.15-alpha.1", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index c39de40dbf..387e0a8b4a 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.15-alpha.0", + "version": "1.0.15-alpha.1", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.15-alpha.0", - "@budibase/string-templates": "^1.0.15-alpha.0", + "@budibase/auth": "^1.0.15-alpha.1", + "@budibase/string-templates": "^1.0.15-alpha.1", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From a7743c8481894f8be5e64c5ec158496b1ae2423c Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Mon, 13 Dec 2021 11:24:13 +0000 Subject: [PATCH 32/52] Fixing bug in tabs where double clicks cause tab switching, new headers enabled by default, disabled headers rather than enabled, get requests can have bodies. --- packages/bbui/src/Tabs/Tabs.svelte | 1 + .../components/integration/KeyValueBuilder.svelte | 9 ++------- packages/builder/src/helpers/data/utils.js | 11 +++++++++++ .../[selectedDatasource]/rest/[query]/index.svelte | 12 +++++++----- packages/server/src/integrations/rest.ts | 8 ++++---- 5 files changed, 25 insertions(+), 16 deletions(-) diff --git a/packages/bbui/src/Tabs/Tabs.svelte b/packages/bbui/src/Tabs/Tabs.svelte index 235e103bb1..c68f715de0 100644 --- a/packages/bbui/src/Tabs/Tabs.svelte +++ b/packages/bbui/src/Tabs/Tabs.svelte @@ -27,6 +27,7 @@ dispatch("select", thisSelected) } else if ($tab.title !== thisSelected) { thisSelected = $tab.title + selected = $tab.title dispatch("select", thisSelected) } if ($tab.title !== thisSelected) { diff --git a/packages/builder/src/components/integration/KeyValueBuilder.svelte b/packages/builder/src/components/integration/KeyValueBuilder.svelte index bde1dc256a..9c438f107d 100644 --- a/packages/builder/src/components/integration/KeyValueBuilder.svelte +++ b/packages/builder/src/components/integration/KeyValueBuilder.svelte @@ -26,13 +26,12 @@ export let tooltip let fields = Object.entries(object).map(([name, value]) => ({ name, value })) - let fieldActivity = [] + let fieldActivity = buildFieldActivity(activity) $: object = fields.reduce( (acc, next) => ({ ...acc, [next.name]: next.value }), {} ) - $: fieldActivity = buildFieldActivity(activity) function buildFieldActivity(obj) { if (!obj || typeof obj !== "object") { @@ -103,11 +102,7 @@ /> {/if} {#if toggle} - + {/if} {#if !readOnly} deleteEntry(idx)} /> diff --git a/packages/builder/src/helpers/data/utils.js b/packages/builder/src/helpers/data/utils.js index 64cb4df5c2..613f533043 100644 --- a/packages/builder/src/helpers/data/utils.js +++ b/packages/builder/src/helpers/data/utils.js @@ -108,3 +108,14 @@ export function customQueryIconColor(datasource, query) { return } } + +export function flipHeaderState(headersActivity) { + if (!headersActivity) { + return {} + } + const enabled = {} + Object.entries(headersActivity).forEach(([key, value]) => { + enabled[key] = !value + }) + return enabled +} diff --git a/packages/builder/src/pages/builder/app/[application]/data/datasource/[selectedDatasource]/rest/[query]/index.svelte b/packages/builder/src/pages/builder/app/[application]/data/datasource/[selectedDatasource]/rest/[query]/index.svelte index 64572280ca..4169a61dbe 100644 --- a/packages/builder/src/pages/builder/app/[application]/data/datasource/[selectedDatasource]/rest/[query]/index.svelte +++ b/packages/builder/src/pages/builder/app/[application]/data/datasource/[selectedDatasource]/rest/[query]/index.svelte @@ -33,6 +33,7 @@ buildQueryString, keyValueToQueryParameters, queryParametersToKeyValue, + flipHeaderState, } from "helpers/data/utils" import { RestBodyTypes as bodyTypes, @@ -48,7 +49,7 @@ bindings = {} let url = "" let saveId - let response, schema, isGet + let response, schema, enabledHeaders let datasourceType, integrationInfo, queryConfig, responseSuccess $: datasource = $datasources.list.find(ds => ds._id === query?.datasourceId) @@ -57,7 +58,6 @@ $: queryConfig = integrationInfo?.query $: url = buildUrl(url, breakQs) $: checkQueryName(url) - $: isGet = query?.queryVerb === "read" $: responseSuccess = response?.info?.code >= 200 && response?.info?.code <= 206 @@ -100,6 +100,7 @@ const queryString = buildQueryString(breakQs) newQuery.fields.path = url.split("?")[0] newQuery.fields.queryString = queryString + newQuery.fields.disabledHeaders = flipHeaderState(enabledHeaders) newQuery.schema = fieldsToSchema(schema) newQuery.parameters = keyValueToQueryParameters(bindings) return newQuery @@ -139,6 +140,7 @@ url = buildUrl(query.fields.path, breakQs) schema = schemaToFields(query.schema) bindings = queryParametersToKeyValue(query.parameters) + enabledHeaders = flipHeaderState(query.fields.disabledHeaders) if (query && !query.transformer) { query.transformer = "return data" } @@ -153,7 +155,7 @@ }) -{#if query} +{#if query && queryConfig}
@@ -201,7 +203,7 @@ option.name} getOptionValue={option => option.value} diff --git a/packages/server/src/integrations/rest.ts b/packages/server/src/integrations/rest.ts index f568305652..6eb772ec92 100644 --- a/packages/server/src/integrations/rest.ts +++ b/packages/server/src/integrations/rest.ts @@ -45,7 +45,7 @@ module RestModule { path: string queryString?: string headers: { [key: string]: any } - enabledHeaders: { [key: string]: any } + disabledHeaders: { [key: string]: any } requestBody: any bodyType: string json: object @@ -161,15 +161,15 @@ module RestModule { } async _req(query: RestQuery) { - const { path = "", queryString = "", headers = {}, method = "GET", enabledHeaders, bodyType, requestBody } = query + const { path = "", queryString = "", headers = {}, method = "GET", disabledHeaders, bodyType, requestBody } = query this.headers = { ...this.config.defaultHeaders, ...headers, } - if (enabledHeaders) { + if (disabledHeaders) { for (let headerKey of Object.keys(this.headers)) { - if (!enabledHeaders[headerKey]) { + if (disabledHeaders[headerKey]) { delete this.headers[headerKey] } } From d7ffb02a5a44b204d1662f6ca7a6f2e0d7715383 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Mon, 13 Dec 2021 12:46:54 +0100 Subject: [PATCH 33/52] index.yaml --- index.yaml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 index.yaml diff --git a/index.yaml b/index.yaml new file mode 100644 index 0000000000..4b00ff2f03 --- /dev/null +++ b/index.yaml @@ -0,0 +1,3 @@ +apiVersion: v1 +entries: {} +generated: "2021-12-13T12:46:40.291206+01:00" From b81b880eca99abb2b1b0f77aaa37e35f4cf3d1ab Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Mon, 13 Dec 2021 11:55:27 +0000 Subject: [PATCH 34/52] v1.0.16 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 2b05f84750..66a4cb4c8f 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.0.15", + "version": "1.0.16", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index ab4cc7f7ba..18b1db4afd 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "1.0.15", + "version": "1.0.16", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index e761b250bd..e22bf14fb5 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "1.0.15", + "version": "1.0.16", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 63318f3649..4e18800854 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "1.0.15", + "version": "1.0.16", "license": "GPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^1.0.15", - "@budibase/client": "^1.0.15", + "@budibase/bbui": "^1.0.16", + "@budibase/client": "^1.0.16", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^1.0.15", + "@budibase/string-templates": "^1.0.16", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 7d032b77b5..92b1d63e62 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "1.0.15", + "version": "1.0.16", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 8d80e65b20..52946e8043 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "1.0.15", + "version": "1.0.16", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^1.0.15", + "@budibase/bbui": "^1.0.16", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^1.0.15", + "@budibase/string-templates": "^1.0.16", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index fa716bedfd..43d31d9ecf 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "1.0.15", + "version": "1.0.16", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -69,9 +69,9 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.15", - "@budibase/client": "^1.0.15", - "@budibase/string-templates": "^1.0.15", + "@budibase/auth": "^1.0.16", + "@budibase/client": "^1.0.16", + "@budibase/string-templates": "^1.0.16", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index a383b15c89..9b11710c0b 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "1.0.15", + "version": "1.0.16", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index a74c53f4af..de1622ec42 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "1.0.15", + "version": "1.0.16", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/auth": "^1.0.15", - "@budibase/string-templates": "^1.0.15", + "@budibase/auth": "^1.0.16", + "@budibase/string-templates": "^1.0.16", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 1948c867ccadd85cdc1c77a77ee7bab9e3e32626 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Mon, 13 Dec 2021 12:41:47 +0000 Subject: [PATCH 35/52] Fixing some issues around deleting datasources/queries and managing the full URL for migrating queries. --- .../popovers/EditDatasourcePopover.svelte | 10 ++++++++-- .../popovers/EditQueryPopover.svelte | 8 +++++++- .../[selectedDatasource]/rest/[query]/index.svelte | 7 ++++++- packages/server/src/integrations/rest.ts | 5 ++++- 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/packages/builder/src/components/backend/DatasourceNavigator/popovers/EditDatasourcePopover.svelte b/packages/builder/src/components/backend/DatasourceNavigator/popovers/EditDatasourcePopover.svelte index a919f24765..1354c31b87 100644 --- a/packages/builder/src/components/backend/DatasourceNavigator/popovers/EditDatasourcePopover.svelte +++ b/packages/builder/src/components/backend/DatasourceNavigator/popovers/EditDatasourcePopover.svelte @@ -1,6 +1,6 @@