From 1730a11591e196ac8a884357de5c63892062785f Mon Sep 17 00:00:00 2001 From: daihw <928874202@qq.com> Date: Thu, 16 Jun 2022 15:02:13 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0worker=E5=92=8C?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E4=B8=B2=E8=A1=8C=E6=89=A7=E8=A1=8C=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- guide/custom-installation.md | 66 +++++++++++++++++++++++------ guide/global.md | 16 ++++++- guide/images/trigger_queue_max.png | Bin 0 -> 24628 bytes 3 files changed, 67 insertions(+), 15 deletions(-) create mode 100644 guide/images/trigger_queue_max.png diff --git a/guide/custom-installation.md b/guide/custom-installation.md index 6af64e8..a7aad62 100644 --- a/guide/custom-installation.md +++ b/guide/custom-installation.md @@ -5,15 +5,28 @@ 请参考[快速开始](quick-start.md)章节 ## 简要系统架构说明 +**v.2.5.0之前:** 由于建木持续集成平台在设计思路上遵循简单性原则,尽量减少用户的部署成本,降低用户的使用与维护门槛。 -因此,运行建木只需要一个核心的Java后端服务和依赖的Mysql数据库。 +因此,运行建木需要一个核心的Java后端服务和依赖的Mysql数据库。 -另外,由于建木是一个纯粹的前后端分离项目,因此前端代码需要一个独立的Web服务器来进行部署。 +另外,由于建木是一个纯粹的前后端分离项目,因此前端需要一个独立的Web服务器来进行部署。 当然,因为建木的任务节点当前都是以容器形式运行在docker上,所以也需要准备一个docker的宿主环境。 +**v2.5.0之后:** + +自v2.5.0开始,为扩展业务需求,建木CI将内置Worker分离出来了,用户可自行配置Worker。 + +Worker是必需的,若没有配置Worker,任务将无法执行。 + +因此,运行建木除了需要一个核心的Java后端服务以及其依赖的Mysql数据库,还需要一个Worker。 + +另外,由于建木是一个纯粹的前后端分离项目,因此前端需要一个独立的Web服务器来进行部署。 + +当然,因为建木的任务节点当前都是以容器形式运行在docker上,所以需要为Worker准备一个安装了docker的宿主环境。 + 具体的架构设计请参考[这里](https://gitee.com/jianmu-dev/jianmu-architecture-as-code) ## 如何从源码编译 @@ -39,6 +52,19 @@ mvn package 编译打包成功完成后在项目目录下`./api/target`中会存在`jianmu-ci-server.jar`的可执行Fat Jar +**编译Worker Docker** +``` +git clone https://gitee.com/jianmu-workers/jianmu-worker-docker.git + +cd jianmu-worker-docker + +# 若无法下载依赖,可配置代理:go env -w GOPROXY=https://goproxy.cn +go mod download + +go build +``` +成功后项目目录下的`./jianmu-worker-docker`是编译好的Worker Docker可执行文件 + **编译前端代码** ``` @@ -81,18 +107,6 @@ SPRING_DATASOURCE_USERNAME: root SPRING_DATASOURCE_PASSWORD: 123456 ``` -**Docker宿主机地址配置:** - -``` -EMBEDDED_DOCKER-WORKER_DOCKER-HOST: unix:///var/run/docker.sock -``` - -该配置项为worker调用的docker守护进程api地址 - -可配置为Unix socket(unix:///var/run/docker.sock)或Tcp Socket(tcp://127.0.0.1:2375)形式 - -具体根据要连接的Docker Engine配置而来,可参考[Docker官方文档](https://docs.docker.com/config/daemon/) - **平台用户名与密码配置** ``` @@ -114,3 +128,27 @@ JIANMU_GLOBAL_RECORD_AUTO-CLEAN: 'true' `JIANMU_GLOBAL_RECORD_MAX`为20,表示项目执行记录只显示最后20条,默认为9999 ![](./images/execution_record.png) `JIANMU_GLOBAL_RECORD_AUTO-CLEAN`为true,表示项目启动时,自动删除所有项目最后20条执行记录之前的历史数据;默认为false,表示不自动删除 + +**触发队列配置** +> 版本说明:`v2.5.0`开始支持 +``` +JIANMU_TRIGGER-QUEUE-MAX: 5 +``` + +`JIANMU_TRIGGER-QUEUE-MAX`为5,表示串行执行时,排队执行的流程实例最多为5个,超过5个时会报错: +![img.png](./images/trigger_queue_max.png) + +### Worker Docker部署 +> 版本说明:`v2.5.0`之后支持独立Worker配置 + +Worker Docker启动需要定义环境变量,可以自定义一个环境变量文件(如local.env),文件配置如下: +``` +JIANMU_SRV_ADDRESS: http://ci-server:8081 +JIANMU_SRV_SECRET: worker-secret +JIANMU_WORKER_ID: worker1 +``` +启动: +``` +# 在项目根目录执行该命令,lolcal.env为自定义环境变量文件的路径 +./jianmu-worker-docker daemon ./local.env +``` \ No newline at end of file diff --git a/guide/global.md b/guide/global.md index 75c75cc..553acf1 100644 --- a/guide/global.md +++ b/guide/global.md @@ -44,4 +44,18 @@ global: # 默认值为false,表示不能并发执行,此时webhook/cron/手动等操作均无法触发项目并发执行 # 值为true,表示可并发执行 concurrent: true | false -``` \ No newline at end of file +``` + +**注意:** +> 版本说明:`v2.5.0`开始,流程串行执行时,新触发的流程实例会加入触发队列,排队执行 + +触发队列最大值默认为5,[配置触发队列](./custom-installation.md#后端部署) + +流程默认串行执行,触发流程后: +* 若该流程没有运行中的实例,会立即运行该流程实例 +* 若该流程有运行中的实例,新触发的流程实例会加入触发队列,排队等待上一个流程实例运行完毕后再运行,若队列已满,会报错 +![img.png](./images/trigger_queue_max.png) + +修改串/并行状态: +* 串行 -> 并行:串行修改为并行时,若有排队等待的流程实例,会立即并发执行所有排队等待的流程实例 +* 并行 -> 串行:并行修改为串行时,以前并发执行的流程实例会继续执行,新触发的流程实例会排队执行 \ No newline at end of file diff --git a/guide/images/trigger_queue_max.png b/guide/images/trigger_queue_max.png new file mode 100644 index 0000000000000000000000000000000000000000..7ae9af385603937fa7172a55e00864585180fad9 GIT binary patch literal 24628 zcmeFZcT`hb`z|WD5ey1!sZsCz2NKq;XMp@b3?upwXtqz9xWgdzka z5F#L;(n|<62#AzWg-{X#XGPiH+28Nnd&ln^#O9pkLOR+6>mn)98{e4poi-?{R{ z#7OrrNEozl-@d~)u3s_Tw~viu-#!*6jsw6qI4wo(efu2fH?C-#2iwo%r^`i2Z}SUF z=f)- z*G{oCy!4Gesnx(EagK%Om_+Rc*?ylO`Nu>M7kQ%E$Awsk`;g~L2@x{Rl3r~uDk{1& zno0<5OJa8I_c3E#_g(Ps5Bs#HwX}e){yw_ud3ad={t$5fkLbV8_lX^1IsW$tE%wX* z-CHib9H}+qOY-JxYNDvT?sG+T3hcFVfQwZp_|$PxQQTZP+wbop??*-Q9J>)#5PeyH z?$ET9?Ucc<*f>OurD(!ZGEv=Ze?24!dr zPgzwxBljXUhc+I_^n0(PZ6+F;7AHD)S7s+dH4!<<7k#Q7M*rGa9F_4NsU=pR#LtCg z^$BLw`j)G7!*Y<*#Up4UcjkqX&6Z5OMVoC!-3MQcREGn2$*i>{qV$7`|7@VU-CXNQ zO{s`=TC~&DkNvr@xJ$wBYg7VIH5Fmqb7D>Tl%S+U(yE#<{#LD;^9{eb2}}>Jp674# z#8+~1B&4a>U0QFmX{w6Y)+_TOu@K-N2eG@pD`O1w*x|XA#`CcCmqT@JHxvYE@AE$R zPkXQIZdXZq(BI1Y-13_mqUu=;ADRvIY7WsS^;M1r%~-FLL{K{6xs_i0;!@O@-PK*{ zR8Qzy-3oag!pMwZTShx0Do5%Ker0g<$ zwjB#X{kPM4aPUAoa6<$ZqjTM6r*T^MVK~EwKu>C_ZVl2O4sit!T8AQ>^W;FSe2F_X znvB59gxz_y+;Hlfy!!5%~GKd&H$;cBuQtcIu=DeTzicwQBO&$tPgc5sRcr2sAE;(cC_<%UJK!8@Eum z@*1!lwrrtmZZ{)}*F-eo)fHYRUFB?V4f~+So#y)O=pJ-;0j3!Qcy?L{@JoOAz>Ag* zJNYYTLxg#DR>m~>6T`Ps9l`{l)vgqN9_cIPu-zZryT}3m3iKMT2YSuW&KhFXNg7MH z7+x$SHIow2S98Ettyc)?R^xe4>JHfCQp672OPsphiD1b6`=|}Ig6G<{CRU~&#`yYv z`P#{tiNtwh#0e?2J1wvOe^MpN@XIJLPk%1Z-tB z?kw54*{&~T&`a5JcDp0YlcA14R*=JfV1r_@sexZg-Y@IPI>rsf(arv0neA@BB2g z_NRUDHe$PeY<=e8IU=r;jDDcIivvx0GNNy_>Qm4owHtT5L}HTaILl*_Kq?zz1d}1M z?fXD0FHOR+jiylj{S8Yy+Zdi}DIf!ETI3$UZ@YB~u#CU;7knzNzH7w6E_lvn$%>mJ zT#QHhaqov1_jJh2C@#FlGN+}ENaiJk<|32&AlwdDJ&RM4<5QJDiH?|m2 zeW&X#H|?$=cH9fP3GSS_abj-A(-)@8T*-$zgO)T+Jx6dg!Om@KDV5@Esk1+G(MqRu zNpP$AlP$)?xnZzGA3-x5W*fY{%QzpQfmjyQJhYp~f@Hg^84=<+^Af$V_5pgX;fuf3 zLn>%}8+X#Rq`#wyJ+tU6W&^U}Fnq=f>z2ndkr_Ve+BCSRmMiS8J+b?9*g?j~q1Ga7 zQnKU`&3)C1RB2_M;=TGRY3y+8K@OJR@PBw9>KIQ31!um!nRHS|MaAcfp!3k-3!tLP z`4NY|4)^4B+Cd<4{9lg>uP!xJN%mLXV5G|-YD^vS7whD>5t;#^0=%xWQp8J)p@9iC z<2p#uSZ(?G(8S_sXw%sCsy`ODm07${rqKkgKul7*d-X~zavM5dUyw*E54PYC5vjht zB{+H;u)y{s#FoX1n!^*YBoS=AE4|rEkUNwKsa5^am<3a_#AIkPnm;*>wB_b9QmD=Q zM_`+_3%1`OJgB>wVyWB2nYX#Zy%5E(V>>^C^uY&7p6cc{CEj0VR~_nBn_&Oqm-7`z z`y!Vcau+AQBwdT~JulW-obHCbn+93Bh2Q?cD<@bImonsh>rF}RYQze6!tVQ)zZUe< z2)<_xejx9Hb}#V0*SUhGPYv@v9S&NIwv2VJn))IRzNbs#MWaC+SOgZeHbhYZaoAu- zS#_`(<-Uf;2b??OIO?-9@{u-gcGn4E3iBQ-Dd|X}BNV@~&%$GPm%4$t1@V#oSpLy; z=iAnc+!S-Rmxzr`L9jV>M`O4`v&c;9tk@V(!^UbJDaxZ{I>{?NUw*^jUGrA2e_@s(-89LGu;8$>%9%@gosxWN)XGBtvIuXt zxuBbanK9PWpvta_;aj%5+0?W0R-d%s^zz6arE)o$uM#X(X3GIV z_sCt&vA`z028i_GBHkk7B8i{1t|`;2$efZgK13C1LTp0P?)RJPH(r&2$8%eA59i&~ z+6>YRK7NTr$bK7H`Zh6fLFE9l0l!NN(&U1^|5GfLRn6v%*E20ckW)*^3VpjyV=Vkq zh3ac1``h@)F5G-dd7|ezqMPky?0hc`vD38dYm3>Ocs%PkToN(;_I%Cz^}-g1t^Que z5$#YftV$p5f`s|TY(k=E!4`H&LnM*+Z~b!U@PX43VeXss!JYh)(%J zA|)&Q0Lx^Ax!-ZGE*y-eAd5exXm2uEUsu_=@XIxvoCA1qq-X{Aq{|B^FgrYrF2>&ZdfgRz<_@uslY_9`o=F`@VpVfEN%B^+ z^&*bLtKag5p?3@~RG=qB%rO-97(7iFC|+>v3r{(hZii9J~(G;~N$Ym-tY9v!(% za?TU1@*Z13v!_kwcO<&7_8Z_q+F=}$4kGGU^AgMZX8{krwDUbxJ2c}!^w2JWkwf4f z^2lWwr-~@Y-t|z5@ot^ne1It^Zm}4k)p2paBKo{)U-;mab1cVXSsaJFK4j?kFM_Zs z&raEC+?#vQv(t8sWxULv1f`eCc7WzkE;>rw8S`A=qlQ?XzQB|hDs~z1Nx_R>@jVgW z-(8e}Dni9nLT9I&sxrb(M(6%>DJV#>jJMlV#aiha9X>vu>Z~c{U8Q|JIr~;1ShTyX zY2CU$QJq|-Y$RdI&B>vtU*-rPKXTc4cf18l6{yQ)K{n`zwv$oc%0MJ%Nl zy~Jgd#S3D>K{H`qZ)`TgyN{T?LcgP|jr4CVd>`Nz*a+rcAG+840E=x=Wl#C|sbcD1 zV)t^C_Cb!O_SCAUz#tADAGcZRkXjsZPk6p;y76WLv5VK_X88;(by-+Cqlr>xk=Rhj zDOkh!p-7XK;L{9|??cj-i^PFB2`;q5&z1#><(Nq#lSym08AN3{128 zpQmW$zDO}|nj1bYVIHd<11pJRNVO?#D<|NE;ti2+ao={ff-+@xW_&UWuzcGI2!0#? zok3-%joVmSc^RWtLt-R!UdJmv4z@Y$u;U%P!*Crt*hx$&Bk!2@T0W4(d9PXLJ7b+! zhi}BCyA7wn3Bs{{lf}-tFnd;=y`_(=&ti+#IX*6P^30>>%L^MWT=44!Z==0jZpZjq zm5fTUMbG{8V9C}gj?y*S9R1^*g!w|{DEkAYR$nv=(%y{srBFZ0nC|we#!Qn7=B`!H z{{q3lyUNrU5q@^i)ma-(%V?Hh=wbAX(r^Wq@f_6yjzbTMGv@5kmeK3mz0{i6vCR#H z*fA?Z*%JT_#V)BkTv{J_eEvsPV&|@>hnMEbys#sQ?hhSp@&w`{9126@1Bp<6HyTw* z{>d5T70UOZ47ftAD_b~7So2mj_>WxO4*SDHb%-5W^aSH#Cb2@E_n&Ml%=1(Pba3p+ z@$phW@rO4Q4@3=eTCH=mUs%j60M#jZ4qBjz1km=Sb|cel0DVHzZsx6OU^AJfYnKeP z3P^ehSCLbI`Z$IYinS1_U8YiNLVu7S$tAz)L~bPt2Dj|%Mk94 z2LMe#z-bE;Z*D3)b>!9LnmlBbjI9-t-+JZLwsy5ifsn!HBDXV(o^0?#-?b+Z}pA4Cr-Vu*91yBzx01h;3gM^7}zr8c#4yC_AtZtLzBK7xAlEhr-lEAUXt!0ft9 zA7`D?(g5kC$#x5!e%)pZdxQsa-mSw1msgo7eNJLK6%ipT>Y+~j+DSJ1nz=jKi+nRd zYgdzTRUsobgA;C8{5WTCu}vA;EF$bncwk8!r- zSVn-RGvHofn^xduzK4Lu+dM1O=bY+g?aba!rq`6~(HZF_pE_I3Tk(k1N4qAW#fcH_ zjBKJBlv0FsoLf9O-6(%64zjtG@=DOVpY=K$JOV!w@hxEHVUa{P`PGfTqtdR66<4*S z_>R=6c$#t?)HO)97{RNZKR#ae%HfaWbCyMAbkjKi^`kJ%urG(j%P0D%W(o7se3Hq& zTUu5m`MGkxt67OM6~ zwD3|VPRMxE?bfE%Xds4OiWN4HoE<1#b@QTYGHAw)e=STd&$eQxbUSPdi5}^=8PwHG zaBnbT$ND=7v3Au>9UvF1b6Ds^i#kpRu`%t#KP@|UxaCsF;@9(`WoN{b>a;0TJE4QWePN7R=HS;VnU(WK85&kaqZK&= zb&&n>{lq+ zFQ&(xg{`4)U6hOxwCz%fiq`Z35dED!n(SdMa|Pe&5SMWjr|z+3Mc{3D>uDMDGGdHd z2Jl>m_JP=8ywyQLHv?d!h=@P`{PWR+4MHz7pR48uWg;dLmjjcXeu=GtpR>AM=&L|&kxN+U zPU)_3p&*a7+?9UZ=b=ow&zq!24`xnl*6u+tJ3kjqME}Ya(IXF^n}83pq+~6y>L8yl z$I17`K2Z?ZwAkN)58Y^3>Eq-HZ7o!ozRYqs5VMO2ec9dHUDW z{)m43__715j++28O;jC_BPu=KWs(X0zxpvGU*eSLgETXvMP~Yj6Z5I zvQxhiJB-+5@1`eU+ejx)IPLB|47hS%*Znn^me2!jPBzMQlgE!$N{{g9l<#H00wltZ z@+k3gty^4Ixx4*g;uBe2J#k?t%vs)JsLvEr?LOt&}Z1y#;yL=?S)7VUiQ z5No3L=3iz^RQor)w-Zt3+c>sO|Dr4Y#y&?bP0?$JF*#xjvF~KqRPt5TbR;FFs*?S3 zuJH>d96O8Yr4xT%%bR|eflfMi)>0N?4zZv5$(H$=Jl4!F^YpZMCzyDmviy(eu5)|( zM(nx+TQnv*id*D}Y`SvE<`3n%KXu+yT#W<;<3+hTwr;~$`ivt?LnCGfx{nRVi7ViO zSBX}k=R$wBXvzw7WLUuC%oivWhh4b*QsdjJ8&4*iI6F0LX21JQLWj4v3o`|FxA9B- z`Rfbd4si{0(NV0z2Sn?SiKX40rP$Nr2wR&o{6ZOO0j0r{Rs_&+;kCN8?bW7dUzSK2 z`Os>7MrEq1V_2{pNP=|E&h*kcW9bpYNK{Q}zJ(ySMWGKfdV>h57W9o_y>v~^VZL{> z{wq7*pGY>q#ag+=LyI<>IuZ8DpUvXP!)10gdKA8E(De12xf(f7oLgR3uGX#oNNt)K zZ`5nWS9N4^wv_n7R_81f9l~dGCuTDlMJ?~u4(oKf)cUSn_jBr8d0rl6F75mj07tZ=%`7^r^o z%`3^LemT1QOYuT~LNRRF542)TXZ`RyUt86IxHd0rN03m!7VSgWftQ7k4wWtr=4W!% z&(6>GLLtF$-{Jma+E#CJ9^%D1v}rWB4_sX=zXN$pM#_9(Yw`1o<66DWVx5zko7!G# zcwMp91jL$L(-(S6QKvkN@$>Gu=-Jo3s}=lttU3$&7!7ov{G5VOLb+aeqIKe=p^|)pb?Nnh0NB{B*D$-s#b5 z<979f_hA0<=MelIzZp}t-5l=FA}jPIHnRvdw!8fe2GVJ!n>k%T3Ql!!(s;TP?Ummj z0eZ|wF38Pp5FV2*%V-H~5%5hi7UkZRK5zc~PJJIfR!|4sm@d*!s=O(40ei~qd>)DD z%w`N?C7!rxhcr~LiY%pk9_PUoHf6Et!)1xYTXfUU`EY!TBVh-I;Vfb8ert9nDPGg! zcqTW;hW8L(yj{t~yW5+~)<`tu0E+D$Bm`xY`DV-#yxIrbSdL#9w}x*vi;Qo=I;ghC zv%OqdkdS+pv-@?#Vl^(8Xgum}e3X=^?=e`=slVj>eHe&YK(}G-pAp*~K|1?9I>SA# zFHBdvW*i*%z}3Eh-YtA?29`1-P7RSxtY7=>?U<&E4wq z0-L#clV_!`n=ez#Gc}G@nnf05K{uKYk5`jpn|FFAE9k}XR;@k$6I2$Yj!aCF>5_YW z(XH{7!6^0y`GTfw2xty3U24Ip=ao+)g}xD}nEL=rt6aKf_ly*QyAWXP{Vt9mMWxlD zD;m_*sv^?+l!gN5AODHGhPk*PT0qPyt~MvWJD%5fkvN@&V1yRr$LlW{*Ozr9>`)aS zbDv~6eu49MDME|AN0J4}&9J>LWS=iB>M1XAfe12ojB9osE)5I05fcJ>x@PUXZzxcJ zN4mh2IUdsYGc6E$EW+ zV3(7iH)lNl43+t(LH?Ry84qXd2p0;3gN!{5G-BNBV^mYjFDLX4KHv{5%uR$WxF6C~ zx0J|{xJe1;)G1tXk zl5;qW<+Dm3tTdJS82=)YCne^0qB(2-?5oJ-<2a$JzYZYJw3)bN3j_)9&_1@IBd_wN zN=5hhvxN)mo7_)iJpnHFqx3l$ObQKA&K7mU*`7o+@Rr}yDkyFSrLI}q#Sl*zu)Ko| zy1$LTY8Tn-)%WwJ_KOB7yfGUBH2FP|eaT@w32au7*X1=nKjX>)#_ z6jcYPT_LIOiWI6>Nm%kck@ZH&I;KArv^yVeg}qQwwi~8Zu#r88G{YtUX5hc$F>*ts z#B|OUA~8$(GxXori6G0kmZ53(6HUGyxA!2<^gg(eojQNYY?=9TzOP;ak=3}IB0Y0c z@LRy4hJZFrSd&HRn|R0kNE7f+jotZjd$wrMTwjxA0{?m;n?p{d3Efoc-4pe-5^_nr z{wR`om&9t?&Q&z6)cu&8Pfo48sg>UXDqkB}XY7P7J@mpZtqIv2B@%D*^DjK zUiRoAr3HIgV4<)zLdOdb3=Nx`nA0#r+SLC#=e|^w=`yJ(!l4}q>4amAog48~ng^E3 z+Y*1cK4q-K*fd+>CYY1|52)!u_5QZcYW*c>L(Aj*dX>UFD7Iu)aO$Zh$Y(_m2T|JC znQbn($JZFc4UX2gh`gf+4bLN)B)PPIL`R-ap9&#PT*dmzt9Mwk>WG!-=&AS1Gv=BE zFKZQK89F9I?yf6ITu>Bn1gut{3gLzbI)h2{KI{0J#Z3KlWleOcxxO~0eC14T9M~Om z39lhxPP!AWRA|A1Y%c7(7k6uR<5q55h?|0geoX|b*!dIrzcQ>88uI54&s^$ls4$OS zD$ixd*BQ#ZJko8Zx8L>0RN4=_8K}qTm^CM$!Api(1#Msy$4D-$dqA zUvg~DBW`YbKkWPe0&FW5r03~V^Ij@a;aXCPZyz_m?{&s7ivb2KNY-LNc^{9~b01Ke zj+#BLWtLpA-kXb^ieuG@xeVABSBr{CZxD}h>u>00k4{;zeihc1qJ*vV66OKa#YZU& ze^zDL-K2Q2!!Rr3^h4zvP<-Dyh!9{4%IKRgTC$krk=}g2{FT)R)@osGoeMF8{%~Wv z0|F6$8YPhA90V#YHr&NtL1x`2_+idQL|5k}Lzc`+i&#Up2g0GocJE+mP{*?iwsZbH ze$XS_cxA7A|I^eIxEEerEK@^4U3|S+L|ub3T|XTWlNeZB3zEcQ$j-PCRvoX6@z-aM zFVEu;ak)^nnA+L4F8s}L-yu`;C5u>IX7x+C5bq zfM#grUmNhOgC0&=yzH13qX6AjJfJ!n7oR!_GJ+ zBxUmxISR*5DQmdMX#*ZXnT~o9y{r>37HJynp}W++tzLPVqEsbEolRTClNAjL7^@^l zhFZkhOc&Icr6k@eGuI`*UlnU@pqVM{#VVApY~upVo(FyM=TKWWH~K-d8GT)Gl*Utb z>vw?ptGcH897uc{#zbOEP0B^bl+T5pe>mD$Ae&5A@{tCQF}9k|XQYY~jK)X$715Vv zz%fBUXtg2ae4cnlb)~frE@zi#834)CDukY~g?SJuQXdQ?H@eCOP9238l^WcCK4yu` z9CKC2isO|Dw$f6oqcCbj&mta!T9yts&cj{sAVA*~98Fa8d!}RU-jdbX;*$?keWYrc z9y>$M(hM{!$yqjel`1+q=x=*9^l*A8)^lyRe>ECsELooh(O4XNUv2(qQ|jO6(Ms#_ zUTm35oMIN0J(PJho=G5%RsQcRY3V>Zt zY;k;$#OUYG6PdxiE>_fBrJz4*g8;N}f3F3zo7W2xqd_1+S*;vzC}N4(J?7C> z4ODcN#~Yh!Lsp-5=jaOh5Ey~FsEuO(EdTCvg0i+!feS+xMRqln*46j!{_BS{bLU?ENUQLUK*V{f?{UzGQe1nah6EzD-RjTL`~VHnA`| zHg}y$hH(YRro^l^hfpy1i#|Xv&R1-`WG$QR%}-)2H?o+{e*4@+dB~>H^X%y3Ae5?L zdo*`iRmMFsTyh!{q!dc#n?Ix(k*Pn8RdK4tlBhs5ATL z(kTM8e<-}}ou$9VDM|p$=w5+hJYj2*dFD(0`gf!LZ>5b;oiphN)lk--JK=v3#6+@5GU9?}RGE z+o=41clg9Bz&iY1}PQ_8uunuZm*lPMk}Tf5aU; zG&s#ICfh$k$mk#wGK$I7ygPPqBsv(CZ3*4N(W&&MOdo=*E0@EVQ6)U%p}3m8XZ5|@ z55c>TSMW>oJAXNlo?Q$x>E@~{pRQ>_qSc-@S_KiQy=G>5!(a{hVig#}#BaeUs5_h< z=J)Mqo)Zn3qz7wHZX{Jj;njU)jEvoiQx}}j(_UkB;dMn1A6#|FRA3sz zBF3JyNCu-!3Z@!MrWZ*;r>94k~>I)xbtUkIm zF+;Rdue=yYjm_MzUTt+wMZR)P_@e(NEwGfhs^qy*70X%GvH4OMk}tfg8poUy<|s4t zDcdML7xD0#HB~CJBEH%4R>2iiD6%T=-2D2%dn3h1gmG^{{`ZetljH<}iRHxnv9UDf zFj6Dvv(e}D1sb$O7E3HV{Stz=*xH)TOtQ~mVx(r^YsjkiKq=BvQuVBa=TxoNa3y9v zf{zdS_Q7A+V->V=*UrTMd1>!Oz0QO>G$TaKZ{o_VqVU^B_Dc)UjdZmbm3x!dRvM6v zO}*^g{Nm~AR@Qu#w4Pj(d>B+dc&YwgZ>iZKp^*xqW@eJeF_W8fyJunwC?6*>G zf|w>RIJFPnYAV2waRbXC1%Ee0V5$= zQi5{!wxF-7MA4mxHDV*x{;n#OsmeZy{bzl7KxY7z{s|PmURPJe#K3Lzbi0RRLZx8( z5gq^~ed?A4`j`?;*qr%jxFQox>^AB?v|TfEKzvyd=SqPte(a4mQaM`kRzGO*HRR*j zGBZODp~b)M|!2nWa+^GOoWDibwC zR}D~0B|6m5-R@1*QuEU8RY|f8M$LC?wbUE2(cFXk1yP`T3ttz4@ffvLKlk*+gD~Pc z1(+UERV*f>2JWp&keZ)vi^~D_STeyg^Cu4~^&R)$Bd`6L74rypk_Lmq-U;Z1ZY*NJ z5iC|-!?Eu05$urdqk3rhb63r`ulmn)ymjq zev8S&L+4pkOCsz}`fo<&i>dofUOVoRp>74)Sf!(4Mk*9s8&}IDjUM{3V{JRtnAp4Y zMTQ$9Vx$VgnQN}>{Dl-IFx?p7F(9o<*h6cST46P#5&UkZgQTQ*m{O6|;~A!jn1;XT z^YiDzrh++Ua$6P5i(2`|$jP;#>ht+?X-dqUJXyM0QsE~3g+G>+M;5YlSk)@26w;$C zy;s_48sWHsy716KG9=)vkfnzX5%uO}vse*G4)A@y=Qi(ws3W*u6)Z8o5P~+f^NMLu z_|?I1H2{dcy9u~vz5_HE=^FMNflUH4!BRZTSB5^Nn-Q^NruE^0D zPr@CtDyynL*946HsY~Z82;Wn+4GJToZJ3)?*CTH5H!DB|?EEO+p7&?FRs7t;pBctF zZSP3x(;?I>N`Vk|qpXJp-&=)-)Zug-k|1?3NRkS}O*hTTn>EU(BIRp-J;C#|_dO zoi-Pj_%hRXBmzzgq(pw2<0o^(*tv74FuL@cMnfI8|MdP@@9^3lox$XP0GF>;;}eR! zCc9O4e^X4E^0cf4Z<0{TOjAiGvnqLBf(3c_>lgPlQspHfj6Wxn9qu0?R_&6Bu&<{-EZhwTsTX`K9UV=Mq zn-6SV%E+G<|Kn+u@E_62;(tV=sFXQ?V)z%n?JRa)jxDZkd6?864u|TgEDi_x5EJ7x zmwO?PbKX9y@y?Kz9et|F+xM4|okmQv%o-j23$uWy_8d{iejFjM+B>dFmAisDKNM7uZ3!TxZ9dI6kCYRdhpS)@gaX^*v}grriVs(=!ubY z*F3@4Pk=m%-5`gS2q}Bpy1huQj2y?U1iqQaZS~(^K{7u?q?2|Ycez#0NHfX5YotXFN^^atDLg1m5MAA=Oa+j zYWYxcZVU&-(8&~d^v=!m>ORgJ>h_^>z1#$IR62a7X$VfFQK!iv{+iShX`org)G0C0RY36Y8$Zi42?O6k0&8%#(FrQss$FNI;5p#W6`SFj&`jqdV)pyN9i~3`9 zCTF+yNKx}Lb z5!UT0Ndg@{99RFQxV%3q-zZ($%N1H_cNxRUppjD=$9$`z1ne!^wLG0O2g_u9uV;q# zc6O9_++n)V%6nuS4%Yy?mCL3{v+7Ju_tg0{2$^Za9}na&5AQv^-m){bPux1X;W9RH zeHaV<LSwT-!Xkgz@|12er}@46rXsIxCsLUW7N}n%hAY_ z8#=A$2s^R2o-7d)3q1;Oe_CP5L%m{;1O_7fLfo0OOslUXuI3e2OnhD7%!RB1@}V89 zx?=CXH)lluY2rmbN@s^0#={aYKxD*Wj)iO1n1|cAz85ET1#+&%Nnd*=bkn9Xcx7Tp zyCX#rT@hEf_;tu~uFPS~#(z^}G0?>M)j?p>@$p!V{m9NwiG!!u^NlkXZ=#pGG-@ne z|LXWP-<>wCaw63DdFOhz!?(VbsoqRgH(9M zu5T=?oREI(y|je*9o)JGkvKpwVwxkc^v&w}RVhopRhcs<-y*`yy~2l1DE!v+_ZCg_ zkI|;0f&xo&Z(JPX1TEG zJ&M06T8ArF3BIfEM_+6&HJHTXYj$<9@ODejk=oGRG`m4a+K0fb$F7?@OWLj)viNJv zcv1|ACkrid{b;oD^ZF&1{28(Gs0~|)4Ltqt$f@H}Ab6)PY<@1I2WR<9d{#x8jD{aJ zyq>Mq*>Il^+GFe0xyM{WcYvi#UtdsvaQ-ssHqmqFS3vcCa5XXB=N5N(0*#>z zsOjJ#Vm?>cpDwupW7TH0A@jk7OLYJ;ijp#PhM?RTFY+r{2lTx_K6MZxW)8EgvITPw`FDbeflIx+jCz*G3q%tFFp7(m{>y%Wc;?%WK4+=jHz+Q{M77dk8&gSXtyi(+M zptoPXH{ZAfQxj4??J(Y%p>Ff+s6t+)y@HU9%w?OUgmK3p9GK1G{{H0^I7+M_gjk7-MxH050g&qE{NUI2{t#s0BQq zcgw>w7ndoa9{)j_Y^EyGcc9b}D|ivU=H?!bYUbt>PUuP$yA)hniFc7-9|q>rsEFvk zZcJc?p~@rw7&X(F;>)*xTUFeA@5CYDCeYW&2u_Y%m{=Vk#N6#ramvZ@iphau_8)v5 z-9`L~C=0AA%wzpO>?$d8xx7;Yjqmz71-#WXMWa$Y6oFWAp{(P<f+zWT_)v4J$bO!Os~y(@Pkx^g?6I z(z!RyeF_vO-raZwrQ{i<3q#HbhY#Yd|07cz=9sE*?}bN4pYWneUby&WduvsH_$we| z*9wR#F@NQv(ddfNMkaOt1ERl@q93F7vZE&V|CJ_X)=p^Z60awl<2WZdExSiY#m)$? z48KFcvbfn|9yA>mQF=W`XRhY|F0hyyywJM|NVRZHazT&0yqRzrP4MI4Bo15)LVe$yRdh&t$| z$bXkg_OUqbuks$9>$E!jpAsvhR-ODKk=3wKah0iRsddAF_CE|u{>1}Oyu@fYArI(cbkKV@$fKhB`frRxrrjQJ+^P6mjq{mzU zZ57+&A)aG(>P5~0 z%h9A5)?zTs>?AKzvPk40~`jTcSi-dj<46rKpE^q^9>pZQZ>nF1$ zwZMF`pRZR;Mv`13t;k3R%Om+ii@T}0YBPP1v6ya`X~iza|310p`w&W z;t|%vMx#kyA*xC<(Fb|;mi}ZnqI<%^2i~u(c2jfi;+l=pRf&^BW*#4b(06^nA%|i% zR{fCGW!MEM$2q=j&{MYxmf|y@YynW63zV@;F0{nxEM2wBaTkjR_9P4-xFA|?U_N+M zL_L+>h&;VFttp`SLmpeF`JPEd0=4E_!4a!J+Ic2!ZRVJSEev5D#i4JA=jNOsO;fE& zmp5)B1*#)FjbZ-%9%r9l=#enF{{orSO)wT!;V(EC9-kS$eyc2CwrA-4AzGS6&N6AI z^hA$GCl1*dfh*M0iguGdY19^u8am`~H=&K&WM(7x%j__GYLE2Dq)u8g9r zfoho-Lf~rwH4$9nJFa7$$9PwQG0}bZDpBgY{MxR8@R6s5X8G$gPDM9N_%584dT*ll zt|fYZN%LyCK=4`6X3^CG*cS0GkGDAQQCw*o?uoL0IE|E;s^o?8%J(&Gomb@>(l{(h z9l)vE=wHQpR%|$tV2Ed#fN>u`juPUrbl;Dr9GLv{gm+wCS;*~gpum9g<~ZC!C@G#Z zUmzGL?#TY=%ygJ10-p>oWR?2qi({&+_#B zg+1@_X`(4Mv{rzti2ao%0yNS`>+9OM13@n~L&Z>?WE=~pool;o=4{>e{1><P-* z-JPosdd!~g^=)#A3?GOr%@FoCDriN4&9d&)BOi#zJnYXVHRm_pw<0}$aR56z@IuKF zjbrqC#9$Z~{KHeANUv8{p9JWnUmH>a5%@vEbzIB^MDGONZK84(l@d(+qY?^#&tlkX z!kUQ9SycKoPx6ResMO2!kgBbt#3cszx0$}rolC=`%b{C%joD1z~hO0 zq25oxxyPPm^Q;_sAPUR08gOy0b8k3^F1sO4dmme77?|x{Sa~kJO=lP3{x(K?R%0Q! zN45x*TrqNn!*pLR6>wFcPGXz|hPU^I{PK93f~(P{=oPqOZn+SJ-d)Teu3`Bq(9lwA zpp9BMJ*ROlz^;H^qnQ_wx<=L5{1!E|v!FIy*V`-bxZi8gg|tq3bLL`qa*Vs+9fv3; z=BQ$8ktT#sLxzvMBj%GnphUt(KXQ!PZZf`gz5d<(%U3)Ir-_JBfH@#-SLjUb|i9?1%e0Btz60{q6`)Rz76- zKo`&Y2qZmk(gt+~e?als6(a17(es=Q2aCPVR{)()hUo7{IvDj542G?BX}Kl@6O_m^ z#?@-FL!RHv=ii)&%wrWu_5Ea0nqA!FZl`+dNf!(==+v8niY!H=WzO}U;&#WdU5PlP z!#3-_?=0WXccbzAKdhI%XOeq`VVadk-7y{okdT9Hrf_fY=bq={;`XpkD(STeM*)wu zB2AWx%zB{YflHMa{8)eA;NA6Y5cFH)7OZ||tIox|cRd8@I zN*jtJR}NjPPj5KM(0m&&n1pgRkhFXO&z$v#DOCC$D)Yg5H{5HBx>bm$ z9l~lTd*4wYxhl++_fyf7W(Sc%)nl-$B20AXfeQ&D34bME^o9NGFVXr zfh8alSOD4OJi%pGtx@{IR-B0z;0T}0Isk0z+B;M}90A_=+B*VEnS0Cj4zY8r>$;VV?u?dzj#2Zq0KTePZWzyCk$F29&^{o}#KH z5h)wRz&?tHEj0CxB?o#Je8G6EH?CNhQQP0?PN@BQrTu*Kq7>m3?r#)IV5>CO!kmbm`eyerJy*BS(O>mraIYDbCuOjipM05;M{fk|?M zP5`5iSI4iA@u8<-QBze-TH1fb2~I zC7LqXZI;;^!zl2miAsXi2s?L0sHB5#5J%8NSp;Jr0B?!o{3~ubakr>xFw3Z}@+fl4nMueas{*_lCrk~}ng6vWFdrfMFVkv+8z zA9~dA$=oh;DAS>MXw91c0Vh2qT@|?9gaC*NU%O!?T71Ql4daDwXFKXPpEwzCT8}z! zXwrdt7-^E$?V6jZJNp+Wy~36f2lVb?xH&R2XC2;}20)+-yTuqIB zNh}7P$boSho@>5Eimd{iR^M#d197B?i^mJ84;sh7y^$uF_Z#?P2(&{~Yt$QkTpX*@ zXzh?IGSvxzNfy}rO12lzT1VOrihDq~AW@;|bLyJ86M(hXE@MpreK($Z071*TWTL4j>N;&Vlcl{%r7Fy*>Xx{vAFM@*_@Yi8XH~GUe_E*x5b2NXhkf4#z z;`oLZb5r?J|4SWZi9GLj<|ofx@1x8K-X5dXv+Aq&%T=I=l%>%c<=W;HMGu{<*C>&2 zVxihI!r4Z0Vd`C^<>8$lAJNN(1C?{@X96aRM4ZepC$8WOAo}O)sVi;;sr47`bWI~u zZ>BpSVZc9GqiTy`0jvcCB(`?f9#dkomyzLBDHDMmF9*gkK9saRv=M|R_)=BWHz;kd18p32ryR`&}j)o728)2^zmrMc;zbLqN zM0fUTII!XBWJ<7K1#y9Ey8H}}PD92s;B74pe|$!<9HagU;@oO|wiU^SxKS`paAoiu z(a{{^e+b9Q{ZG4^ATa%Lm({79NFX2nKiav{uBOf{j37us1k2QxR%lg31}D_CU>Je} z5fP9C;b1_7G6V=R1Tc~S3RsJQ3d&%RK@uP#2~&bK7^qmmR*@m2XpCN~gajHa31V_X z?!mk6AGn|Hx~pfMwa!`VykE{<@80{_d%w>!|2jGmj!iugNsa~UniX{rt=qtl3|SU> ze8;AhHyium=VS4qGs~^YxP(B5rJ~S~AoM4R zueZXPl}E-;*~deV8^N&Eed9;hG=>ItShY23Fk$$NE=y04(b9;(hK)QyNRh)ZPYY^G z^ReQ3z@_tz0CbA`d+g1^hAesVN8YiSR9sr& z57s!k@Xqj{LIr(}_N$}mx0S5;sukV))E{IA6f@NpleeVo5+4VA;dZBphuc(_0D;T5 zbeO1gsF6H)aekkz6^`zWvsJHr+d47H*{XoLNA;2s)ifmvm8a$_e;_!l_9om{ah@@h z$P#|bfzvJtpXCSR()`0fo>FbF?u47lyqB;&<~9a3pHIUq;0>xz-IEUOrL3lYt{3!|&NylM{xT_3k!^Jn3Giz4MEru})ZZ z&U1fBgV_L_o!N`a#&_6Ope}MYs8BP}-MD=#4Zbm7YFyWDGy_vzn@fJUxgVP~HN;`s z{vp$bdHhN*?_m~t@bXaCHTo_1U~UCxo#IBgELnPe*s+PPPM2X>TwUg2X|bm8ZJZ%2 zI&b0Sy{W7;6kab|oXnd7vjDp3=7bUnFq_~UX35GAZSy(7DODR=l)g}r`fb-X9_OE~ z-NGbh=u?&w;MRB6}8kmad$ zew=gg0kM^VnyWdmEu`^zRjyIonifoi`l$>Tn(EKs#S^P3e+F_sfyY*VOgFW+TkfsKx7A$0(X9X}k#pGQmsw91JXv*z;`ym!=Eg)4T}qj=+>8`E z!gKH%C2~GmR7}`0jioe=B1LtBN7&qzg<4RaWSWMV05E1+qvO!*0KsYs&*gya6`*{F zge)@&EZoja!iBdwY}Rf)F|@bMlPI_M(>~yFe4qX@Kb*Ibzw>uo8pLhIBvxY(82RY1 zzXAWfyzLf}?$!a^H)Xr86 z-E0=e?+x{}v~@j-4Yu3w)66;@=4&6U^S!0q1&w&2;082W{A{lI2FL#bW z-4B-Rl9xSbG&deiA+nuVc4zu`;+;7uf_TL=d0d*8@efUY4u7l_uu?p4kGE=z@7+$G zATkVXR&|czdIm!@-#GDKKUc?TibCZkb*YBI`0=M?OEay_@LrG;#gNam0f!W^>_`E& zD|K>Z!P#b6cFyZ|&TH0i6o*`7HN?Q`mHlXCRt@iYSb7#PMwdg?a_dPB7nu_KJs z>&APRg1U{5z=m>wTKj=}qFAxIoX!y;BrmlFfkVd>Z;#O4tOa9W=lDSeFn1>uRBB_e zn^h3I>4^A~@*d+rO@sQB=u6RPYiASrpoghi(wrL5RK3Z~MwnEeD?$GJoCMCcMVF#% zt>ov&Vjqd?fk*kJ7jQdNc!7%(LW~DByw2*#aSd#ynk;QW|8|{LbGrW~Gjr%ge_v6k zh|4~VC`$O6cYkdO8tFW>$!Hk_)bAy~I2e~`VtC^r`2OL<+d^d|k}Pet^ON^5gYY|P zwscfpf2C@sc@Uz$N!7_L2lw02*(0}SG#7tb5pSNGxlPrFs215r=eOMqG+r&B6y6=6 z?Tc9p2lrZAP5*pBQ_k9}dPE_d<6B$?w$Owe>NMd1GTt#l^0Ix+PsEg3+Kx`(hymXh zUEqH;cju=m9k<3GC(8K55}$3x0h*H?hb{u%GL4m;>+IsxOrrMKD@}4Ci18o;nu7GZ z9#j&tbOXnEYDYTP!ZiE_*XNj{)%5#oBjL8J8}c+P^b^$R{--t0=Q_+xZGUwMM3hIA zLVcX}dOTiaP`I48^D|T;F{LnPk=-9+zK-#IEqe>^9Tgk5!wFH>WmjqTCo;q1QNi*> zt_VnQ&F@nl!N;r;6`lD>w}b^t+M4d7T}W+D=I(H;#a9Kp?p-l1xv}<$l*@@xt@FHE zv734t5V0%Z{wna;{>5CVI9qq%B$rUp#u&~<`wA}_tQyQ=wK<2iW|PudgjSr-|B}~+ zX-koi<2Yul7j|=t!+J?_v{gd<7+eRdFEbeCn95DQ|E+2(<@FS?cIaM+QS)JR^jEd9 z72I%$jolwIlc$(KO1IyGk>Wm*Qwzxni{}wbHz`aIA|miG(msKmHn9hK8=r+g0Js|P zEtpIT^CVtqz}J^BfGv*PX8|!YWtgLoA0r$8{q>3f$*Y_(Q+9!%M}arx+DrJ_^h{Z2 zb7WkZ;TNcFb_F1g18JTKl$IkPi!ga|9G)UMh-FOovPeCgO4kH?jsBqL=L#HRxkEJN zgO#-PIktlg%0rP0wKTo7z%SW%G`+w(po^k>OVhV^zn52{HS77);i77$8!FbviLVSc zlhBjOw%b_I4z;6v?P3%&?NCu(Tj|v$@0*4&2kQvYWnD#^LD(o+c{G)qQRog=L)YM1 zmpW5}eDyl7k7#Ap#2BxssDx4sU3aDN1Q~UulW)<#)PB|vM9*g5q!XKKEcS1TqhXG! zg2?Hu!o#zgQwHQUEQa@$re(wP?N6va*4hIFL3ZYm>m_GpeS*kS(>pAz8PVamfLp>c znCJ?ok#z;kwP8)y@te?LXRMu$F@S=E&C z81?Lfl^<@+rx}`>o2vDfgdcXl;%7;hP&?g6i^Gch1}o{1(%?U?gTX3hJ$pImw*6`> z{h)9`#=Qh_%y9fb1?w@0?UX(YUZz;_EUWNwVule6tP`I&|9N$G?(xUEP3muMip}1g z^rT@r+t^(_^3{|Dk<+sLhPt2B2#v|oI}f~Axy#wei{(;QzW6ia8h_6ip@(?_5-rE@ zI!vO&?_I_K3f-Bm@j!@!*US{~bMiSH3N8^77VfR1;FG1f)-M8?l}q7Gm!Av(s@cVf znWl=}b?DcfAHGjHnLt$>e#DZ^UWBj8SM+IbwYJ(2REWHdIcoO= zu3MofH{(yvCNT^XbzeWq=u*N+EkA$GQ|`n=6#LYY&Yvd7chRS5ic$Xf97~YrCa>J7 zsqd5;eK>vy+)HUMK+~+c?Z+!~;s176Hqh6moR|IN~m-&lz zq!* Date: Thu, 16 Jun 2022 15:02:34 +0800 Subject: [PATCH 2/2] release: 2.5.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5232d80..07114ce 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jianmu-docs", - "version": "2.3.2", + "version": "2.5.0", "repository": "https://gitee.com/jianmu-dev/jianmu-docs.git", "scripts": { "dev": "vitepress dev", -- Gitee