From 61c4c97cba014f523489fbedd246edc9db635285 Mon Sep 17 00:00:00 2001 From: Cal Bera Date: Mon, 23 Jun 2025 01:04:27 -0700 Subject: [PATCH] chore(CI): Setup release workflow (#13) * rename ci job * wip: revive release.yml * try claude 4 opus max * fix yaml error * remove signing archives for now * draft release job --- .github/meta/bera-geth.png | Bin 0 -> 17329 bytes .github/workflows/ci.yml | 5 +- .github/workflows/release.yml | 140 ++++++++++++++++++++++++++++------ build/ci.go | 15 ++-- 4 files changed, 127 insertions(+), 33 deletions(-) create mode 100644 .github/meta/bera-geth.png diff --git a/.github/meta/bera-geth.png b/.github/meta/bera-geth.png new file mode 100644 index 0000000000000000000000000000000000000000..d4f37ab3c8eb462828338e5c66b2f5ad134b7df5 GIT binary patch literal 17329 zcmeIZX*iT`{62h-y(E+fSwc#-vKBFtt*oW8#i;CS*%@Z0q-0+zTN+D{6zc<%?9rtnV_jP}+^K+h`>#dcAG0$<4;{X8g+%_?| z2LLS0EDONJ!F-UyejfqAt+3k$H}8jmHfE0@-n(LcZ8Nf72sb>wcr*4Y3%iSIQ{IO- zO4_1d)8}sUq5#a2y^N8kU+KFdPutDxFYi3_i#_=l3=OUHtWFUnCA&1P99Ie4q`>EP z2hP2|P6-_NNWOs|#EkyAB3k>AL7b#py8QXWe-{J*7ILQn;Lo}LhI3Minf#Ib-|YXc z!~b=gATNXk_`tJrCKaSZ0}tAXoB=xD06<&zUseNIBwuROYc*_nh@*iLRC1La1hO)a zV&zPh{KVQdiExsFH%Uo3YB$iy5X||@+}`YZsm{CrATQo}<@vTvXl^={2oewk0eS-# z=kVwyWGtO#Xl%@;_goSHx+Xh~OUMzYFLs@zumW{r8X%VQxcYRP`nAd9L#B{WwOqp#EBpouQZ0 zzC%Y25}aluTaSK}0(rjAj{{s;<4IFRrtWMOxq|Pfk~@#j9x{5~_2KsF57w4Jc^g%n z09WeU(^5-c92?eFv>qV68ey_QT42$m!$2v(!-3hAjM9GG#=p}S+(lUYv^oa-s4h2U z#uPdxIiE8Nn6d$RTq{PpQFjdD8HS#lb(X*W76#xGQBb~9zVy+e*VCWO>HDWIav?N+ z$m->_)eTALsyqoYuG1ee)aVHX3S(hfCsS4=&11QcD=GmzRuPM=!q3 z5G5`8aIj6C1Ob--F~www88oXdzu4Wi%7`c$ihkpA2j^!9RsBj|IF6U!D~$2ad!uRd zr{z8|^X_T&UwrQUmasc|$$SAad>*3AsaV#+FTfw6^nCa<@pJ5V>;W3PT_frha z0LO}XWb-aoy_xNKi;L1237+TXx$27OFfw-edCm=l(3b{)>mw~h%X7;@QI3O+7jW|u zCLyfIeSt2c8UkZ^zWL;8mlGIPg9CR{rus9bf#V4P;Bwvr3*CR!K=Ac1rj1^r_tde` zzwJFMIDZTB>Gsn+mr+LhvLLaEy&G%P!Kv1$#9?)f4RNE?OX7W;N~+QZb-7{^J&XL{ z*!aN3TiU&#Lywy=$!X*=e{)}Sa>eAZiJiX5=)NfHKVCR`)ZlS-PzG2zWh`Y+jW&;c zVdrmTzWm+5UWs+(r}1pt*%{ZWst=1GNeM3CdKoDWicd-$LES10+Kz(_#(lY8-@6G~ zTkz#SeSF+kG5tOA1OJJ*zQ=`9I}4{T6vq4CJC@YjZ$I?tRj_+x%{(Klf51@Vy^9Wq z3Xe*&za+m-%upJv@~xXB%V}Pc`~4tm=ib5P?d;gGHr6&{pv%fN%jTcFVVSmiSKC0M zoe*W5wDUb$_d%%FJIoX1QLC!ebQL=%h>|?`x#|fv(Y3m*)vha--0bfQRt`zKr{M}+ zj<#hbBvRA&`Q=|0pkmPVp2WAO)3CISL6?31F%+am3fcX;MR41N!r^r)QbO&I*~gTF z4N{bB1h%>H$?Ay@T);FJ;2CQmHG&iU%UkMorL(D^{8=GCSU|1o)2v9}I%432LWMl- zO3J`}sFhlsUSGCEYN_Q!%RkvXcFWMAWvx}q2c!kCQw_`XlmPUyW^O8#s47>!z-gS; ziZsw+C*do}XI)I;;#>g2kqsdeR0l>o6eeuN`Ja!6Ni`##O)@xkKR^Dnx3}T)UWjW| zH$AN&Mn4DdqM}}5{i`{|hf>_~C=M&wksVs7LhB^O+tjdpt!uZC_0!ThT$WfLvBcf> z6lcVjbW*BPCxsZ!$3Xw}BN$YNiU~n&PWQ)RZ3)X^ddNXDz9GJ?qoV+2u2;~9dfYLB zPwV&m|yqF@O8H6lNa@_DJ#x z%-m;}f1elaRJ`_2kx;o86pwwK2!-ruZ!b>abSFvJ&CpmR9funmRJ~>-#Fk_h!SAvY zJo55WLM4OKRI?c(mEoHH$2+@w{TQN;54iDuaW2{u_qrf!b#UBCCum&i$;-C1=4Xzi zFVc)h@o?vPHdNR@t7}0*FfGNf`m^4kvEf#po98WMU}d_tpJL%Ovm8Fxi0nUA0;;O* zIK_;GRFQxnED$5n1zu*=!zR)1M`VN)UG4wENTOljgHAe9JAFNIR_nY&)0;K9`~Hc7 zl8VKX2|w#&oj(3t)Ei^yaxkij6_6THnV}?#2FKSZr?8g(I4oppzMrbBcwP{qG}SXqU7A z{V>tgB%ro+Zp=RijV{JqziOqR3MxJBSCi^h^;c;)_G-?sSDAEJ#Nog~IJ!=D?29h_ z{!Ojr)o2~or7sX4U!7_5xTb`@Xr8F%Wyx!$sb&qmnt;l}ec&wKyJd1^St@tq+7vga zS!V0!>kvbJmV1eGYjf+8W*1rO(-&pv+VK8IDsCbZze~u?-5T5VR4q217x(&uK87ae zwsMt@GaN<=Q0!RO6_aJ}t3G-m|I@euFyu(5kSG17$jufRY(KuXh_Kyv;CSI8${3l< zr^9a_cPO^*D%IL5YI$tIO~1WB9q-(3obik2(Asfpj&r~Bk`fKncHa{`!hW8+pWo|8z8>t$Q3KR+h-7FDdsVqDlQ zOA@TNH9PB_09D1XQu`TM?bVD`FK1flC!O<$F&d>tI~9o^gI#oJMgLTVj$n)c!_Q+; z0)&y1@!c!S`GycYT&vwQLpqHE!Q!LAX7wGUCs9K(V+^;zjJEw_KEb|RO74-D2=4{m z3+pyw(9cw*rH}g+r7M7u25ZCZ7Yv&|McH)wt(m&5CVbI+k|g7Je0Xr9GEizMY<6SN zjXrA;LI-EgcD;h>q;JrwqWV=3ND9~mG8{?|(=gF|PjB&Z)bkIWumOCZcSizh{+99xU*tt}eE$d*=H zHCZ=J_77L?MdKa7QYf=+=(>B&;gy`Hp;=c7x6}srI89mH-JhvKMy8Lce)PQicAxV{ zZ-^0_-qD?B9FnWZDEAJ?6p0?~n<(Y)uh91iao@X#AlPeQcrYhas2!;w*1k_%l?+5@&q(wO06fB1v~1d z&tnOvwewBEtxj(~b|=ASMf0Fs79!YP-1*6SZ|Ia7$0^(U2s?hD`@I?PC1K;hc%K^o zYDz<|$blNz)k!$2CdJz9j1z5tgIU26|3ltV8syR@5pS9kX@bU6Km@0g;k zG4*0nMu8kv>vHb4*ZpE_ro)TlB3yE_kwOU}d*L;ubf3YWoD`NIS?0l0EjxW00OhJ@ zU3C)j8vr6Zf{*YWazeXE{%7RgSXcBvC;2y@ZXZoPlYew<~ZzEcqPWDO_{H6 z4;rO6IC3~!USid=N(sV&jp;k?$T^;xnub0S*QNVhLr?M&Lu&XRsTFDt5!3>_dEA52 z9g0DE5HM~Y6)G_k`E%f}wC=ypS|TNooJY8y_1{*_p&~2+xpv+4j)Bj7t{!Nv;WA6% zdC&BP0IBDJBWASajDhlmmGMg`lyb(CZ@S;qw{Zi-t5-^5WT#V67X9wlk$W3VZ1NmM zKX6X?JY$p|(Bd;(HpwAyWDM%{xg2hrYt zwH{gZe9j9X2zN>)(p|-??=#KURCrLNPGuIKeIUwWo%qEU2^%6ti#zIq@oN3~fdmX)Ac3)$kMP~X(#+qMf?gyMGeMF9~STbLK-Mm1~&ruX7&ORx?$P>kX zSMzHhO$RC7((mPo22#FS^#N?`#*9#t2LyA5clG8_(O2~KwYRy&MBamO_L0ybt8mg3 zvHqyRo;rvoz^o5gqp;V^l4$LNMNm9_Cz%45Ygo}mXp*4(-Lxb?@zvX@xusJ;P?=La zT#LAX#&15l-@mA@p3L#9(aN5RwhyMsgX?T;r z;vHl}AEHt^E;{3RA9MEC$fxoSz_jiQ-4NCZAe-8h(tpskD z!yHr(Wq0G_q)IQ~N>|aVOgq!z!-}ZHug&fgzOA?aDBPa@^fqFRlKR>4a73L}^u;Xq zyj}H}4<}%6Jy)^3Tx`PcolPfyO588bgFX;k*7_p21?u?OB|i5qia5xdR^hNZGL_I6 zHT}>N*E%9Uu~0O^&AM^SmUmxZIg zfj1a^b>1$!&Gk!BA-is%xya4i)r;vrW6LMADLr?Ql@$`Is#5ezHyk6Hl0xcC59sqN zCP&7}hKt+RyCK9y!zUK(E>Mz1eBRlX+BhT{)4;^oO`dkp6`<>Tldwc1| z9#l2XvS_Ik9M(w*^T#l(b_KZTROa^?Tb}Yo>1zmb9)9 zIp_{yST!s;R#e)iMbnA%md5=fGx#@xu-r1sP;=dhR~Z9ZkyT*H(T7d+Vtu7L5Yvv- zvgK94zs5ZyV=ZdE^L_hue??6T;K8$zt|R39QK~(fR!l=YYPiz2yKEb&SWk zvO7AN$b5Ts3Fl@ASefKcvP~3zhi&8LZ_r=Wex4G&Kv`Rn|0m{8dxQ+K$1JXSogZ7C zMdQZQ4|UM|M`8ZWx>;A}*4wCdmc@_W;F5JV`l9+K^C>pUh{a1Fe*nG149PaV0njBB6?1N8KtuA$~tg07eW&FRFTMx6yR z7gzSYhqWXR=Tx)ia78p=wH~Jhut}SVK{vdb4lTV~miGo*5=AZ=n>A0F;gyl(vg=MI zhS%wPDn;kd&nAY&yMx`oBVcIfIB@D>HMvyu*xp|76hxDKH4QN!vI1W&ylMsUccjj0 zG1T;wYJpKmLN<4VePu1DFz%rLC* zr+eE`9YzSysG9Q+&ifNa6@!xOs)b_{?)R#@ITRHh_pX6%qgGXOYvnE2tvLGSwh&3AUr=Wlb*v2sS81f1Y3RBX* z_@i2VZ6A0K(B)^(9Sp1sh1jQYp(7b6m&Tl*IT$X{`K0488YftD@U*XFpWy?_7q$%` zU}Lgmba_hB*!aMnYI#ngyHp7F?CBrhK`ub@ZNUbcM=|}WG2lB0tf;}y``YHxuiWPj zr`|?L%hHDW9z|b0Js>KYt?iMnJ?=ft4vR+8m(cKnA~waHDF#IQ z7)KCme!mi8JBUN?4ZWd~^JId=$JuHi7TyDpAV{g071r!~Vi{j+*&i;<;k80@@ zv++r6^?mj-@7A(knxz(ZRp$=ItlRH9H=8CCNH+;Y0bNeR9Ef5b#3_fs1{3apDyS}g z#F63O1cU7UBZeLj|CnL-6(&+#93i1p&PJA{1uo}wk6m4!98*w)69hFo*3jB62j~c1 zTXw`k^X4oEv!FniBR`U5h~@P9)kZKk-}szt@t5LKV(}BnK7#%@$acJVzYPR&FJd!w)P6dTQ>oFZ=cWpsFLF^rC(@t!rgr~ zKpt=Bd4WUgcdEeffwWt=54t#N|EqDbzg8epS*r{;UrwW+-ryW!kx($b|0_xE6J;%H zsj1b`YC^S1@Y~W`e6Kh}_jjH2coeS&tL0|`C5=*~3+#BW)`L@&Pl{Y>nyT}xH9Mk@ zy&SQcsX$yn?crBiP3a-Mjh}Vsa0+H&#A~%SlK$0P8OM(nB$F{2_2Xlftgi*bqp(MG z=3xm^g%&iPXx$|WnH>y~JyiiUI7DhZnU$r=8+EnAbzsE6R8P|}1HeiIrgcvIc|W3$fKbf&XQ>GpUY#a*f{IXus>iUjO&mt@ zS-G7O*9SpT)P8@}h36_cjn*WPWM3Rr31A#H-0;z`=9KyNQxh5VS$Az)$G!)2&Mk+hhr32yDo<9q?7D^Qr<7P$!4s)F>?)=;im^ z)%gM*i7}1Do#1Q;p4@~D?|H;YohFJ;2fcJ&@Y1$f@U4Zas;1QIVxacNfLyKRXL~Yy z_Y9+it%kfC{90&^OTJf+27j-H<`DTz1X=3Za5w(?Z;1vUY`ZZK@K;sXbI+Czm+;ws z#@~a=XL~B)09VWW2J4W1Zl^1vq4oH++~6?9Kkpy(kM1|uLNXLj4T~}C{{<)Cq~?Ms z=g7XhGfVYt$ofoBmyHAf=+OmS0T11WRu^ zgTcEfGLO*#r|dOM9;4FJU0gxczqN+oI;GtfBLAn}p~y4bXqc&yelPLJ0H}6|CHWUP z`%fU-2W_Gt*1%8HD0}Jc?Ta5>Kdr^;a)Fv*jFKGG4uk%!Hf>*dC^_Gd;UDUBQF-~V zI3n2mvBEy>@i73{q4ZPM|dFjP+;|r zb8Z8UCyY?p&e~Kj{RD9SejO;UzF_Au1_R{L z|5d!FXs+<^In+6?b!v+~9Lv_FW{G1)&0m7AKM9q4C^1ecf@rH{UKjQP1F!Bejr>Em z@awDn9AWS&72Lg9j2{klfle-E}72a=5t{J1nW5@DDVQem-JxEysh1zY7l7J(EE`qgCyYr6qp z3<4zUm;>kg$i_8}+|!M4108qYw5LJf9I`bXVn8`l%Cn7m!qFy#57m|0#TjO?GbJgS z@}xlHi3MagAE5Uw#*J5R^kLh?B~tB|MuDm%evj6E$7wa%hyYVO|0@&+4tu4Q%L8XNv7cjiV7h3!Q1%OsL$Rw zr6sI(@am<#J!IGZ22Tx)W@NXlQ(?cCDv8xU1I&xEuv?FCj~lys@U~>IwNuz^U*Rk-s6?&=@!>5zw1lPyyg*= zG8TWHmp~i2Bz*mehf$}lW4-*t?w5^%z46NZAF^$hZ~JcCkuxgEjVS*ZIw1Tc2WGBr zGMQI6pg6}>SMf2ZM~1jeecGK-;%-4cPUP!;Pwx{8+v=8sSi(7t!oXzwHNw|`m3+>y zTE|&t-cpc{9({2Gve{aOpVk5qw{kxnKRcGr=iDL0t7X)@ zKiQcO7sNJQ=?L{#!`uB#o;KZ|b@$&j4ck==?H1jgvp9ljh53W?;E?Ar77G%QL$HAP zZR74ar@xl&@6x$xQ>&wQjm@r%mRQm}KlFv|*kxtRQ|@`#e~zau>tRE66a?hLk|pLY zF=|W))1zhA-S$_g{jZ7fn1aYasXDCb)J|5t8q_H-xSHmziDNm z;^XnIv1Rgg6J79rZ}FB*$d`9<`x_X@e8|0}sNB8V8w>0&IEgv3nsn-$+a>0v!FOtl zTIU3o8IK~9&{Q(GClLqneR;1n9&V~72Ak4MelMInC#Ndj())^qCeEUvE_0YWegS)X z`I8bH=GC0FIk-%06T-OGO~bDmibt*B+!}Z$k39gaZo0QQlZcGF3}OE8eZ~q;3U}_2 zMC2BZHZKA7A|}r72{kPaz;j_b+XvE%1KO~q#Lc6(@uanYp6*|noM!vh#SqN;8!f>3dAvQ(;^{s*K@7F)`)hAZ9fp#@hh^Mo zyKls;z)$%p9Ed;q&40q|cSn1UVyQ%t4=gI`>l3P<%g9Ri{?b^2SBBc5n~C&k8Tpcli^<`j}dFpS_MgGqf4}3PIwzK5szK zeB!UVikrvh--aDN)5Obm8-$2X&LAmLHK@b#U-ugWK8qx&+i zb}W9<_IJJwTt5ukNXn>+oaXKjc@-by_Z_oYV#CKWA}}Qk1d3QO_}>2T<4!;xyQF&F zdD}=|?{bUSv%2*Le7@T+_?slL&xPdsckg;?&|M>5GZ3_2IbzL4Cb(-Q)B`EiBVPFp z@UuoCmN)`P^zV-6qc3=G(x;u=xA=EY0zWni+)Y5*Ts`g!SoJrK9$sYWk)qoNZ|w+y zW!PkDr$NTuf1;DOkHcc*sA5|8v;WPsMnO>r85= zJYVvWR6mrgP)C{437wT>Zj}pq4W!T~&6<0Vax8E2xvdIS3jrCSRls?ZD^`rhr}>Ml zpJ3Z7#F#301@kSyr3~y`gN4k%EJq5*4^CLI>2(Apv`N zLTlx$>WJnj-Rb7gJTaL*oiz+s3etS$Zz?u5m8SHf=!T{*#iDK-d=eFF|rj@QxJlrI_PpHP4Io;(fO;IY|lIRM zkSfH|pj!xwLn6I?bTJT`@F8Sw3RWb17^*f(Yj4JKybK7O!_Gvu2PIni8;*X$Pm4D6 zHdIXaDZFS+g1dS}7*>0~hy3_%qWMcKB$npcVVw_AaqqP{j49^$6rO1@?*?sdM zoKzl3glfGHr-u%z*_2Iv&e&V2Bp{tM%@Ho7xH-CK1AQDxG!M?fEIXKg`juYN&1Zkz0w(Nkvm?S}*-QdQoznr4J=^TVXgjH)C=k)d<6R-ghuf&0 zk>f0w5Qz)Wuukl)YAc7Dxd3w`Nv!WHXN*ZyyvIS{rcTsfK6X`q!~zvdo&H%% zw1_`|zX(z*!&X7I#uN7ngfWPx2Se?*!EYYR(OYd7pT4Obcs)b^3U%#Hb4}x+IrULT z6?S1kYJrPq@ENlT4Ulos6B1!t$HL*^6~J4M4wQ?{m9>SRIsQuT+%d>eoKuc6QORMB zbnTR-gmqo?7bl@g@E~Wn>FY!E)q5z}@zWq`B=L(3s~)xDg_|YMAZpuPwL1nH#8Gcvwy~(s{O-=CibL-Cg1PJ*b~+0 zAweb5g)Ql0rYoYSS}o0KS`lLxY3vc(os+WNYe(BL%a&#b@h$k)rx$#JNdA;AJcdlW z>(_i}A)m{?7qw#Iw&~5?XK2G4yiEy{I`CP=ekYpMR(M zV)f}Arf zizLluHd-k)k?j5JuoeO8hi`EBh&8I`le`>c9uPccq zv*_to8jXL=L@@}90iQLcpGI?_qj|yVo@W(gMaIS9Bnx>_^d_1DQvN)9p=gzmHHr~# zqLQM9tRm8F4v4f4i3>Jb(s_-xo2?YdYI9B{d{$6Qo?Z7x7LyIfS1&SL+R=@YfhA-QJNUFFsiwAeA0nsE0jX< zrZ-PBJ`s|8;7DlJ`+1ZfN&Fg$)?HDIc$GDfF!6{2U*9h2kJXasg!oR~zi5p{K^uCH zD-sj{wxZre3;Mo$!91z$uv$y1Xwxtif`CD=&+^r{I<=6lInw8%*cR#`O$8`ToxmhNPA&~iWc zgOVe99^aI%xrdhv8NlZD?Gz`&qn4u{Dz6TcgOQD}a_ia08g8U#-rfu*V3!|-U3c6u zzcsUHauA5WmZP4%q>wm*&Z@7Nj-E`J!92o{y)VDLe~%MzXAhO}f1mK#Gg~ws;v4kQXn+aTFTYC4|0G z<-Htxf5}taFnN1VL}esl9~vGD3wRUJZY99KEa-kN196F6`Own{WB+lkr{p4CyCK!v&yQ^+rSzgPJT~rj!yf~ z6)qEfNXYxBll+7!-ODW@m(%COFnU(v{T?5jy$cz-IM}Jw3ZA*$io1u;;=A4<9Ti$4 zVty-_zk9Eqcu;SH72f`(al}3-|Aa|N)mbuH6&ld_YJ2pB_afbmQ&SJzT=*K+uBlf| zXr)sFK&=Cc1hP#iWKGMxlH}5Uf(1zXwzkQ6T&1Ik;z2rrtte_*^@19^o4(iu>1By1 zwFYJ&?XHXjtvT0~jykJ_c`xg1LwD0)iaYh;{C|rJ8N!wVvXV*= zCvR9K_W91$C%15Amv5?G)BqI=qzXo{J}F`EGit9{N_?4mu$;OS|0dh-yie-~TZX^G zQv;2trQ{`>-^Q4WzJ}*g&o~q;Ee6k}w^|s?qf`ZVBXN$DY@Vp8ZzX{x7H+p78D&cM z7HPm5Z?)g%+DK76VZ=R~62vu5?G3$5KjNlLd2@fZdRTE}vec>p`EKC6^&EmL) zjms*=Rl@fA+hMpK&>*6cYMZ|-Av^NBL|r$$>jE~oL5P=9Mu@DG$UTxU)w zVJp}X>sTIzVxScW7j(ZqL^0!0;imB1y?Y)>?+7?+ZPBT%pE=yjC?(d~&Afr&=KG@6 z9?35nj;mbq3xp`oIO}7s56;0v7~Airm08&k0`u-1*%};P)ni~I>J`c2Z<;?f1Xkf0 z8_%@!!xwGYxaQ`BydTcg@ti-nWxxT0*_7^xzoI=M3ef^`r;_ClN{_?!90CL*v_iYn z7$&wWeQy)ZmsASXVXwk_e`d&Ofy)@z6N3)43h7V z38S@tSPPyQ0w!(cho-yEbExU+#~2d@UW5LBh{>CLd&;ApB8$e+Ia~$i#6fJjz$uNK~MRjMf(r)QT?%75jJR)`tcgKT~lVI!!hRWHbE{aUn`~?x{DKir+J>Qm4s+S zj9lgEbmR0L?Be7(@D#W&97C@Z+Jj&Mf*&SXh7EVqAL#u(VhT6Uu^Py${cA7;^k7$50RR!52?7*EuH->Ru(*(ph7w%xzSP8z%+&=} zJp=&Q7GT)uRF@rj#BTL(KDE~@2s1tah@a5ml~kDcpXy9v5V#i0Oc2rkzu6TwF53d8 zL_u9KlVkU9ZL$L1X|NzzBS;=OUmc^ly&hG&ZD?g3)q1i3kK0ZmSf^GiDdIXU+(6zn zejx7m5szr+2l3fyH;%jtT_r$LokcIT48<_;5!Q%|6_`TMXH0p4&IG{f^LRzAChHYC zc0WyD+nMp41-RtIhLEZcBEWxqfHAiv-toxfe4>QS!B8sqY&$QYbRG~WRrdx9Iy8rD zNO4NkAqDOrbuml=uI|9U?CWXZ*)dR_iRaxi$Lf1Nmz0$=q?0qPsz!k~VmoJ)*+}oM zcuveoHjSYCk#iU};5!1a`XQ(oVdEp*LcYZG7$mzjbA7K-%B^M08vLf+HhvpAh&8bx z%$Sq1^{vPi28v=lSKpapSR5}L22B<%cjw(?yy zV)LBN;=-g%$>s2vsSxNNYYSbYR>rLAg#-~15f`QRK zIZP79l>Eo#-K6{aSCMx+=Xk!wP6P2Xcu4k!c?I%)hA6Gh0}|A3aDC(Vg3D5$UCp13 zPPfUM(|jlh_GW|6_B6kDHLmbg6q@t)>>u)C)UTe2>Oz+ZrZ<6S^nn@X7B}b~$D*0X zs&`$Q^Pvmd#4XIgPC+ABBwS%s$ZXen)HCu9T#ktkgqxv(MU zH~Zu42cT+z`-VEI^|70JK#_R{jPd3d`ocNw-s6O!#gC({&&$^_p_{e5j3e?R;x405 zKwFXC;06j3^qHtSU*nNFdqFcVlSz29gi@DUUna_`pIFzZ!cO*A=HEgZC7tyeZ`cdL z2E{XqoBL}N4K{*LyVUY?`WcYNjxB7q5L)pE0# zH7x!i-(|L(P`7iN{d6X&N^s)hBDy`4Jk5qk`9^HNs2}{ee-s{m^Se=ogHLYr73m&g zE|W5wv);K49(bPtS6+lA1YsK2S&4Et{+g5RCkiN!NCv&R*k+4XG~TvZtKeTXr=$!? zt?gEF-@DpDExWkfP3f@B7#kO4$}HEH&BIygfNAAo+v`0grXXz7f>zVse#>GhSZA62 zTg4OWLGjtew0NvE{@UT$>P6*2G+$YsXRTwy2wxS_h8nEgSvDq-rS}< zA#%$<7`^zjJAi>{vcfs)>95i7bjSe(PlFR)U-u?doN-0 zpkE?e1K3~p#D?BHzY@^9J9p}}phHgUHIF>c?4Y^p?p<-bHa()df<0(WyoRAohWU7< z9gfuez_G=|)i6d#@F>FH#`j1$L0Ekz=kCh;jCxN;GV*V~)vIAVnxAylSVEuENb(kQ z$(nZ?d9$I*me=TC3Z}k%ZdoD1w~igt7JD!k)|*?y^l=0IPW%>$LOQmbOnrRoO_wMB z#>2RFOBAID>vLK^5RKH%>D55U+p=)w=jru_6@(f2a0_AO8G)0(t$Za-nR^KKoH9Gl zB6f&-wVvsTj#QWilq7*y?{rsaq$AIOLDHLP>I+NM2oGJ2o^t_=8Ao^Wjqv@Xh^d{mUIH zp?P9r_)*?vrVvlI76?J>3`P1qUJf|ibigmD?e?XpfrE@ZemxlMHkcBf%iWV z!aT|E)p)Ga4+w~q0C!>qmrIc0?Kh$}zP{icdgr-qTU-PV4BZ%r;?E%oyGfIA;`C)P$s2XFZMC61=1 zYGh4TG-I<0h{IARenX|dkTJnTCWVsC^B_1l_#7&(5DKb`RdU#W5lQJw-yONwrr}7$ zLXSFjTJSnj4rp+T9y|nf^p{7r&TIFA(mp7}2zVAdhh&;?+O>DMJwa|orA9_T^9?e! zH(;*Gy$b{phP=BeY1`1Wph{v_pjxE-D2*`G|DyTD9)tlif6XJN@Siw! z%uj)*&6Rn3jm1%L$U9}v^WX}qEpqpo@Tv~ZJTod{871*jyyMZgu+ke0s{GDN%~i-< z{pF+Gn;Gq-%yM1NZ5&SxG*MWImGfkZ&g&B@rfj)dq3wm$CRCrw2dCPxCRMpK=m;rhEx!InWK}3#f)o~>9>e`;)6;jwYI^=fU zT-$XWD@*>U{UM9j&Dw|TH_{Y%an~IKYeL_^YMy{?-K_8|%Jqka-z@pApIQ2K+9x9E zKNJ>K1ZS*Q4ktDCQ*?&g`iSvN|L31M?y|OM%h%8_%aC9e+kUC{pVI}dP| z3Ao1OaJ^CKEPLm^GuSgu+l0w}bdumA*ZA6C_d+EdTngn;#h zvyuVD?vuQ_9^k;W><#jFd1mv;fR)rq z?I8GQv@Sk^yy<$Jv3ZLl+!E5|jUpMwX9TeE0XwglWk_Y#n7`%sSDG2Qq2R6~F!1kK z4siFKpc2f+Yl6lLgfr(jJbaf?(Ky?`A_45g0*C_Dg>LsnNbT}*KoZUcT)I4{!-$&+ z>dj>Vx|CUfxS!eeYyV1c<_ncj=0#5CiKqfxJKevFm18 z5nul^h5#_dtjk_Yjkf=fR|#N5TV7e^L}(Z>KZ`GZPSQVojY6jXeV#=lGTsNTX&wji zHuwSO+@#I={J~yEd1@0%G3AW>!)!?axFr6cRmJ3=CyuW2%>Cjz9)4?mp~3-sbKHO8 zlD}e@v7nOE<^NCRzS_wP7%KfIN`H|gagd1ejx7&w>-v^53`CxQoK2%Jayxr-z04?p zTTEZ3?WP(F3o~V7=Fb`Y&x`-f{_i^c?|%3{=x1Q?zJ9TY?+ek)W&WSQZ9@x#N`2>- F{}1r%b7TMj literal 0 HcmV?d00001 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 10079d76c2..7813970a6d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,4 @@ -name: i386 linux tests +name: CI on: push: @@ -32,7 +32,8 @@ jobs: go run build/ci.go check_generate go run build/ci.go check_baddeps - build: + tests: + name: Tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f79d048dff..0837b717a9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,14 +1,27 @@ +name: Release + on: - # TODO: fix release workflow and enable this. - # push: - # branches: - # - "main" - # tags: - # - "v*" + push: + branches: + - "main" + - "fix-ci" # TODO: remove fix-ci after testing. + tags: + - "v1.*" jobs: + # Job to extract version + extract-version: + name: Extract Version + runs-on: ubuntu-latest + steps: + - name: Extract version + run: echo "VERSION=$(echo ${GITHUB_REF#refs/tags/})" >> $GITHUB_OUTPUT + id: extract_version + outputs: + VERSION: ${{ steps.extract_version.outputs.VERSION }} + linux-intel: - name: Linux Build + name: Linux Build (intel) runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -30,9 +43,7 @@ jobs: - name: Create archive (amd64) run: | - go run build/ci.go archive -arch amd64 -type tar -signer LINUX_SIGNING_KEY - env: - LINUX_SIGNING_KEY: ${{ secrets.LINUX_SIGNING_KEY }} + go run build/ci.go archive -arch amd64 -type tar - name: Upload artifacts (amd64) uses: actions/upload-artifact@v4 with: @@ -47,9 +58,7 @@ jobs: - name: Create archive (386) run: | - go run build/ci.go archive -arch 386 -type tar -signer LINUX_SIGNING_KEY - env: - LINUX_SIGNING_KEY: ${{ secrets.LINUX_SIGNING_KEY }} + go run build/ci.go archive -arch 386 -type tar - name: Upload artifacts (386) uses: actions/upload-artifact@v4 with: @@ -82,9 +91,7 @@ jobs: - name: Create archive (arm64) run: | - go run build/ci.go archive -arch arm64 -type tar -signer LINUX_SIGNING_KEY - env: - LINUX_SIGNING_KEY: ${{ secrets.LINUX_SIGNING_KEY }} + go run build/ci.go archive -arch arm64 -type tar - name: Upload artifacts (arm64) uses: actions/upload-artifact@v4 with: @@ -101,10 +108,9 @@ jobs: - name: Create archive (arm5) run: | - go run build/ci.go archive -arch arm -type tar -signer LINUX_SIGNING_KEY + go run build/ci.go archive -arch arm -type tar env: GOARM: "5" - LINUX_SIGNING_KEY: ${{ secrets.LINUX_SIGNING_KEY }} - name: Upload artifacts (arm5) uses: actions/upload-artifact@v4 with: @@ -121,10 +127,9 @@ jobs: - name: Create archive (arm6) run: | - go run build/ci.go archive -arch arm -type tar -signer LINUX_SIGNING_KEY + go run build/ci.go archive -arch arm -type tar env: GOARM: "6" - LINUX_SIGNING_KEY: ${{ secrets.LINUX_SIGNING_KEY }} - name: Upload artifacts (arm6) uses: actions/upload-artifact@v4 with: @@ -141,10 +146,9 @@ jobs: - name: Create archive (arm7) run: | - go run build/ci.go archive -arch arm -type tar -signer LINUX_SIGNING_KEY + go run build/ci.go archive -arch arm -type tar env: GOARM: "7" - LINUX_SIGNING_KEY: ${{ secrets.LINUX_SIGNING_KEY }} - name: Upload artifacts (arm7) uses: actions/upload-artifact@v4 with: @@ -186,3 +190,95 @@ jobs: - name: Build and push multi-arch images to GHCR run: | go run build/ci.go dockerx -platform linux/amd64,linux/arm64 -hub ghcr.io/berachain/bera-geth -upload + + release: + name: Draft Release + needs: [extract-version, linux-intel, linux-arm] + runs-on: ubuntu-latest + if: startsWith(github.ref, 'refs/tags/') + env: + VERSION: ${{ needs.extract-version.outputs.VERSION }} + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 # This is necessary for generating the changelog + + - name: Download all artifacts + uses: actions/download-artifact@v4 + with: + path: ./artifacts + + - name: Generate full changelog + id: changelog + run: | + echo "CHANGELOG<> $GITHUB_OUTPUT + echo "$(git log --pretty=format:"- %s" $(git describe --tags --abbrev=0 ${{ env.VERSION }}^)..${{ env.VERSION }})" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + + - name: Create release draft + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + # Move all artifacts to current directory + find ./artifacts -name "*.tar.gz*" -exec mv {} . \; + + body=$(cat <<- "ENDBODY" + ![bera-geth](https://raw.githubusercontent.com/berachain/bera-geth/main/.github/meta/bera-geth.png) + + ## Summary + + Add a summary, including: + + - Critical bug fixes + - New features + - Any breaking changes (and what to expect) + + ## Update Priority + + This table provides priorities for which classes of users should update particular components. + + | User Class | Priority | + |----------------------|-----------------| + | Payload Builders | | + | Non-Payload Builders | | + + ## All Changes + + ${{ steps.changelog.outputs.CHANGELOG }} + + ## Binaries + + | System | Architecture | Binary | Notes | + |:---:|:---:|:---:|:---| + | | amd64 | [geth-linux-amd64-${{ env.VERSION }}.tar.gz](https://github.com/${{ github.repository }}/releases/download/${{ env.VERSION }}/geth-linux-amd64-${{ env.VERSION }}.tar.gz) | Most Linux systems | + | | 386 | [geth-linux-386-${{ env.VERSION }}.tar.gz](https://github.com/${{ github.repository }}/releases/download/${{ env.VERSION }}/geth-linux-386-${{ env.VERSION }}.tar.gz) | Older Linux systems | + | | arm64 | [geth-linux-arm64-${{ env.VERSION }}.tar.gz](https://github.com/${{ github.repository }}/releases/download/${{ env.VERSION }}/geth-linux-arm64-${{ env.VERSION }}.tar.gz) | 64-bit ARM systems | + | | armv5 | [geth-linux-arm-5-${{ env.VERSION }}.tar.gz](https://github.com/${{ github.repository }}/releases/download/${{ env.VERSION }}/geth-linux-arm-5-${{ env.VERSION }}.tar.gz) | ARMv5 systems | + | | armv6 | [geth-linux-arm-6-${{ env.VERSION }}.tar.gz](https://github.com/${{ github.repository }}/releases/download/${{ env.VERSION }}/geth-linux-arm-6-${{ env.VERSION }}.tar.gz) | ARMv6 systems (Raspberry Pi Zero) | + | | armv7 | [geth-linux-arm-7-${{ env.VERSION }}.tar.gz](https://github.com/${{ github.repository }}/releases/download/${{ env.VERSION }}/geth-linux-arm-7-${{ env.VERSION }}.tar.gz) | ARMv7 systems (Raspberry Pi 2+) | + | | - | [geth-alltools-linux-amd64-${{ env.VERSION }}.tar.gz](https://github.com/${{ github.repository }}/releases/download/${{ env.VERSION }}/geth-alltools-linux-amd64-${{ env.VERSION }}.tar.gz) | All tools bundle (amd64) | + | | - | [geth-alltools-linux-arm64-${{ env.VERSION }}.tar.gz](https://github.com/${{ github.repository }}/releases/download/${{ env.VERSION }}/geth-alltools-linux-arm64-${{ env.VERSION }}.tar.gz) | All tools bundle (arm64) | + | **System** | **Option** | - | **Resource** | + | | Docker | | [ghcr.io/berachain/bera-geth](https://ghcr.io/berachain/bera-geth) | + + ### Installation + + The archives contain the geth binary and license file. Extract and run: + \`\`\`bash + tar -xzf geth-linux-amd64-${{ env.VERSION }}.tar.gz + ./geth + \`\`\` + + The **alltools** archives additionally contain: + - `abigen` - Source code generator for Ethereum contracts + - `evm` - Developer utility for the Ethereum Virtual Machine + - `rlpdump` - Developer utility for RLP data + - `clef` - Ethereum account management tool + + ENDBODY + ) + + tag_name="${{ env.VERSION }}" + echo "$body" | gh release create --draft -t "Geth $tag_name" -F "-" "$tag_name" *.tar.gz diff --git a/build/ci.go b/build/ci.go index 6f96fd7715..9d83c2c51d 100644 --- a/build/ci.go +++ b/build/ci.go @@ -650,7 +650,8 @@ func maybeSkipArchive(env build.Environment) { log.Printf("skipping archive creation because this is a PR build") os.Exit(0) } - if env.Branch != "master" && !strings.HasPrefix(env.Tag, "v1.") { + // TODO: remove fix-ci after testing. + if env.Branch != "main" && env.Branch != "fix-ci" && !strings.HasPrefix(env.Tag, "v1.") { log.Printf("skipping archive creation because branch %q, tag %q is not on the inclusion list", env.Branch, env.Tag) os.Exit(0) } @@ -679,21 +680,17 @@ func doDockerBuildx(cmdline []string) { build.MustRun(auther) } // Retrieve the version infos to build and push to the following paths: - // - ethereum/client-go:latest - Pushes to the master branch, Geth only - // - ethereum/client-go:stable - Version tag publish on GitHub, Geth only - // - ethereum/client-go:alltools-latest - Pushes to the master branch, Geth & tools - // - ethereum/client-go:alltools-stable - Version tag publish on GitHub, Geth & tools - // - ethereum/client-go:release-. - Version tag publish on GitHub, Geth only - // - ethereum/client-go:alltools-release-. - Version tag publish on GitHub, Geth & tools + // - ethereum/client-go:latest - Pushes to the main branch, Geth only + // - ethereum/client-go:alltools-latest - Pushes to the main branch, Geth & tools // - ethereum/client-go:v.. - Version tag publish on GitHub, Geth only // - ethereum/client-go:alltools-v.. - Version tag publish on GitHub, Geth & tools var tags []string switch { - case env.Branch == "master": + case env.Branch == "main": tags = []string{"latest"} case strings.HasPrefix(env.Tag, "v1."): - tags = []string{"stable", fmt.Sprintf("release-%v", version.Family), "v" + version.Semantic} + tags = []string{env.Tag} } // Need to create a mult-arch builder check := exec.Command("docker", "buildx", "inspect", "multi-arch-builder")