From 93b305ebaba9690485759b454c5466851f58713d Mon Sep 17 00:00:00 2001 From: ndthanhdev Date: Fri, 20 Jun 2025 18:57:41 +0700 Subject: [PATCH 1/9] wip --- .gitignore | 15 ++- .moon/workspace.yml | 4 + .prototools | 12 +- .yarn/install-state.gz | Bin 2254526 -> 2254531 bytes etc/runner/dagger.json | 10 +- etc/runner/src/go.mod | 63 +++++---- etc/runner/src/go.sum | 108 ++++++++-------- .../skeleton/etc/workflow-runtime/dagger.json | 8 ++ .../skeleton/etc/workflow-runtime/moon.yml | 3 + .../skeleton/etc/workflow-runtime/src/base.go | 120 ++++++++++++++++++ .../skeleton/etc/workflow-runtime/src/go.mod | 50 ++++++++ .../skeleton/etc/workflow-runtime/src/go.sum | 85 +++++++++++++ .../src/utils/run_action_script.go | 11 ++ .../workflow-runtime/src/utils/set_envs.go | 26 ++++ .../workflow-runtime/src/workflow_runtime.go | 10 ++ etc/templates/skeleton/template.yml | 7 + 16 files changed, 432 insertions(+), 100 deletions(-) create mode 100644 etc/templates/skeleton/etc/workflow-runtime/dagger.json create mode 100644 etc/templates/skeleton/etc/workflow-runtime/moon.yml create mode 100644 etc/templates/skeleton/etc/workflow-runtime/src/base.go create mode 100644 etc/templates/skeleton/etc/workflow-runtime/src/go.mod create mode 100644 etc/templates/skeleton/etc/workflow-runtime/src/go.sum create mode 100644 etc/templates/skeleton/etc/workflow-runtime/src/utils/run_action_script.go create mode 100644 etc/templates/skeleton/etc/workflow-runtime/src/utils/set_envs.go create mode 100644 etc/templates/skeleton/etc/workflow-runtime/src/workflow_runtime.go create mode 100644 etc/templates/skeleton/template.yml diff --git a/.gitignore b/.gitignore index 0e1f8cb7..1334c88c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,15 @@ -node_modules/ +# General .cache/ +.tmp/ +*.local.* + +# OS .DS_Store -# Yarn +# Node.js +node_modules/ + +## Yarn .yarn/* !.yarn/cache !.yarn/patches @@ -10,12 +17,12 @@ node_modules/ !.yarn/releases !.yarn/sdks !.yarn/versions + # moon .moon/cache .moon/docker +# Repo specific public/ - target/ - dist/ \ No newline at end of file diff --git a/.moon/workspace.yml b/.moon/workspace.yml index c744e845..d07c3b54 100644 --- a/.moon/workspace.yml +++ b/.moon/workspace.yml @@ -28,3 +28,7 @@ vcs: # local branch against. For git, this is is typically "master" or "main", # and must include the remote prefix (before /). defaultBranch: main + +generator: + templates: + - ./etc/templates diff --git a/.prototools b/.prototools index 0c5081d4..4c2bf4b5 100644 --- a/.prototools +++ b/.prototools @@ -1,9 +1,9 @@ -dagger = "^0.15.1" -go = "^1.23.4" -moon = "^1.31.1" -node = "^22.13.0" -yarn = "^4.6.0" -rust = "^1.81.0" +dagger = "^0" +go = "^1" +moon = "^1" +node = "^24" +yarn = "^4" +rust = "^1" [plugins] dagger = "source:https://raw.githubusercontent.com/Phault/proto-toml-plugins/main/dagger/plugin.toml" diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz index 8efa9c45686c37de7b108ab3c0fa30c64cf37669..bbfe8259ac48896eac69d3795d985077852edb71 100644 GIT binary patch delta 11342 zcmV-UEV0wR&4~fS&4~ekgaL#Cgad>Ggaw2Kga?EOgb9QSgbRcWgbjoagb#!egb{=i zgcF1mgcXDqgcpPugc*bygd2n$gdKz)gdc<;gdwyd1v`Ixdy z#v6OAs`ssWtNKzC{{ipUr0T6IrlE&!cK4u(H*zmb+r1eTl=DeW0&;Lbh%|}HFrqFKQfUEfvp9-im<)TK4Y?NxDiJG&;n z&mLCuD$svo7^ch766lrFE2AflTL%~O8{4M+{YB6!GXF0TS63dP`MRl2svc9-wi2LsC$6x zoJ25smXzi4MdxEg{LSn#J7rbVDd@~nOw2C!VzYmj3;S)UJA_d)e7yC;vI@ zAgqJSY?Z4ka6gKBin)&L3b{Th>Ca?{H#c3O8PeAxmk*qeF{=>O!GFqF3yV`n%hm*0 z@TU0k>7l0(IQMFev%>}Ltnx`3hvLYXO%{iJ>Wx!tB!QPGBb+XBmjqA@!*tT*b+ZPV zyAXfm^>a0~S8FTP&%GajAroHe6@wcJ)79jaTQwO8T*QAe&S(VX-tK}5?+b}gxG zM%~p$roPqDeJnV4+n_z8w2s*;L2FA2sZg>{l! z613CLG7}|%v{WOnf33!E5PlHzMkXnafn0xC7`4nHi7U3S8{ZlF5XhlAPdZjaf*C6C zXbLfCeAX{td=*@gSKk;6x8j(DDidHdXrrgi)m4^DVsqG~B{mv%O6Sq4MXK18+aRPU zfx44T;E>0%+Sya@S|n=}zOlT3)=UNmn2L&NtK;$|*N?HnT$_%SJeflvg;E{ZoF#us zsy3Z0!e|n<)wru4aTe*r{5$(-5@*)sh10g?Dk{mDoV76kMqx%_TtoFpj;^c3mMMN@ z&UE?G>nU33hC{BCE+dXCanFI~Z!p$FlScP(mdg|3nMDfYxWb%a(gljtzJ{-}Tn)pz zLHDY8v}PXgVE2vq96}FuHOb&zfDeDf+4AKpuE$p-tW}6&b*kH7UCBrA40tU?X}gAH zM0@UzDm1QAj=cs?IvRIINDf$IIRN`Qdug`fFaT6-FWRx0vhlBHkUr5aTa3|L@O}CF z*Q@QmLrwp|`53$xD@%`{QM2aej8@@0>=0|-lX%xeCFLE|8YAAZiLb4_rO5p?q=`1MhbfQ%Imv{kU?yE0jUu_rv#qHViK*lKLa{6n%_myOGztkL zJ}zH%{TN2ZR2*G;*V=MzTQPr{##AD5aZ6LoN(H|syymqbg>%@l69J|zV1xs=RyE8D z2$*;XOi#lp5-Na7C*{RRzUWBz*o=&_!{w{5SDQ7~54gEPChC`^tr_8{E4LJ|lAXa@ zZ5A?Ks{G67N2p(5q#vS^i%;VT(#j!od;;qRlu`ON*zA;%G%IKf+c8_c=%+bWwsI8xPSW9>zGKGtKz&&Q~YR|5Y_NUE0U zFA5?W%6pM9;g1qS2x^G!T`Aq9SsU)1FO4I839($h>Gj9H=bncV?PMoa7Dj42 z-XhY=C*XhffKgfm6_P{@3k*whp`QvRCrGN~#)P%W!k&4gQHD^{BGffa5droLWr>7@ zBO#VB>7UBFe9LvPAc?siamQo#b@;5(tQ5p$fqtbBgMK=0Q14py?#PzdHKd8V41XK4 zil`xWCNQawTs+0uS8g$ATq23#L!(sg?h2qCUABMq%eTJ%m;upK5Z%*v22-g(Gb?mmb97stTBc2GXv0wYgJDjzgrgrI;p!oE%C?4MXM?udBI0>wptOr}V=JKdn7gu$ zMAAAh-*!GmnnrG_4&5jdiPX$)MJ!gNRMzx}PHbUVU12A-OPb5xnU|V!NHz(Ti^-r7 zOI?4Coa7i2>9S%X94%DlwxAdZf#yi!tZRDt_Q%a*U3i`f#`v1^Xeh7K#?joIdLi_% zc0yzthT^I*Rhn^TK>U&ebyR^EUv90%m`hJCKIU;K)vhbM?Z9ausVMS zCfUIYWP{~pIJ>4gk=x@AnUUd|dqsl1_+1inl$=$i?pa4Uy(Wsuz0;U`nY0!^73ULK3$vCX0emS-e+kL6p~ji*-**PBj9(}S~44j*r(*F ziEUB^*xY(nTpxACRZuKCV-?gD78`&2>bm0z@UN6pTO<(Y5L-`iyU<5me(XFAR`&&F zS~EwQqbnPne&3lJfM>^)t6;(Uynv6`~O)84la zDH|1V#Xq=7XU;zO!(w5`+!C|rBCDJ{-P#V+a>j!0CR)q7GUW~*^ZZChG+UlmF4`LK zjiv`atc!d^OY!oP=VORS#fpC@i6u-mGn(bq>-pMjw6Ei~u6kl(7CL z{=cZ*ip5$s{z%W*E0&BwE(E_BhJ2b)F=dg_hFaevuF_Y({M7jv#tf@l+O^=zD*s<|8+33B_D0 z4DF}`kWdePdE@$}FtVyu%kS}Fu35SN>a}+TI{i-uVgxZS;T<&ek zoT6*PHo=Tg3&S!1;S2Q~>AKaT(Qr1v;`}0a+~Sv?{?KEc`3igXuzX4m4*Y3x1u+sI zDE1R+jBr!kN1zNgMdW`JBom#PTib%93^}WA(sJp>H!3d@mPc|n=c`RG3T7ME{-nbk*l<@M)sLPQ4g8@03K7#xamC3*(Gv$WeZg_wNi3i zL!#?cB!@!;j6tL3lE5y9DHCp;K{Vh(!5!S~@-x?u!Ofn}xX6Eyel4;vBGW-dOnaQl ziX2eb(MxbdN5rm~uh{2Ny{Hg<7?>|f(6;+X%J8&v>BZ(NmED}2^j1?06wd@1?Ch~# ze)fEf1_-0fQWy^;yivsZ2dyQx66XpL^h;l>H6Jy?z#f!8ME)b7mXeV&tghm$=2v8O zK|<%iCd!u>M&W-d(^ksXQPXM>`av5B@&CX3&~+WWgGEX}1{qr!Ri_;b&a>&Efdd$w zc5#w2noVn4CE%ORDMz+y?u1x2B;;^JLY^D}D_1Shn+Sn!N0~e$(gq)1cg+0a+$f)GEAA##J{gTIKSs0+<||lBL*1_yaT>3P?kQCOD-Jw z$cM5x@feHNcsF{cDC}Z&PqwDa%`QLx^-cw%Bg;mgUf z@o-ktu-e`PWOY^!srp_NJ9P7NREgeO-XgAdSLK>+ZVh*4 zle9TMNQm(e*cy#oqQS7?tW1}mzkVqjFNGPGmbNv0q>+_^a}^L<#+qb1g3yefzVrH% z9nr88VY1Kx6lvALW-Ry|@kC5s|I;RhqL$h*xaEIBCyo8j@QLTr`{k|cor0*Vmt>9Z zv&9jTh7k7NA*a%ZZS0prChngh<6zv892M&I7~CQQ0&70d-}N_N}mn$~E$P%~{9)Uj#nu^!18 z%@V={hg}@%nDC|J*EdBe^=5xSDwlCkPCRov@zc*6jrN^gXFYbccn}4}Be?tlA{X z?!^<0XiN2s6m2NDf-@oGx-}feF-K7D$#%6VdikaEF-kbeftA3PlefSY8bw z%P*ggF_As&5VLB+9JeM-dG{ET@6k(OmdJ`Ga-+f@Mqkb&Ho{>-80|QSL)QVMt!ZVL zi8z3AK6RWCP#2~WgI%@TapoZTL8N;5mGdzWI4W}1ozDcfEnJQDteXe6*8zVfX?a^A zSb+6*l83cpuEMOwZWtp|oMkAmr(NZ^+EL&SmSQd8eo%7UaGYTN0kGWiE?F@9(Ce!V*A~pbkc1w(%jP{ znM|DZ!YSwH-$QWiW^G9i`=5WV7kz0nk&O}R*u{p(sH#OXy!kW=La?E2FX5)Gl&RF8 zqYyrYnvE2$(gu+Lkkwj_?j<^oHfJtyWg*Zu{~T=W3g|K?)p^+*Q5Cl^?#wfLL(RZpIqQF&EU7 zN~A|Dxy2b6-zJTVje>to$_T~zf`JulL`Y<|)X=>45?T#3NtHA?l2Iz&7yx%|&eoA< z1{`adiFb4jjM*I71D=p>42k?4kY1JH#mFF0 zov}3Z(u+VSil$@DBE|$7VLe_i0Gl-1lLiyfZHud1zWRKOs(F7CYE*OUMHlF=f|jjy zx;VmGViNE$BqvDCgp!raD`Yu`epJfHq!KH2W?Cn05#dp%NezjKLpAMnk~O+aGeS^B z2Ii9G@--j6PJ1*X_$%CR9<%fnlx(N6tCG_0dH0i*y4kfDN@3DZv7ljtFFhdf$I*WI+Uu8+b75a(tt5*Z>@aq`NPZh( zEQoq#r@l*L3S1JIDYc-XAT~O!N&dS?Zg{)5lE6k_3dxxKScFr(Gd6`f1zIc>bc}dd zaRFU^{qbSW?#I_6P%pDSs1^c0kJvgE^XNzl;}Ig`7qNe~*(W!TXlgT%r&dxPY3Z~R z$Ho;GNWb2iI>s9$ziOUgrl0iOBE6!_o~2%X<9doNGCH8Yp=(z*<&L%~<8A0P$v9VL zf~2X1e8Yk*rBAG0IqfM4`z=))V}qzd%LQc!r45;~(BWK5^z@@l%)I=BF4J}389os-s$w&Bk!tf z=vnI+_?Q{eGQUX}uVY{l+Io?t`SM?{7rhwaT@@=_Y4e&-$eu<;pb8|CPkirAXn@Ap z$ue1OH42+4+zl#RYXP-GM;|`{$SDybEomqQA&h^Ti?v=YJ2yies~Bf@zx>d(`r0cy z@A)97ptfe6waFEu(L<~0ptu&ozOaQuDAq9MZfqVWyZG4&^yvL;b9C)!+&g)Z?7nP- zRMu)q`F-@+a*m>H5#?1@FPGnZJm1i$b<~`(VN_JO4pOhy97kp<6L&8O8CJ(>23T)c zMlOF{kLR}%AVx>gH>dzy%A2e@Z!nG$F=nZn?4Aj|B0Vre$fFcxDtGy<>(lUEHgLyQ zNXB20ELu+ipcuCHy#u;eMYJ{ZCNh~>ZllkxYZC}avSbb`XQWM?Ft^=tS|_R#OQYhE z8-2Hir*a=Yl~i+W&FkgAU2D;pN5T3Ykn(?aTm;7kT#6F0Fx(=`C#GGDU0PZiBld73 zn6|(&O$^xaxJp_O=Q=5rt=WlBYwVfI=3}O0N6L&56(`UPwfN<~KW-4loN&t-MdJq{ zaX-zmfG1%}0T6&%p2Q0>eJZC|25=itCuDX$XVo>>_L*lAe68%f`B_Asjv_8V^;v)U zBht55VhA66mCJ8me<{7~ky-d4Y8}{pTH;)7SOQvQNt+9--kOXggm zO30};#ONoD(QK3Sx1!cY`i-o-32Y+y0<;f?Zf2&#to6`HkAqQMDq7k)Y9vn~lF>RY z|Lb~g&;}_AEn6^gw9}kdGI%tCZLciLF{AgDggbEbMwcj3A{~DnW9-yot3GSZtabeI zzpv-UeZxKf<`18_sGwh~)ydCdw7hpX8Fk0~!%K(pDPkJId$(dN>=GTnkTNuLmeeuu zkO(H7JqQ_oG2^-kig_$#nshW)eTGsrWyR9R&c`mF|HBWS{gICY@QNJ9Ou|Wmn?AgC zqkFb^{Ct6Ux6XgUbPyJg2WfGri6S@Okh|klyl8HUV$Fx*uE!(G>RKirnH{?@Ukrr1 zAul;SV{Vo%Uv;&M+;?L6S6?lN#n_n@#*z_P1y&bS@+kcAAr%sQyfp-=PQvnFc%Rsq z`9Uy=mWj)Mu7bkPE#@kT!2e=o=xbNWfuYLbh z&wk1ig43V=v}?lmGcUcTKYa1>_3wwm^LvU?|Hk(}_4GS`_n$m7UwH53o8JEs-q}aO z!$0L+f6et(z8#U$aVZE7@Wxf8?c8PDTo^Avlh!8))y$>NS?N4XpWig=#G8m zo>5aE#btkEv21sufV==>$c@0}-B^R#E^+O>ZR*IxWx!s-q?ztSuHW~r_;KX=)1PvE zT%YyQ@1W3ls_%K`;S2A3c|E+Fz<%G)@X45p`_6@b4EG6lsEy&1Lv6fo)02}v?l=z9a9^3-U z;q$-u!3}VEE?@fLn@D2%$+sRn`^TPq`QQ6{`^I@;>R2Q9veVf`kEy=-XBK(MmE4X( z#xP!-8VOet#)@Nt@JYiqvW_-dpQCXh6GDG?b*@s61ty9ayrtm-CRMi!3iz0mAVOU` zTz>j|3?Y2M>uf%p`XM5bH#`h=#GSEHNOs~;C&8n~J{O`unZW}D9bO4l#&paGX~#2@ z^k`$6$JhuOHH}L#*}CBJau?ZqnHDdXpLy#h-rJvj>%k{@`TvQ>SN*xK-u-TW;o*O} zy!qCHr{D4T&#!IL<>%gdaOeJKg&@G2=EArPo&(b}N$D{S=y_poU$v06&>6^U!@x~U z9I@7ZRAxQmzSZMPN~8O-;>~vTGgF^+uIh2uY=sqk@f2EX73|5K`~SYz$an7lPkr3z za~Ivc=kNQ;-TFQM2gLKb35`1H-xz;ai5R0J3aMZxNSC#23bEP5_UMdrt2sW`sb`MGHW$u0h2ExtR%BWbN`Zuir$R-4{H%iSGIf zADw3DNf+$Bzc8u9R)nO?ZC_yXj#8ctO@xD?#{zu6MJ)C*-@5iO?5DgXw*jt}fj3 zs)@_chLJ#qjkzmXR3S-@DW|kZlq53uPC0VlI<7nA$e(#!jy#@6yx2c;J>w4-MakXj zA#CyfOwXqBza4h>($5zTRz;Y}S7r62Y=i=Lpi5 zcn-z2}@4#IT2?9njo7AA&PMo_YomW9g~eDJ|7 zaBIHnjhhJR{=yI5L`e5{zi|^S_Kl2&{>d9RQOCdk`b)X*1my2IPvhQ0Gr#wZn@}x( z{f8es`{_^aYVLhd_I-c1@hkrRH$G9c{hfi>54>@gZI8stDEgUeqWNBXBo8p8e4?C` z6DP4DQYI`QN&|s)W_76qd)2sYM$XP*^sj=EI^%#wQ_xb&yB%a)rF$HhxIy}rw#ll# zQ-R*Mg#S(j`sp8Cfu3jS51)JS<-7IgeLu$kFYC{H-zNO}2X21?to|G4W8C}cbgeOX zqgx~w6)LN6bE2(IE%ek~Gz*vogOH1PL^a78WcxS>p9YOVV_{kXyoa#uJxTGfysMJ# z?HcP4U8O)!a#bI=R7g+GBaF*8AN{2Qo5SnLP$iDhNiL8=Ad**9b7x(^eJiFClviU-mPcuXg2k4sZ-T+v?%)*btP-^7LjOv6kZ4~! zI#%aIB-jl6nS@rn54(KJ4`01N8<^)-@OyBzV#;8cYgvB^DxwLGGC>1hHEEbR3^d7$ z@L)nOkeKsf%2W&mQd2`vXtisWEcyX%y6IsZMhC2mIUM)TKu(pK}{AuO7TKmg^kTM1q!> zmIoTboQQt_bD2UiMVY7L{Eai{VBJ(#ZK;ij6CIGVZi0l@of_l5E8ROa#-IG? z8smL0Kll8{h-~ir3Epsdp?Av*{X;X}`d4q>1pMt=zvm_1`cftB^)2pp8rOl@4#3F|sS}K1yHFIeSr?Hi^SlN}7F!l)G+elU? z>4t4;7YLT^Fb^;<;dzZ5Y({=gB=V{zKsOLM*$GCUk#=m*0zKWaML+~=@z)L}(7Q`bp803#N=D3qzz`BKLJp)E z8KHk0%dgmF|MB1XqpN!Q^2VEYrDzah_F;(mTq~Q9nMg$10hE_hWF*|pX*OTB@xil`3Ojii zWmKN_&6opyJa`b2g8OUfP|i_`c&JKF;p0m*ZY=)eZy-=OKwvV_D!$d zge2^nU%LrO*tfiP6Oyoh^x92G!oKyjn~;Qk+iRa>N!WM1c2^Siov%Gf682rM-IafY zjRE)%_N|ioV`KK}LSj3d;3fY7;UDnO!E^rEv!1Xea%V1xtJFj{pGYn!+kg6u7E z4yCjKz6{9f)fW$(d{H@QojAi?huVF|H{B@<-tjwD^e1lN?)%x@a3zrLRs!jhRSDet z{qkiWW~qIfci#tJxrw{)dtSMTyYGK{U%839@1MSM6L;VDy>b(G-}k@rNxu7j;FY^~ z-|MeD>F)c%SMJ_@h!U$UM$}>M(F)9s2E)kuR4WyZed02=2kbOITDMFHm0J$3^O#{|SoBU!4WtUp(meh|Rc44cV zqtA?BdB&JeoE>)yT4kpdo$h}fm`$5~rnIFS0c3+Y*yZQ0uvNkt$%v_|B9NC-;JqMl zNMjGFMJuzo6-Gg7)iZPFBzuGjn`mg46bM1i=qUje_c66)6xrEhFmVGNPiS@aw1b!0 z$(^4mS}2$AKNb-`awi7nOyxmPCzBZw6bqQMG%XmRd}%J!3%R=UHyVE(%7?Uxw!seI z2(d=l)+=+sjywYlUSLVJddQvEEKBoQqeCWXa5*kN|N5;&iG4hy*S%k&|LlBINn=3w z0+^D}X}D8m_92#Xo5Z^VwR5ocD}+AGK)GlM$&+$HQjWWWnxEuH=XQ{anv`U})H0+! zhI*qa>4%mAge4!^n2&$^fArKxCfAQIm&?C+bT>q$ z%V3~BO>?&y72teXaLx&c%^fRz)!ds$HqesuV4=GV3=#Yb+a;Kh7u97tvE366m8}sB zoD@5g&}5cKkC{~=3{t1cfOhl$zMkX0pWu@l)%!M4y{+eXThD*-ww~h#^c-&sDc%-R ze5{b-yFc{c*+2ERkm7A2#VrXbp8bZ;c>0~szu=$!SDt%*{pI&8|Lm9E_g-coaab%$ zI)4_MQgdxuO!sc)(W~{?BG+8XCF1``u`u<`$jrG1Ijxigbi(0FDO+Mt!t24#MTKbF z0ny}j70m~;G=P7$Oi zUtaujwv;h7y1*)^Aq}fiCj713b5*8nVkITrBQyiGDfh2g|)~F>q3oFr)GZ=zRBQrqDC1MQwhXcH!jQE z0~F+tr`8z9rU5TCt%U6Xn5VC4!L=+D$?84NnCAo`xaI`my;95)#C>@WYq4djHCAqu znA)DcCKa}(23?P1QE21 zwzN58-%@`jvkWHjZReqlr@-~EbAp;`8QR&PC?KF|wUr_U%Pnq&;xR;~-Zix$vNVN3 z3zFF94^V%D5pl(nVq}9!>ajt+9;2e+&O|k3n80o3*(Vr|!MQP{rsPVw)p?Z^T$AwC z0YM!}W~lBPXD0;tIt2AM?_t=wmrC(Dm+FKx$UT4AjC!r`!F_wxiVdb(88Z~<@GGt0 zQ|iKeJ&DreeS_vbhHFw7#jTq~1C3$IVYo{p_pCR{chR;*cYvso*xt3s?5{ho3<4|0;-H^$i-mU@z%YfW1fMRmgblwS?wEFf6%i8mC<*>a2sJWyN<-`D1GJxw0Bh-nJkZ1 zy-w)FbJ9TDHdQX#R%t|*QF^7Uh`(p;QLlez z?_%>ZS&!8om0!e4gzy!r@fCn`K%@(?kKn^(X6rp?JAi{NUfMPjNnxfakaocptPDse z7P_gWKInS@OvBYoJr1Y@6}I;Py;d00r=~4QNPH19UcbhYWjE?4>0tWQSAy%AssbRh z|pqOM53B;kNEYD)xa1sfX0gZ0W?;!r?9*OxvI z+;mj~m;&oHZ1|BY$%3q>70gWuwuP2*FP4?9*6KQK566XPDTR`O4y%Ngw)UK=YF=Zm z5qqE3@=yRbWPI1MAUjYI06-6ItW%1+PWiedByE~uF3DApTrIec}J+w^}XX;wlu z^JJ+;{w5II%C8X4nyohb4igFwobHii)ETVm=(DX35;Z7|Z?ILg*3lc+l*Qal8fepl zJ5DVUFfnRhX_Gl?#;kb(KbGBl-Ug8+qRjqGQ)jwFf=8sU z1NR$Ca#)#WwWQD>vyN2y4v`T*uUBg$dL5|2HX6%GQMFId&GKB5MdM{~$b)t8hO;xvD=-OK4KbD>_RZXkkwJ-(1K4I={FsiwqGqPAD0kvmnSEjI z&}-A$El@f*fNJ2A+v<|s2>%FdX-4R2cbyy;)iP&OlN_M%2oV4yl##f}OH#DGfX)zZ z>Ggaw2Kga?EOgb9QSgbRcWgbjoagb#!egb{=i zgcF1mgcXDqgcpPugc*bygd2n$gdKz)gdc<;gdwyd1v`JUTb7k|cU>4FU^;3HG4ZB| z@y2TBoMX%}=cr3f{0F>$JM%~vR8z&SYBcc%?u9O^Hm!nkKFLWy4mJppB2nmW(IBS+ zw4ekz7`y-lC7$w|?*{3wcPDgc^1Wj9O((l{?OJ<%YpppB&-481(wgHQRdII@c1`>| zTUb7-K#PB2m@Y?4pmPS|u~(@sbrW8d!(Mw^+A2gT&rSs$FORM#>}X|f%Bcx@4^orp zL`njvojPeUdneF-4Vw{~bn0|p0=SybeM})1I8aw$ONgQaRBlBXLJk@3_kt8E)ZM{# zP9hjbmXzi4Mdvai{$_TWjk3yh3OchC6SIrG*zA90W4|qRhmdO#%#N+iW;>VI$bSwy z2*UOBn~=c9~~Vy-<8g)egCeARbMZFS%YuOUuP#qnW@cyGSdG z1nso5%tT2bo@(UrueI)jNY>w}DBhG66<|)?3;fUABfKHiu0-vC$}}bnaeDq>4@1J0V30 z)SYYsheovJXHUJWN!BR*#PR}KGZ`FUDzc(p`{hfnm$AZJn~s${nL{9jQXSZwB}#uP zpMxyISS0LHw#xDPOB~lp273K_+E>NVl)yF!^)zC{T z(7kHz?qvi#*li;|htNY^O)_{B-~)egdcJ(c_45@8YZanc2i0vTP02?X8Sq+);=6`b zi1yqKRcKsh$6kXc9gRC9qyboC4FL9aHuJJ#F94`~FWRx0a^a6>kUr5aml)&lF!tpi zT#vT<4mJIU=Q4OMR+bh)qh`%M7_Gv0*df-uC-JU{N@_GvYm9jNCcd^dPoaPHzzH8+ zP9|iE?C62B0eq-2_cB_b+1m&}kfaDXxtqQ3>M7{uE3eN60uzx=s^+HQ37isD3>}3P zKOssvIU$C-;5J!}gYGKiO#u^vPfZpUn8_gnjUu_r)7Mmr#ME$pp;(rP<`XSs>PEuI z=$Eg$UPd8fD)uI=Y4u!vD@K3Qm@Fa}FKJ3CR>AKHk9l>Za09mNM1WZqFv5;os}{@( z2$;ADOi#lp5-NboLCQ-Z`Jy4+V>8lihs#%AkGA5hA8>PpOw=z++foQeUD;E>N_GZs z)f*~M(t-KyyiTi-2p*R);|^_6X0*BrRydm_+opzf5?S+J*kaQuQnG)_8fyVfESImn zzA5aGV&5Z28}70!`r?5=?zYArXJ8B4sp}$$qoo*?* z54`}F%DPh$_0iIFrJor=FJFH>=sWBEq0Un1IIr!5$R}%S)-8WCB(p-vHI|_|s@3p2 zl{gC!G&BZrh0;W#1RAuwG*yV^3}YzinbTDPQWOj!JM%Tk!i+cX%a>li8##{Bg0_R2 z%mbopC-Zr`!eeRKrp;PAtMAZ5p1oP>ns;QmceXDhc>}~=Mx{_6ZD4$eyTW`gt{O&M zv%|F19@X<^=tFDQ*+#@??q-Rn6J?!b3j$z2j68Tyn}5a-oQ}`VABxO?aP;+%czW30{HN^JLtQGO%eT+u(W6v2ZPNY(1*@1uj$CfdEnpsYANL^O;Ay+J8 z+us5^9#$D1FW-3W+K?sUY27n>LdHCN?JaPEGfh0{i71JBih1?D%GxN85y7=tr|gCo zDwklf?g_puGG3h-Wx1v$CQCX>`jAd2Gcdf=kMt!(yL{8@kA2TA_d>K&IjOQRQvG;~ zNH3p&+XH__X%SRN5-}_=EX_tg6)Y!6s^rFmwaLPsxu>ZcNzXRWED|E zY)oKM>)A$%v#sngXj~$R;e%5uw=onzJG$)BF5iFp`eOz}OF?wcu``%T1){;@xls2_ zK$*RjHIirAL`NHj(jN?Sq9yF@00~zMsZq8$j-3tKYKzFoGXtevlp9+Cy~o^?btID3 zdHJ?;8EF=BQ?=_xnMkB&9>t`@ij=Cj9??lz7*i=9EW}dV zk&}NMV+2C&L(DbMB7vI&B=yKByN$3u`At zrlBjYnxaZG&J2h*IZ#I##Q3Tk);t`bRU-%MXdYNzX=Ieu_OO|iiJZ08z?Y`WS6sgv z-4=&Yj0eeNag5Qs#)eK2IMov6a7fC^j7opK^iGrjhWkA8@>mA(YV_F@(Fn+^8&C~!u~;SyI*_l{Mh;a5lBtv~-|@KYK|GZ-W_)BaBL(?LR_Z|o6r?y4N9>+4$V6d* z!3zU(Mhj?8{7^ZKHuowm602v%`J9hkmFd4|=ZDM)T}@LFsSrR%)60*3@Vu}(J0^eG z&I43B%gb`WWUJbeRY4`@dWr+%Bd|9h;xYEQrtu6BQ8I7?gp!SgIT%8 zQImB?MTEGVP`Z&8QN#HJ$`5$pWDCS=t4YjC-+UnPJ-cS|0a3P+&V*rgq}hzgAi~f( zrmUK=aHIFct}=F;mmfcuky*3yTP#eX2&x1dNyuhTYsN5>DxzhC57}1GGE;v%qT~?I zDgZelpmUtP%Rs49qva9%n1U%bHPkJ!vXhy%kGutl5JL8rE1tSeLQaGB>N?Xi?K^2(;}z&BhE zd{`Ixh$Y3#PoB#Vk%|>j5=(y=(}bk~m|umDf!@sbn00p2GJ5N6)r=jFTCl`Wuh9RG3R7_cm!CS9QJ7)1l6Ey*ZD`yI-#E*W z4Ld62HOiE-(;6ZfUVw~ z*M@C^8KD}(G63NV^&IKCwZuZh>43#~BX`^~Et1hl)*(2IR$^oL}zCAElA3cv+5=-mu`Hc@***=_kG&pIl@{S4eX>AiXo$c zEB*5N2Osn1ErihLoU_)&rwe)HG7qcgF;g%dA+sOAW2zZ9-H3BGi5y~feg;nwLy11=QYVT^M5nd@b6vgb1{DoB677FigP>7XK}Jx*ms z4k+yCB@9GI#IBXGVw*?xqC)gxV7??leYc*J;c4U0i#}Ge?Sq_juPFwKXMzlN9wdfY-3K8^6Tg!d)8ew2}${!;C5m1X|qztR63|8|ivbrFl zvttwGhZwqXl&OE4ZS6HJkI)aiC&d5%?t|BL@D3$X0y4KX z%4jZHeObUaol}l%)y5#i(vgtE5ea$n30S$RL2n`i+K)1MMx+g+kGgBF$QW9@{QK(* zixUH<0aA#)i)5#Ku5M!#8Af3k^CJFzwa)i@cETNKI%0p2?%*BpeSxwZ6S?HVk&k>R z%ODMA2JdX6AE9x92*a3 zEgF{ZO+Z#-<&f&wi(-dve)cMHG|yY4mlQ(~_w%UqhNiG0pD269v`qTt%daOaE5{lQ zIOf(GrpJGHz_2wzL9~I{r&!CfD?_rmiq;S?dElR{OA-Sv{_N!vd{^a|_E8*nrc2s< zKS+ofA+R;-*oozR@BnjpG8c^ea+d|IC(ogvWMA@cC*Zx0?gDV zi;VCUrXwyn_A|ZwhwHPEGFxzuHG`zCjS#80OkMEvW=?s$T*4A(~ zUD;M1WR2v3|HMMJ&08CE^X#p*Qiu0#skS~*a_=7PTfX;Pur7fM0Z#i{m|DT%Bn6=cC(Ra zL_O6rQY>A;6`Tnf$8Eu39CHNap31Ieie7%{T!w{{99Ri#Ie80gp;5GXfUcR8j$s5E z0z0AC-U;B6F-#_S5aw~3=Z=y8Uon5m@w*zSCt=g+jx~VA`zGyA6>t`*N=&huTz>gn z#zgk8L(HlPbKIIVd9GZ3@ZLXDJCgK3f z`P6VmKwX$h40hF4jxz_z4aavbkPrJ%-wWGlAEX6$Geo%7UaGYTN0kG_OTh`03UcaIqNgOGR zkTr#YRaWs=l=G8LxzUoAoZ=#HB%Uav?UtAZGa7*+-0Q^U#P+*E>7?6Wq`BvaWHRxs z7rt`i{5b^IZq}Ccu>a|L(3^kHL^ejKeOu`wy{ejKc=M?nLa?sBmvGWn%2evlZiG*v zW+R2myb}okS?qTxvkVj*_W?4N88K|kNr7K$|eqG zXe~xcuoPvt71{n%M<8VOV-x789#Q|cFzM0S9NtrpaWk0+EY>%%ae9AB!;P<%zH42t zES@wP8Yv5M`Lz#TBVsrj2In_(12|maqyWZ*pjOaY0M9cimdBB|8z009kq0kMaQsb` z_$%f&Cr3EVf+>TWX*1{J+Jc3#QLu?L%p5JSrt-^Ie)t*#Qo;~zrLcw?mZ! zdz^vsZPK{dD3nPVp*UAxFtB2c2#L&=8hq4d!E2yNs-(%0j8gH&0J!rxy&=yGIMy-~ z?>IE{%U7MtK<*Q(4qmF18eu<}i&kphhK{^2X7kDJ@Pu?@NaS@udS!iBA%jG9Mst@v zO(Ge8t;c1TuRfPiHE%+VYW8NjKz|upHg9xsgtf#Z;9*EkkeUf4v&B#y<9r)2OItz7cCuZS zl=hK#J6Wll{d=}OW~xzS_1TEVPi@A8`5=aW)mqdE^|wP3Up7Z=L?EsdCjAr(8aDXS z0up~5?U%2;{!nr@_C>`lmAJtUW5A5DYqRgIF zFTZj9iY_ubpueGOS2pDXZBxeE&}fozuFM2UQ;mE>!jb!cc=Yw!4&8PYPpNf@tVU=ixgWNE(q*Xuzq zh48M570!HK^9kA0s0dVnMDoelyAc|oF*dSHmM^EUnZnti!m$=mJ2dq16M&q55+UMA zgB1v2)Lg9fs_pCrb*y5X-R<(j*XnDpJb2DKIR(|dG}b0pj7AGy(?M}9gneNPAE8)7 zpWE3yPImFL5$Ms{+2-ilv2gC>MY8)UJtSMplk$GF={ZMHUqpG?YIga}$MX%1T6@hI z8%9NiJ3#8ynq$vQW#Vp@kYP1{oMwRaddbM8>+$?n0>tPj+6EPXOL>!3Hyp-MBE~G$ zBD-ZmuSgHf5b`KRnaW*$>v}iFwhi3Tjb!{4$)X)802IU4zIQjiW6vtYUA?XA2$enPPpZaqVa=}xSwWUz>_eg00=-WPvQlcK9#Rn25=itCuDX$ zXVul&_LY%I@GZ9U=Cz1_+#N++fa?Len`J+4|-{$6~tB5B9Q9;)Ym3FLHo*}~Yb&tfV# z448R)2Q`UNZ<78|vu2-pGlo(9_GD4T*f+#1Xa;$Z&Mm zJlBW>KXziE(b^UJ81}O@yvS8w9qdBi+@Mr|vURjo7MsF(# zXJBtmmoZWz9e?e;@8r?zn6+lsI^*)cuiuUPhI@YAht6D7(67}x$j@T5ymvSmb;td~ zLx=GxVj97Fw_-GQi37ioGBg`3sbk1eFl3}%|LV(DY& zQ!bzXp$E_Y$j1P9MLxz%!byUgqYrO|?zzO{=L^KUHGdYSov?U3NQ;k}D01@+xjRn9 zi#Cd)SQ}k&*W;08buE)iX2&kf7X#sL$V*Pon7yRSS6%HQ_nlb&)mICm6?SIESTZ83 z!0LiZ9)&+XBqPCRxFbj%BrJD^_lb?!I0z?b`TIQ{8Qxh8x+^U}N9!xt}K|2`-@zpp6u zZ+zcVPru{${>n4+h4);(>3zS;JNw=6@K1W@Umnjt_s-9J>Di}FkZ zGPP&oGGH%Z(oA`=nmeFYv>6mL5%^+XP>Vo+V6kt<-p_dMv!8jm-t)reu4g{uVSjt^-JkRPGoSO`_3*j%QNYdnzN1g(eB8t- zbFd!aF6ZMDfkV0xz{b5JC4Srbb~?N0K6Pw<&mu3mlG|Zq4CBSAk#Hqptk@?ApVZ4n*5TdT?9PEq2!Gwx zxk^12m?&oOmIWU$sk%*2z{jKn5$f9E^3&%sgz$w?r;k3UA0iU@f`_5@xHDD?$%A;* zN$}{g&xI&ZX7B((hgU+CFP+VRXJM=X7o5u+0{S~M=jWIF_x*BByuuc9{W@-uJU z#B=+zZ$0=p5C1>)_^3bU)w|v`UVnJFE^of|;OS3&{Oi{?>GE@LJ-BoJvqBKyO><#f z2G4=%nWXfXI`q6S_gK})T4)U9)iH1r6GyD|I4ZLiao_6kC8gfRDmJ|AI?hae*1774 zyXIo7;BBPf?iK9Go%8>`*T{Fy|4)A0=yMj`J?HQH&fWSs|A)l$x(SUs>VMxDmqm=x z5rtGJCrFpIYzooK#P&EC=hiatxlS!*l^7?USsFTW&C1wuVn@gD(hzZW6ybs1x8g+$ zK(DSr#T~g>5wghq@-wgBM4a6hJi3YQ`U@YOX6Z=>?7crQubf-7N9r|@1fn0G6o(O&OaZB;^+W`Bx}t)Tm484u-bO}0gzd~I}Q1oiYBVVAT%kP^^tlt@YyzwO@^{W<-21HI)kilmYk2L^P0Sh|J-Ufm!xuez>e)~ExXO(`{}E-yXTJ2V zcm3YE>*en~dg{(N;_p9t(m3LaA3gQ#AODDQ1Smt$y`_o(fYX(7S$}mCp2BXrmjJvV z>#CI?d_mW{+20fLUCBgf3!}jtZCleJob#%Q!?5&10vR^uresltBsr#>(jrlk$lN>S z$bIX$?vx{c?r}NtcpmX$`;7I>c(^D^?p7!FeIswZI{8DHLfm`%|DA6HQ)8dO@wrR;RkLar2D(yxQQ0~Mn*&b z^o^USzf`FqaYxcAV^?|tJYRLfug;Rnxt+LODQdw(C4ecx@o#ozzN$BVYV zGZ6cMH}10SkysUqe&(8JzSr()1Q=3dqMVcyC$S+?CM+OI1A%pBHK_!9)ws)yd^>xg ze-(_>83#0)0#BZ|A7osmd+eCFLHe0*va0V?p!Y4|zf*yJ+DBHP=U$G7&%OBa-TL#s zZ{z=$_2<2B6MugF{Wk$t|BZ7Q_x^Rd))+j|9?3<8$|{_kXseTlmf8@_0%oB=$i+OO znq+mdeFg|0hsL1Mn3e$VA#8h3QanoDRY~_A8fzC_W)PHy>gc#sNKei^^vgFN{iOn% z!|TaVCHCG(E)XLSNs70H>oYF0-W$U%;NYctDG@(jB7X>@hTQop3#YL{m=HUl9}r<( zLI>4cbVNe2huS(^@X(8xqQoqu3n%G%yTRF zJ-AviWq&Zt)s}*aaN$-aXyB_R4Ks(1CV3GaOy~s?b1ufFVkjWLam>0RVd*O!Rl644 zW2%7Ci^iM{1+OHJZC`%qW(?uazT-w~jNiPCxA?c-|I{C>#`x{`KXs?Z$hoC%sMS)P zSewYUsJZBiWBmg%%^)w^{f^SXE z8cf&apPajK@1UOVIG1tnz>RIG#Kv4J z7a=o|h_nMJw^L*!+|6nFSY_jbXD1bQ8lhXSqmq?LDC6+F+sZk?8}9T(GJ_iaM1S&? zcHco|%yOEuc}(=;cdFw1j*IvhyWi{f{JLm==B4rQh3B8YTO8l_jlALF*zOj`_D7~T z{ztDpbqji@$04rwEeZRE*N~RnrX=i}Ub_iN*f+m+6OyoRdF>`7VgLBGn~;Qk>uWb5 z3H!F!KEaZ(?|AL5BHa#%Hfod2_9U#^=aWe$jm&A7{r48_Xw zH*xm;vsZ57?EAh~ZsP3w{#QQ1XWtLJa`)_e{go%3eLwih-Lnr-Vl9gib(p)m!Q5~d zMx{+HRza&Mc$Epc)ijQrW?oYA(gnXS1WR-EOzL)-rLV3*dhcEgt#Z$i>9i%=?F1on z1|S1qYn$(iQSLkK>aG~&dVlL)S`R;WJ>(8P^EXz1v5k+iYTfs3{JqEEx8K$=7~UD) z8J<~x^TqY>x%aHkez`sW3|}LD4*QwJXQih6e^1H3@caAypMXQO_XSxV)?qtj--cg` zkmN2v?m9`+fVI*lzgU88tF>-P?FeEQwz}Ed%m|iejQPabakijU9)Gl=bBqSe#%G%; zZE1x7vd$dr@^e?%D&dS|#MD(0$cq`g7X%Ke?=ID}GK*WG8&a#5nL8)hJxtg{U7Msp z2y#YG38=XBsh&|}=Mh7ZQ9#ENTAfGQVOVYC&d(G}u*>%!i^w=~CkEzB6T4fH{kY|9w3oNNt3%T)_W$`g< z9FR#IF308PU%!aQjU)SYJQR*o&6vcH7Ut{$up!qhI+j!>4zl+2!BhXt1}-TmmjzdPtoh= zGVc9>`N2njuo#tp@#v}Fom@XYTrU6e(cKW0CY^!$ESg)HQ31}|f^$wlY;IWLtLEk- zvVoSII}6=az!1T|DBD6QY^lyv?qWlGJ})r#)zWyDcSiyk@VQnrZy zBSmBCn~|Aw4)V2963_{UH?u7fu+`HsfqdyX}!Ej2k@IX(zN z!|MwKSL?hq1DY|Q=NY$-S@H}u`<7bz8XW+v#BKOm4iq4TB~!u{pEI^CHtFJ-LHo{K z{Q#6>b$_gol84A-Pcsu~-|RN5ooX%ms&(bjD@CRO@|wM*LGXEk7haYGpo88fet}s^ zh#E8Kx+P14E?~3xhCPL$lce$B(nnhqBmB!lriD#rJ#_mW-~)ujx0BTNBm}aDUA%K5 z>^!yf8H)^pWX=eRD-HzUhad$rMp_msRNtBmH-A-Wa|Jr*T&xb$o*C&z%RDd=cFHX_ zZKEIFv@uY~%cpwFGdZS;sssO7kj=y1;DHYuSsjEZn;<3)MI&H^*3Enq4`!gQddxjp zS5@73xeS*BW|9sIfJ+#31dSiAB0Qnn15>OP$7*AD^VDkPWrheEdxf!W0z3^EG52_e zFn?D}!=!9CwVrbyp-l{;P&tZ$9JCx`C^lmcvtf^6zMVQzdi5X&GwitKq4!#n#>wBz zL>tCA-E(sKli9>HCoco@iP;>8chHummhB|i6 z%)++K$5#oAqi~P8d5J+Y{K<3o^1um?n)C_`T_`@Lm69(Zpv^vLN9f|fmn$AiDMdT8SK`@zlo<1 zvrwr+N`{{?hdFJjTkoMz_Y5duz`S=9$TBmb63zVq+3^8Fby~h zL4ODDe43!Wg~eNzutQkG$lXH~(y)ThT~uuK%-=pr?08QX-$mUkk^`NQqkkDCaSamE zbb+MTPor#pUT?_2wT9fpOCA=F zm8rE0t`N?ruyrpL8*?tz34xUQ*$aJ~=?2X`s#ffAwOF6QG!(+!!kAJQp$zj(Wb;1o zFAVxkD^QB0!g)|X@@Nr5n^y_|LOdCNi?|AUp89uG?5H_b@Ael@My? z@o?4EL@BPoEr-f@N2Bdgq| zVj(oRn3|5bGi>3IiGM9@K)7BRCs<}wV7@pb4o!O*m~T+ree=0zjxzhGRTd+bks(&N zgf*eemR!;xH&e@iiFvG@ea3`vZlD)!nc1);h$EgtPJIt;F#2MZwwf0r5L+J0u3+rN z11w&8XtXId+9+8@W}N{#xFs*Mml3+A(bk@Qw`1c?L1*%9-hT*I7nwzBh-;SNjC5J= zYY_Z|EH@^D#l6QS1|^Nv)Y!~@-UGnv#gg*lYkW)FW`N>Qs>NGu<{J*?hGmroFv3|t zn6y}e>{x(+i1dJQbZb-BoN~_u-+Gt&-;t1^-mpERbvp}+LP@-j&nskB<#W^TsF zz+&VuF0(FPCO*(H?WJ((o6o|w$lGL2(c50FbeRkG0CJ%wBhdTTd?>fUyXQqizH2P> zRHMzx)fvH3Yg8ixpe2Ivt%TjSgyNoC*d{JJHVt~F1b<+libeG~peRoOye-=pHLjWj zz;atNImN^9WO)P1Z6w(YjeAfGadOTruAs#&dZ;-|mYzrA$JS%c4r{yxmU5_}_EEx$WjNKAwo?UXc5(ptM diff --git a/etc/runner/dagger.json b/etc/runner/dagger.json index a9635bbc..5a7ac72a 100644 --- a/etc/runner/dagger.json +++ b/etc/runner/dagger.json @@ -1,6 +1,8 @@ { - "name": "runner", - "engineVersion": "v0.15.1", - "sdk": "go", - "source": "src" + "name": "runner", + "engineVersion": "v0.18.9", + "sdk": { + "source": "go" + }, + "source": "src" } diff --git a/etc/runner/src/go.mod b/etc/runner/src/go.mod index 664e4413..01f91aef 100644 --- a/etc/runner/src/go.mod +++ b/etc/runner/src/go.mod @@ -3,26 +3,25 @@ module dagger/runner go 1.23.2 require ( - github.com/99designs/gqlgen v0.17.57 - github.com/Khan/genqlient v0.7.0 - github.com/vektah/gqlparser/v2 v2.5.19 - go.opentelemetry.io/otel v1.27.0 - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.0.0-20240518090000-14441aefdf88 - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.3.0 - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.27.0 - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.27.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.27.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.27.0 - go.opentelemetry.io/otel/log v0.3.0 - go.opentelemetry.io/otel/metric v1.27.0 - go.opentelemetry.io/otel/sdk v1.27.0 - go.opentelemetry.io/otel/sdk/log v0.3.0 - go.opentelemetry.io/otel/sdk/metric v1.27.0 - go.opentelemetry.io/otel/trace v1.27.0 + github.com/99designs/gqlgen v0.17.73 + github.com/Khan/genqlient v0.8.1 + github.com/vektah/gqlparser/v2 v2.5.27 + go.opentelemetry.io/otel v1.34.0 + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0 + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0 + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0 + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0 + go.opentelemetry.io/otel/log v0.8.0 + go.opentelemetry.io/otel/metric v1.34.0 + go.opentelemetry.io/otel/sdk v1.34.0 + go.opentelemetry.io/otel/sdk/log v0.8.0 + go.opentelemetry.io/otel/sdk/metric v1.34.0 + go.opentelemetry.io/otel/trace v1.34.0 go.opentelemetry.io/proto/otlp v1.3.1 - golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa - golang.org/x/sync v0.10.0 - google.golang.org/grpc v1.68.0 + golang.org/x/sync v0.14.0 + google.golang.org/grpc v1.72.1 ) require ( @@ -30,22 +29,22 @@ require ( github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 // indirect github.com/sosodev/duration v1.3.1 // indirect - github.com/stretchr/testify v1.10.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.27.0 // indirect - golang.org/x/net v0.29.0 // indirect - golang.org/x/sys v0.28.0 // indirect - golang.org/x/text v0.21.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/protobuf v1.35.2 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 // indirect + golang.org/x/net v0.40.0 // indirect + golang.org/x/sys v0.33.0 // indirect + golang.org/x/text v0.25.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a // indirect + google.golang.org/protobuf v1.36.6 // indirect ) -replace go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc => go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.0.0-20240518090000-14441aefdf88 +replace go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc => go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0 -replace go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp => go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.3.0 +replace go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp => go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0 -replace go.opentelemetry.io/otel/log => go.opentelemetry.io/otel/log v0.3.0 +replace go.opentelemetry.io/otel/log => go.opentelemetry.io/otel/log v0.8.0 -replace go.opentelemetry.io/otel/sdk/log => go.opentelemetry.io/otel/sdk/log v0.3.0 +replace go.opentelemetry.io/otel/sdk/log => go.opentelemetry.io/otel/sdk/log v0.8.0 diff --git a/etc/runner/src/go.sum b/etc/runner/src/go.sum index e5668044..73a28981 100644 --- a/etc/runner/src/go.sum +++ b/etc/runner/src/go.sum @@ -1,7 +1,7 @@ -github.com/99designs/gqlgen v0.17.57 h1:Ak4p60BRq6QibxY0lEc0JnQhDurfhxA67sp02lMjmPc= -github.com/99designs/gqlgen v0.17.57/go.mod h1:Jx61hzOSTcR4VJy/HFIgXiQ5rJ0Ypw8DxWLjbYDAUw0= -github.com/Khan/genqlient v0.7.0 h1:GZ1meyRnzcDTK48EjqB8t3bcfYvHArCUUvgOwpz1D4w= -github.com/Khan/genqlient v0.7.0/go.mod h1:HNyy3wZvuYwmW3Y7mkoQLZsa/R5n5yIRajS1kPBvSFM= +github.com/99designs/gqlgen v0.17.73 h1:A3Ki+rHWqKbAOlg5fxiZBnz6OjW3nwupDHEG15gEsrg= +github.com/99designs/gqlgen v0.17.73/go.mod h1:2RyGWjy2k7W9jxrs8MOQthXGkD3L3oGr0jXW3Pu8lGg= +github.com/Khan/genqlient v0.8.1 h1:wtOCc8N9rNynRLXN3k3CnfzheCUNKBcvXmVv5zt6WCs= +github.com/Khan/genqlient v0.8.1/go.mod h1:R2G6DzjBvCbhjsEajfRjbWdVglSH/73kSivC9TLWVjU= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= @@ -19,8 +19,8 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 h1:ad0vkEBuk23VJzZR9nkLVG0YAoN9coASF1GusYX6AlU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0/go.mod h1:igFoXX2ELCW06bol23DWPB5BEWfZISOzSP5K2sbLea0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= @@ -29,57 +29,57 @@ github.com/sosodev/duration v1.3.1 h1:qtHBDMQ6lvMQsL15g4aopM4HEfOaYuhWBw3NPTtlqq github.com/sosodev/duration v1.3.1/go.mod h1:RQIBBX0+fMLc/D9+Jb/fwvVmo0eZvDDEERAikUR6SDg= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/vektah/gqlparser/v2 v2.5.19 h1:bhCPCX1D4WWzCDvkPl4+TP1N8/kLrWnp43egplt7iSg= -github.com/vektah/gqlparser/v2 v2.5.19/go.mod h1:y7kvl5bBlDeuWIvLtA9849ncyvx6/lj06RsMrEjVy3U= -go.opentelemetry.io/otel v1.27.0 h1:9BZoF3yMK/O1AafMiQTVu0YDj5Ea4hPhxCs7sGva+cg= -go.opentelemetry.io/otel v1.27.0/go.mod h1:DMpAK8fzYRzs+bi3rS5REupisuqTheUlSZJ1WnZaPAQ= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.0.0-20240518090000-14441aefdf88 h1:oM0GTNKGlc5qHctWeIGTVyda4iFFalOzMZ3Ehj5rwB4= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.0.0-20240518090000-14441aefdf88/go.mod h1:JGG8ebaMO5nXOPnvKEl+DiA4MGwFjCbjsxT1WHIEBPY= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.3.0 h1:ccBrA8nCY5mM0y5uO7FT0ze4S0TuFcWdDB2FxGMTjkI= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.3.0/go.mod h1:/9pb6634zi2Lk8LYg9Q0X8Ar6jka4dkFOylBLbVQPCE= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.27.0 h1:bFgvUr3/O4PHj3VQcFEuYKvRZJX1SJDQ+11JXuSB3/w= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.27.0/go.mod h1:xJntEd2KL6Qdg5lwp97HMLQDVeAhrYxmzFseAMDPQ8I= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.27.0 h1:CIHWikMsN3wO+wq1Tp5VGdVRTcON+DmOJSfDjXypKOc= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.27.0/go.mod h1:TNupZ6cxqyFEpLXAZW7On+mLFL0/g0TE3unIYL91xWc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.27.0 h1:R9DE4kQ4k+YtfLI2ULwX82VtNQ2J8yZmA7ZIF/D+7Mc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.27.0/go.mod h1:OQFyQVrDlbe+R7xrEyDr/2Wr67Ol0hRUgsfA+V5A95s= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.27.0 h1:qFffATk0X+HD+f1Z8lswGiOQYKHRlzfmdJm0wEaVrFA= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.27.0/go.mod h1:MOiCmryaYtc+V0Ei+Tx9o5S1ZjA7kzLucuVuyzBZloQ= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.27.0 h1:QY7/0NeRPKlzusf40ZE4t1VlMKbqSNT7cJRYzWuja0s= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.27.0/go.mod h1:HVkSiDhTM9BoUJU8qE6j2eSWLLXvi1USXjyd2BXT8PY= -go.opentelemetry.io/otel/log v0.3.0 h1:kJRFkpUFYtny37NQzL386WbznUByZx186DpEMKhEGZs= -go.opentelemetry.io/otel/log v0.3.0/go.mod h1:ziCwqZr9soYDwGNbIL+6kAvQC+ANvjgG367HVcyR/ys= -go.opentelemetry.io/otel/metric v1.27.0 h1:hvj3vdEKyeCi4YaYfNjv2NUje8FqKqUY8IlF0FxV/ik= -go.opentelemetry.io/otel/metric v1.27.0/go.mod h1:mVFgmRlhljgBiuk/MP/oKylr4hs85GZAylncepAX/ak= -go.opentelemetry.io/otel/sdk v1.27.0 h1:mlk+/Y1gLPLn84U4tI8d3GNJmGT/eXe3ZuOXN9kTWmI= -go.opentelemetry.io/otel/sdk v1.27.0/go.mod h1:Ha9vbLwJE6W86YstIywK2xFfPjbWlCuwPtMkKdz/Y4A= -go.opentelemetry.io/otel/sdk/log v0.3.0 h1:GEjJ8iftz2l+XO1GF2856r7yYVh74URiF9JMcAacr5U= -go.opentelemetry.io/otel/sdk/log v0.3.0/go.mod h1:BwCxtmux6ACLuys1wlbc0+vGBd+xytjmjajwqqIul2g= -go.opentelemetry.io/otel/sdk/metric v1.27.0 h1:5uGNOlpXi+Hbo/DRoI31BSb1v+OGcpv2NemcCrOL8gI= -go.opentelemetry.io/otel/sdk/metric v1.27.0/go.mod h1:we7jJVrYN2kh3mVBlswtPU22K0SA+769l93J6bsyvqw= -go.opentelemetry.io/otel/trace v1.27.0 h1:IqYb813p7cmbHk0a5y6pD5JPakbVfftRXABGt5/Rscw= -go.opentelemetry.io/otel/trace v1.27.0/go.mod h1:6RiD1hkAprV4/q+yd2ln1HG9GoPx39SuvvstaLBl+l4= +github.com/vektah/gqlparser/v2 v2.5.27 h1:RHPD3JOplpk5mP5JGX8RKZkt2/Vwj/PZv0HxTdwFp0s= +github.com/vektah/gqlparser/v2 v2.5.27/go.mod h1:D1/VCZtV3LPnQrcPBeR/q5jkSQIPti0uYCP/RI0gIeo= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0 h1:WzNab7hOOLzdDF/EoWCt4glhrbMPVMOO5JYTmpz36Ls= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0/go.mod h1:hKvJwTzJdp90Vh7p6q/9PAOd55dI6WA6sWj62a/JvSs= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0 h1:S+LdBGiQXtJdowoJoQPEtI52syEP/JYBUpjO49EQhV8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0/go.mod h1:5KXybFvPGds3QinJWQT7pmXf+TN5YIa7CNYObWRkj50= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0 h1:j7ZSD+5yn+lo3sGV69nW04rRR0jhYnBwjuX3r0HvnK0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0/go.mod h1:WXbYJTUaZXAbYd8lbgGuvih0yuCfOFC5RJoYnoLcGz8= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0 h1:t/Qur3vKSkUCcDVaSumWF2PKHt85pc7fRvFuoVT8qFU= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0/go.mod h1:Rl61tySSdcOJWoEgYZVtmnKdA0GeKrSqkHC1t+91CH8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 h1:IJFEoHiytixx8cMiVAO+GmHR6Frwu+u5Ur8njpFO6Ac= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0/go.mod h1:3rHrKNtLIoS0oZwkY2vxi+oJcwFRWdtUyRII+so45p8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0 h1:9kV11HXBHZAvuPUZxmMWrH8hZn/6UnHX4K0mu36vNsU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0/go.mod h1:JyA0FHXe22E1NeNiHmVp7kFHglnexDQ7uRWDiiJ1hKQ= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0 h1:cMyu9O88joYEaI47CnQkxO1XZdpoTF9fEnW2duIddhw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0/go.mod h1:6Am3rn7P9TVVeXYG+wtcGE7IE1tsQ+bP3AuWcKt/gOI= +go.opentelemetry.io/otel/log v0.8.0 h1:egZ8vV5atrUWUbnSsHn6vB8R21G2wrKqNiDt3iWertk= +go.opentelemetry.io/otel/log v0.8.0/go.mod h1:M9qvDdUTRCopJcGRKg57+JSQ9LgLBrwwfC32epk5NX8= +go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/log v0.8.0 h1:zg7GUYXqxk1jnGF/dTdLPrK06xJdrXgqgFLnI4Crxvs= +go.opentelemetry.io/otel/sdk/log v0.8.0/go.mod h1:50iXr0UVwQrYS45KbruFrEt4LvAdCaWWgIrsN3ZQggo= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= -golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= -golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= -google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= -google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= -google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= +golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= +golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a h1:nwKuGPlUAt+aR+pcrkfFRrTU1BVrSmYyYMxYbUIVHr0= +google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a/go.mod h1:3kWAYMk1I75K4vykHtKt2ycnOgpA6974V7bREqbsenU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a h1:51aaUVRocpvUOSQKM6Q7VuoaktNIaMCLuhZB6DKksq4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a/go.mod h1:uRxBH1mhmO8PGhU89cMcHaXKZqO+OfakD8QQO0oYwlQ= +google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= +google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/etc/templates/skeleton/etc/workflow-runtime/dagger.json b/etc/templates/skeleton/etc/workflow-runtime/dagger.json new file mode 100644 index 00000000..be3ca08f --- /dev/null +++ b/etc/templates/skeleton/etc/workflow-runtime/dagger.json @@ -0,0 +1,8 @@ +{ + "name": "workflow-runtime", + "engineVersion": "v0.18.9", + "sdk": { + "source": "go" + }, + "source": "src" +} diff --git a/etc/templates/skeleton/etc/workflow-runtime/moon.yml b/etc/templates/skeleton/etc/workflow-runtime/moon.yml new file mode 100644 index 00000000..acf9ee99 --- /dev/null +++ b/etc/templates/skeleton/etc/workflow-runtime/moon.yml @@ -0,0 +1,3 @@ +# yaml-language-server: $schema: 'https://moonrepo.dev/schemas/project.json' +type: tool +id: workflow-runtime diff --git a/etc/templates/skeleton/etc/workflow-runtime/src/base.go b/etc/templates/skeleton/etc/workflow-runtime/src/base.go new file mode 100644 index 00000000..5eb2c4c7 --- /dev/null +++ b/etc/templates/skeleton/etc/workflow-runtime/src/base.go @@ -0,0 +1,120 @@ +// A generated module for Runner functions +// +// This module has been generated via dagger init and serves as a reference to +// basic module structure as you get started with Dagger. +// +// Two functions have been pre-created. You can modify, delete, or add to them, +// as needed. They demonstrate usage of arguments and return types using simple +// echo and grep commands. The functions can be called from the dagger CLI or +// from one of the SDKs. +// +// The first line in this comment block is a short description line and the +// rest is a long description with more detail on the module's purpose or usage, +// if appropriate. All modules should have a short description. + +package main + +import ( + "context" + "dagger/workflow_runtime/internal/dagger" + "dagger/workflow_runtime/utils" +) + +func New( + // +required + // +ignore=["node_modules/", ".moon/cache/", ".cache/"] + dir *dagger.Directory, + // +optional + // +default="dev" + mode string, + // +optional + ghToken *dagger.Secret, +) *WorkflowRuntime { + return &WorkflowRuntime{ + Dir: dir, + Mode: mode, + GhToken: ghToken, + } +} + +// Setup Proto +func (m *WorkflowRuntime) BuildBaseEnv(ctx context.Context) *dagger.Container { + return dag. + Container(). + From("ubuntu:plucky"). + // apt-get update && apt-get install -y curl git unzip gzip xz-utils + WithExec([]string{"apt-get", "update"}). + WithExec([]string{"apt-get", "install", "-y", "build-essential", "curl", "git", "unzip", "bash", "gzip", "xz-utils"}). + // curl -fsSL https://moonrepo.dev/install/proto.sh | bash -s 0.35.3 --yes + WithExec([]string{"bash", "-l", "-c", "curl -fsSL https://moonrepo.dev/install/proto.sh | bash -s 0.44.1 --yes"}). + WithEnvVariable("PROTO_HOME", "/root/.proto", dagger.ContainerWithEnvVariableOpts{Expand: true}). + WithEnvVariable("PATH", "$PATH:$PROTO_HOME/shims:$PROTO_HOME/bin", dagger.ContainerWithEnvVariableOpts{Expand: true}) +} + +func (m *WorkflowRuntime) BuildBase(ctx context.Context) *WorkflowRuntime { + source := dag.Directory().WithDirectory("/", m.Dir, dagger.DirectoryWithDirectoryOpts{ + Exclude: []string{"node_modules", ".cache", ".moon/cache"}, + }) + + con := m.BuildBaseEnv(ctx). + WithWorkdir("/mnt"). + WithFile("/mnt/.prototools", m.Dir.File(".prototools")). + // proto use + // WithExec([]string{"bash", "-l", "-c", "proto use"}). + WithExec([]string{"proto", "use"}). + // rm .prototools + WithoutFile("/mnt/.prototools"). + WithMountedDirectory("/mnt", source). + // moon setup + // WithExec([]string{"bash", "-l", "-c", "moon setup"}). + WithExec([]string{"moon", "setup"}). + // yarn install --immutable + // WithExec([]string{"bash", "-l", "-c", "yarn install --immutable"}) + WithExec([]string{"yarn", "install", "--immutable"}) + + utils.SetEnvs(con, ctx, m) + + m.con = con + + return m +} + +func (m *WorkflowRuntime) WithAction(ctx context.Context, command string) *WorkflowRuntime { + m. + BuildBase(ctx) + + utils.RunActionScript(m.con, command) + + return m +} + +func (m *WorkflowRuntime) Test(ctx context.Context) (string, error) { + return m. + WithAction(ctx, "test"). + con. + Stdout(ctx) +} + +func (m *WorkflowRuntime) Build(ctx context.Context) *dagger.Directory { + return m. + WithAction(ctx, "build"). + con. + Directory("/mnt/apps/app/public") +} + +func (m *WorkflowRuntime) Publish(ctx context.Context) (string, error) { + return m. + WithAction(ctx, "publish"). + con. + Stdout(ctx) +} + +// GetMode returns the Mode field of the Runner +func (m *WorkflowRuntime) GetMode() string { + return m.Mode +} + +// GetGhToken returns the GhToken field of the Runner +func (m *WorkflowRuntime) GetGhToken() *dagger.Secret { + return m.GhToken +} diff --git a/etc/templates/skeleton/etc/workflow-runtime/src/go.mod b/etc/templates/skeleton/etc/workflow-runtime/src/go.mod new file mode 100644 index 00000000..f182fa95 --- /dev/null +++ b/etc/templates/skeleton/etc/workflow-runtime/src/go.mod @@ -0,0 +1,50 @@ +module dagger/workflow_runtime + +go 1.24.3 + +require ( + github.com/99designs/gqlgen v0.17.73 + github.com/Khan/genqlient v0.8.1 + github.com/vektah/gqlparser/v2 v2.5.27 + go.opentelemetry.io/otel v1.34.0 + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0 + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0 + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0 + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0 + go.opentelemetry.io/otel/log v0.8.0 + go.opentelemetry.io/otel/metric v1.34.0 + go.opentelemetry.io/otel/sdk v1.34.0 + go.opentelemetry.io/otel/sdk/log v0.8.0 + go.opentelemetry.io/otel/sdk/metric v1.34.0 + go.opentelemetry.io/otel/trace v1.34.0 + go.opentelemetry.io/proto/otlp v1.3.1 + golang.org/x/sync v0.14.0 + google.golang.org/grpc v1.72.1 +) + +require ( + github.com/cenkalti/backoff/v4 v4.3.0 // indirect + github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 // indirect + github.com/sosodev/duration v1.3.1 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 // indirect + golang.org/x/net v0.40.0 // indirect + golang.org/x/sys v0.33.0 // indirect + golang.org/x/text v0.25.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a // indirect + google.golang.org/protobuf v1.36.6 // indirect +) + +replace go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc => go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0 + +replace go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp => go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0 + +replace go.opentelemetry.io/otel/log => go.opentelemetry.io/otel/log v0.8.0 + +replace go.opentelemetry.io/otel/sdk/log => go.opentelemetry.io/otel/sdk/log v0.8.0 diff --git a/etc/templates/skeleton/etc/workflow-runtime/src/go.sum b/etc/templates/skeleton/etc/workflow-runtime/src/go.sum new file mode 100644 index 00000000..73a28981 --- /dev/null +++ b/etc/templates/skeleton/etc/workflow-runtime/src/go.sum @@ -0,0 +1,85 @@ +github.com/99designs/gqlgen v0.17.73 h1:A3Ki+rHWqKbAOlg5fxiZBnz6OjW3nwupDHEG15gEsrg= +github.com/99designs/gqlgen v0.17.73/go.mod h1:2RyGWjy2k7W9jxrs8MOQthXGkD3L3oGr0jXW3Pu8lGg= +github.com/Khan/genqlient v0.8.1 h1:wtOCc8N9rNynRLXN3k3CnfzheCUNKBcvXmVv5zt6WCs= +github.com/Khan/genqlient v0.8.1/go.mod h1:R2G6DzjBvCbhjsEajfRjbWdVglSH/73kSivC9TLWVjU= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 h1:ad0vkEBuk23VJzZR9nkLVG0YAoN9coASF1GusYX6AlU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0/go.mod h1:igFoXX2ELCW06bol23DWPB5BEWfZISOzSP5K2sbLea0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= +github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= +github.com/sosodev/duration v1.3.1 h1:qtHBDMQ6lvMQsL15g4aopM4HEfOaYuhWBw3NPTtlqq4= +github.com/sosodev/duration v1.3.1/go.mod h1:RQIBBX0+fMLc/D9+Jb/fwvVmo0eZvDDEERAikUR6SDg= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/vektah/gqlparser/v2 v2.5.27 h1:RHPD3JOplpk5mP5JGX8RKZkt2/Vwj/PZv0HxTdwFp0s= +github.com/vektah/gqlparser/v2 v2.5.27/go.mod h1:D1/VCZtV3LPnQrcPBeR/q5jkSQIPti0uYCP/RI0gIeo= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0 h1:WzNab7hOOLzdDF/EoWCt4glhrbMPVMOO5JYTmpz36Ls= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0/go.mod h1:hKvJwTzJdp90Vh7p6q/9PAOd55dI6WA6sWj62a/JvSs= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0 h1:S+LdBGiQXtJdowoJoQPEtI52syEP/JYBUpjO49EQhV8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0/go.mod h1:5KXybFvPGds3QinJWQT7pmXf+TN5YIa7CNYObWRkj50= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0 h1:j7ZSD+5yn+lo3sGV69nW04rRR0jhYnBwjuX3r0HvnK0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0/go.mod h1:WXbYJTUaZXAbYd8lbgGuvih0yuCfOFC5RJoYnoLcGz8= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0 h1:t/Qur3vKSkUCcDVaSumWF2PKHt85pc7fRvFuoVT8qFU= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0/go.mod h1:Rl61tySSdcOJWoEgYZVtmnKdA0GeKrSqkHC1t+91CH8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 h1:IJFEoHiytixx8cMiVAO+GmHR6Frwu+u5Ur8njpFO6Ac= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0/go.mod h1:3rHrKNtLIoS0oZwkY2vxi+oJcwFRWdtUyRII+so45p8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0 h1:9kV11HXBHZAvuPUZxmMWrH8hZn/6UnHX4K0mu36vNsU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0/go.mod h1:JyA0FHXe22E1NeNiHmVp7kFHglnexDQ7uRWDiiJ1hKQ= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0 h1:cMyu9O88joYEaI47CnQkxO1XZdpoTF9fEnW2duIddhw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0/go.mod h1:6Am3rn7P9TVVeXYG+wtcGE7IE1tsQ+bP3AuWcKt/gOI= +go.opentelemetry.io/otel/log v0.8.0 h1:egZ8vV5atrUWUbnSsHn6vB8R21G2wrKqNiDt3iWertk= +go.opentelemetry.io/otel/log v0.8.0/go.mod h1:M9qvDdUTRCopJcGRKg57+JSQ9LgLBrwwfC32epk5NX8= +go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/log v0.8.0 h1:zg7GUYXqxk1jnGF/dTdLPrK06xJdrXgqgFLnI4Crxvs= +go.opentelemetry.io/otel/sdk/log v0.8.0/go.mod h1:50iXr0UVwQrYS45KbruFrEt4LvAdCaWWgIrsN3ZQggo= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= +go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= +go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= +golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= +golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a h1:nwKuGPlUAt+aR+pcrkfFRrTU1BVrSmYyYMxYbUIVHr0= +google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a/go.mod h1:3kWAYMk1I75K4vykHtKt2ycnOgpA6974V7bREqbsenU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a h1:51aaUVRocpvUOSQKM6Q7VuoaktNIaMCLuhZB6DKksq4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a/go.mod h1:uRxBH1mhmO8PGhU89cMcHaXKZqO+OfakD8QQO0oYwlQ= +google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= +google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/etc/templates/skeleton/etc/workflow-runtime/src/utils/run_action_script.go b/etc/templates/skeleton/etc/workflow-runtime/src/utils/run_action_script.go new file mode 100644 index 00000000..53262e95 --- /dev/null +++ b/etc/templates/skeleton/etc/workflow-runtime/src/utils/run_action_script.go @@ -0,0 +1,11 @@ +package utils + +import ( + "dagger/workflow_runtime/internal/dagger" + "fmt" +) + +func RunActionScript(c *dagger.Container, action string) *dagger.Container { + return c. + WithExec([]string{"bash", "-l", "-c", fmt.Sprintf("./etc/scripts/actions/%s.ts", action)}) +} diff --git a/etc/templates/skeleton/etc/workflow-runtime/src/utils/set_envs.go b/etc/templates/skeleton/etc/workflow-runtime/src/utils/set_envs.go new file mode 100644 index 00000000..5124da8d --- /dev/null +++ b/etc/templates/skeleton/etc/workflow-runtime/src/utils/set_envs.go @@ -0,0 +1,26 @@ +package utils + +import ( + "context" + "dagger/workflow_runtime/internal/dagger" +) + +// RunnerInterface defines the interface for Runner objects +type RunnerInterface interface { + GetMode() string + GetGhToken() *dagger.Secret +} + +func SetEnvs(c *dagger.Container, ctx context.Context, m RunnerInterface) *dagger.Container { + c = c. + WithEnvVariable("MODE", m.GetMode()) + + if m.GetGhToken() != nil { + tokenString, _ := m.GetGhToken().Plaintext(ctx) + + c = c. + WithEnvVariable("GH_TOKEN", tokenString) + } + + return c +} diff --git a/etc/templates/skeleton/etc/workflow-runtime/src/workflow_runtime.go b/etc/templates/skeleton/etc/workflow-runtime/src/workflow_runtime.go new file mode 100644 index 00000000..6805bef8 --- /dev/null +++ b/etc/templates/skeleton/etc/workflow-runtime/src/workflow_runtime.go @@ -0,0 +1,10 @@ +package main + +import "dagger/workflow_runtime/internal/dagger" + +type WorkflowRuntime struct { + Dir *dagger.Directory + Mode string + GhToken *dagger.Secret + con *dagger.Container +} diff --git a/etc/templates/skeleton/template.yml b/etc/templates/skeleton/template.yml new file mode 100644 index 00000000..22baa47f --- /dev/null +++ b/etc/templates/skeleton/template.yml @@ -0,0 +1,7 @@ +# https://moonrepo.dev/docs/config/template +$schema: ../../../.moon/cache/schemas/template.json +id: skeleton +title: Monorepo Skeleton Template +description: | + This is a skeleton template for Moon monorepos. + It can be used as a starting point for new projects. From fa3120088c649d18579ee936791227064c0ea731 Mon Sep 17 00:00:00 2001 From: ndthanhdev Date: Fri, 20 Jun 2025 20:14:15 +0700 Subject: [PATCH 2/9] rt --- .../workflow-runtime/src/{base.go => main.go} | 60 +++++++------------ .../src/utils/run_action_script.go | 11 ---- .../workflow-runtime/src/utils/set_envs.go | 26 -------- .../workflow-runtime/src/workflow_runtime.go | 2 +- 4 files changed, 22 insertions(+), 77 deletions(-) rename etc/templates/skeleton/etc/workflow-runtime/src/{base.go => main.go} (67%) delete mode 100644 etc/templates/skeleton/etc/workflow-runtime/src/utils/run_action_script.go delete mode 100644 etc/templates/skeleton/etc/workflow-runtime/src/utils/set_envs.go diff --git a/etc/templates/skeleton/etc/workflow-runtime/src/base.go b/etc/templates/skeleton/etc/workflow-runtime/src/main.go similarity index 67% rename from etc/templates/skeleton/etc/workflow-runtime/src/base.go rename to etc/templates/skeleton/etc/workflow-runtime/src/main.go index 5eb2c4c7..569856d4 100644 --- a/etc/templates/skeleton/etc/workflow-runtime/src/base.go +++ b/etc/templates/skeleton/etc/workflow-runtime/src/main.go @@ -17,7 +17,7 @@ package main import ( "context" "dagger/workflow_runtime/internal/dagger" - "dagger/workflow_runtime/utils" + "fmt" ) func New( @@ -38,8 +38,8 @@ func New( } // Setup Proto -func (m *WorkflowRuntime) BuildBaseEnv(ctx context.Context) *dagger.Container { - return dag. +func (m *WorkflowRuntime) BuildBaseEnv(ctx context.Context) *WorkflowRuntime { + m.Con = dag. Container(). From("ubuntu:plucky"). // apt-get update && apt-get install -y curl git unzip gzip xz-utils @@ -49,72 +49,54 @@ func (m *WorkflowRuntime) BuildBaseEnv(ctx context.Context) *dagger.Container { WithExec([]string{"bash", "-l", "-c", "curl -fsSL https://moonrepo.dev/install/proto.sh | bash -s 0.44.1 --yes"}). WithEnvVariable("PROTO_HOME", "/root/.proto", dagger.ContainerWithEnvVariableOpts{Expand: true}). WithEnvVariable("PATH", "$PATH:$PROTO_HOME/shims:$PROTO_HOME/bin", dagger.ContainerWithEnvVariableOpts{Expand: true}) + + return m } -func (m *WorkflowRuntime) BuildBase(ctx context.Context) *WorkflowRuntime { +func (m *WorkflowRuntime) BuildEnv(ctx context.Context) *WorkflowRuntime { source := dag.Directory().WithDirectory("/", m.Dir, dagger.DirectoryWithDirectoryOpts{ Exclude: []string{"node_modules", ".cache", ".moon/cache"}, }) - con := m.BuildBaseEnv(ctx). + m.Con = m.BuildBaseEnv(ctx). + Con. WithWorkdir("/mnt"). WithFile("/mnt/.prototools", m.Dir.File(".prototools")). // proto use - // WithExec([]string{"bash", "-l", "-c", "proto use"}). WithExec([]string{"proto", "use"}). // rm .prototools WithoutFile("/mnt/.prototools"). WithMountedDirectory("/mnt", source). // moon setup - // WithExec([]string{"bash", "-l", "-c", "moon setup"}). WithExec([]string{"moon", "setup"}). // yarn install --immutable - // WithExec([]string{"bash", "-l", "-c", "yarn install --immutable"}) WithExec([]string{"yarn", "install", "--immutable"}) - utils.SetEnvs(con, ctx, m) - - m.con = con + m = m.setEnvs(ctx) return m } func (m *WorkflowRuntime) WithAction(ctx context.Context, command string) *WorkflowRuntime { - m. - BuildBase(ctx) - - utils.RunActionScript(m.con, command) + m.Con = m.Con.WithExec([]string{"bash", "-l", "-c", fmt.Sprintf("./etc/scripts/actions/%s.ts", command)}) return m } -func (m *WorkflowRuntime) Test(ctx context.Context) (string, error) { - return m. - WithAction(ctx, "test"). - con. - Stdout(ctx) +func (m *WorkflowRuntime) Container(ctx context.Context) *dagger.Container { + return m.Con } -func (m *WorkflowRuntime) Build(ctx context.Context) *dagger.Directory { - return m. - WithAction(ctx, "build"). - con. - Directory("/mnt/apps/app/public") -} +func (m *WorkflowRuntime) setEnvs(ctx context.Context) *WorkflowRuntime { + m.Con = m.Con. + WithEnvVariable("MODE", m.Mode) -func (m *WorkflowRuntime) Publish(ctx context.Context) (string, error) { - return m. - WithAction(ctx, "publish"). - con. - Stdout(ctx) -} + if m.GhToken != nil { + tokenString, _ := m.GhToken.Plaintext(ctx) -// GetMode returns the Mode field of the Runner -func (m *WorkflowRuntime) GetMode() string { - return m.Mode -} + m.Con = m.Con. + WithEnvVariable("GH_TOKEN", tokenString) + } -// GetGhToken returns the GhToken field of the Runner -func (m *WorkflowRuntime) GetGhToken() *dagger.Secret { - return m.GhToken + return m } diff --git a/etc/templates/skeleton/etc/workflow-runtime/src/utils/run_action_script.go b/etc/templates/skeleton/etc/workflow-runtime/src/utils/run_action_script.go deleted file mode 100644 index 53262e95..00000000 --- a/etc/templates/skeleton/etc/workflow-runtime/src/utils/run_action_script.go +++ /dev/null @@ -1,11 +0,0 @@ -package utils - -import ( - "dagger/workflow_runtime/internal/dagger" - "fmt" -) - -func RunActionScript(c *dagger.Container, action string) *dagger.Container { - return c. - WithExec([]string{"bash", "-l", "-c", fmt.Sprintf("./etc/scripts/actions/%s.ts", action)}) -} diff --git a/etc/templates/skeleton/etc/workflow-runtime/src/utils/set_envs.go b/etc/templates/skeleton/etc/workflow-runtime/src/utils/set_envs.go deleted file mode 100644 index 5124da8d..00000000 --- a/etc/templates/skeleton/etc/workflow-runtime/src/utils/set_envs.go +++ /dev/null @@ -1,26 +0,0 @@ -package utils - -import ( - "context" - "dagger/workflow_runtime/internal/dagger" -) - -// RunnerInterface defines the interface for Runner objects -type RunnerInterface interface { - GetMode() string - GetGhToken() *dagger.Secret -} - -func SetEnvs(c *dagger.Container, ctx context.Context, m RunnerInterface) *dagger.Container { - c = c. - WithEnvVariable("MODE", m.GetMode()) - - if m.GetGhToken() != nil { - tokenString, _ := m.GetGhToken().Plaintext(ctx) - - c = c. - WithEnvVariable("GH_TOKEN", tokenString) - } - - return c -} diff --git a/etc/templates/skeleton/etc/workflow-runtime/src/workflow_runtime.go b/etc/templates/skeleton/etc/workflow-runtime/src/workflow_runtime.go index 6805bef8..68bbf71f 100644 --- a/etc/templates/skeleton/etc/workflow-runtime/src/workflow_runtime.go +++ b/etc/templates/skeleton/etc/workflow-runtime/src/workflow_runtime.go @@ -6,5 +6,5 @@ type WorkflowRuntime struct { Dir *dagger.Directory Mode string GhToken *dagger.Secret - con *dagger.Container + Con *dagger.Container } From 5cc2f69193601972a69a0bb6f670f9081d217f8c Mon Sep 17 00:00:00 2001 From: ndthanhdev Date: Fri, 20 Jun 2025 21:40:17 +0700 Subject: [PATCH 3/9] wip --- .github/workflows/validate-pr.yml | 3 ++- etc/scripts/workflows/validate-pr.ts | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100755 etc/scripts/workflows/validate-pr.ts diff --git a/.github/workflows/validate-pr.yml b/.github/workflows/validate-pr.yml index c5c5eb4c..15584716 100644 --- a/.github/workflows/validate-pr.yml +++ b/.github/workflows/validate-pr.yml @@ -13,8 +13,9 @@ jobs: - uses: actions/checkout@v4 - name: Setup Dagger - uses: dagger/dagger-for-github@v7 + uses: dagger/dagger-for-github@8.0.0 with: + version: 0.18.9 verb: functions workdir: ./etc/runner diff --git a/etc/scripts/workflows/validate-pr.ts b/etc/scripts/workflows/validate-pr.ts new file mode 100755 index 00000000..bc26a6c2 --- /dev/null +++ b/etc/scripts/workflows/validate-pr.ts @@ -0,0 +1,14 @@ +#!/usr/bin/env -S yarn dlx tsx +import "zx/globals"; +import { cleanBuild } from "@n8v/scripts/utils/clean-build"; +import { workDirs } from "@n8v/scripts/utils/work-dir"; + +$.verbose = true; + +await cleanBuild(); + +cd(workDirs.etc.runner.path); + +await $`dagger call --dir ${workDirs.path} test`; + +await $`dagger call --dir ${workDirs.path} build`; From e477a0d3ca4b65f5aa1bd005e87b9b39da937ac2 Mon Sep 17 00:00:00 2001 From: ndthanhdev Date: Fri, 20 Jun 2025 22:08:02 +0700 Subject: [PATCH 4/9] wip --- .prototools | 2 +- etc/scripts/utils/work-dir.ts | 4 + etc/scripts/workflows/validate-pr.ts | 19 ++- .../skeleton/etc/workflow-runtime/src/main.go | 12 +- etc/workflow-runtime/dagger.json | 8 ++ etc/workflow-runtime/moon.yml | 3 + etc/workflow-runtime/src/.gitattributes | 4 + etc/workflow-runtime/src/.gitignore | 4 + etc/workflow-runtime/src/go.mod | 50 ++++++++ etc/workflow-runtime/src/go.sum | 85 ++++++++++++++ etc/workflow-runtime/src/main.go | 110 ++++++++++++++++++ etc/workflow-runtime/src/workflow_runtime.go | 10 ++ 12 files changed, 304 insertions(+), 7 deletions(-) create mode 100644 etc/workflow-runtime/dagger.json create mode 100644 etc/workflow-runtime/moon.yml create mode 100644 etc/workflow-runtime/src/.gitattributes create mode 100644 etc/workflow-runtime/src/.gitignore create mode 100644 etc/workflow-runtime/src/go.mod create mode 100644 etc/workflow-runtime/src/go.sum create mode 100644 etc/workflow-runtime/src/main.go create mode 100644 etc/workflow-runtime/src/workflow_runtime.go diff --git a/.prototools b/.prototools index 4c2bf4b5..4f6658f4 100644 --- a/.prototools +++ b/.prototools @@ -1,7 +1,7 @@ dagger = "^0" go = "^1" moon = "^1" -node = "^24" +node = "^22" yarn = "^4" rust = "^1" diff --git a/etc/scripts/utils/work-dir.ts b/etc/scripts/utils/work-dir.ts index eaae76cb..cb2957e4 100755 --- a/etc/scripts/utils/work-dir.ts +++ b/etc/scripts/utils/work-dir.ts @@ -10,6 +10,7 @@ const etc = path.resolve(root, "etc"); const app = path.resolve(apps, "app"); const counter = path.resolve(apps, "counter"); const runner = path.resolve(etc, "runner"); +const workflowRuntime = path.resolve(etc, "workflow-runtime"); const scripts = path.resolve(etc, "scripts"); // eslint-disable-next-line unicorn/prevent-abbreviations @@ -44,6 +45,9 @@ export const workDirs = { scripts: { path: scripts, }, + workflowRuntime: { + path: workflowRuntime, + }, }, path: root, }; diff --git a/etc/scripts/workflows/validate-pr.ts b/etc/scripts/workflows/validate-pr.ts index bc26a6c2..3a382d33 100755 --- a/etc/scripts/workflows/validate-pr.ts +++ b/etc/scripts/workflows/validate-pr.ts @@ -7,8 +7,19 @@ $.verbose = true; await cleanBuild(); -cd(workDirs.etc.runner.path); +cd(workDirs.etc.workflowRuntime.path); -await $`dagger call --dir ${workDirs.path} test`; - -await $`dagger call --dir ${workDirs.path} build`; +await $`${[ + "dagger", + "call", + "--dir", + workDirs.path, + "build-env", + "with-action", + "--action", + "test", + "with-action", + "--action", + "build", + "stdout", +]}`; diff --git a/etc/templates/skeleton/etc/workflow-runtime/src/main.go b/etc/templates/skeleton/etc/workflow-runtime/src/main.go index 569856d4..164befeb 100644 --- a/etc/templates/skeleton/etc/workflow-runtime/src/main.go +++ b/etc/templates/skeleton/etc/workflow-runtime/src/main.go @@ -77,8 +77,8 @@ func (m *WorkflowRuntime) BuildEnv(ctx context.Context) *WorkflowRuntime { return m } -func (m *WorkflowRuntime) WithAction(ctx context.Context, command string) *WorkflowRuntime { - m.Con = m.Con.WithExec([]string{"bash", "-l", "-c", fmt.Sprintf("./etc/scripts/actions/%s.ts", command)}) +func (m *WorkflowRuntime) WithAction(ctx context.Context, action string) *WorkflowRuntime { + m.Con = m.Con.WithExec([]string{"bash", "-l", "-c", fmt.Sprintf("./etc/scripts/actions/%s.ts", action)}) return m } @@ -87,6 +87,14 @@ func (m *WorkflowRuntime) Container(ctx context.Context) *dagger.Container { return m.Con } +func (m *WorkflowRuntime) Stdout(ctx context.Context) (string, error) { + stdout, err := m.Con.Stdout(ctx) + if err != nil { + return "", fmt.Errorf("failed to get stdout: %w", err) + } + return stdout, nil +} + func (m *WorkflowRuntime) setEnvs(ctx context.Context) *WorkflowRuntime { m.Con = m.Con. WithEnvVariable("MODE", m.Mode) diff --git a/etc/workflow-runtime/dagger.json b/etc/workflow-runtime/dagger.json new file mode 100644 index 00000000..be3ca08f --- /dev/null +++ b/etc/workflow-runtime/dagger.json @@ -0,0 +1,8 @@ +{ + "name": "workflow-runtime", + "engineVersion": "v0.18.9", + "sdk": { + "source": "go" + }, + "source": "src" +} diff --git a/etc/workflow-runtime/moon.yml b/etc/workflow-runtime/moon.yml new file mode 100644 index 00000000..acf9ee99 --- /dev/null +++ b/etc/workflow-runtime/moon.yml @@ -0,0 +1,3 @@ +# yaml-language-server: $schema: 'https://moonrepo.dev/schemas/project.json' +type: tool +id: workflow-runtime diff --git a/etc/workflow-runtime/src/.gitattributes b/etc/workflow-runtime/src/.gitattributes new file mode 100644 index 00000000..3a454933 --- /dev/null +++ b/etc/workflow-runtime/src/.gitattributes @@ -0,0 +1,4 @@ +/dagger.gen.go linguist-generated +/internal/dagger/** linguist-generated +/internal/querybuilder/** linguist-generated +/internal/telemetry/** linguist-generated diff --git a/etc/workflow-runtime/src/.gitignore b/etc/workflow-runtime/src/.gitignore new file mode 100644 index 00000000..7ebabcc1 --- /dev/null +++ b/etc/workflow-runtime/src/.gitignore @@ -0,0 +1,4 @@ +/dagger.gen.go +/internal/dagger +/internal/querybuilder +/internal/telemetry diff --git a/etc/workflow-runtime/src/go.mod b/etc/workflow-runtime/src/go.mod new file mode 100644 index 00000000..f182fa95 --- /dev/null +++ b/etc/workflow-runtime/src/go.mod @@ -0,0 +1,50 @@ +module dagger/workflow_runtime + +go 1.24.3 + +require ( + github.com/99designs/gqlgen v0.17.73 + github.com/Khan/genqlient v0.8.1 + github.com/vektah/gqlparser/v2 v2.5.27 + go.opentelemetry.io/otel v1.34.0 + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0 + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0 + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0 + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0 + go.opentelemetry.io/otel/log v0.8.0 + go.opentelemetry.io/otel/metric v1.34.0 + go.opentelemetry.io/otel/sdk v1.34.0 + go.opentelemetry.io/otel/sdk/log v0.8.0 + go.opentelemetry.io/otel/sdk/metric v1.34.0 + go.opentelemetry.io/otel/trace v1.34.0 + go.opentelemetry.io/proto/otlp v1.3.1 + golang.org/x/sync v0.14.0 + google.golang.org/grpc v1.72.1 +) + +require ( + github.com/cenkalti/backoff/v4 v4.3.0 // indirect + github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 // indirect + github.com/sosodev/duration v1.3.1 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 // indirect + golang.org/x/net v0.40.0 // indirect + golang.org/x/sys v0.33.0 // indirect + golang.org/x/text v0.25.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a // indirect + google.golang.org/protobuf v1.36.6 // indirect +) + +replace go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc => go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0 + +replace go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp => go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0 + +replace go.opentelemetry.io/otel/log => go.opentelemetry.io/otel/log v0.8.0 + +replace go.opentelemetry.io/otel/sdk/log => go.opentelemetry.io/otel/sdk/log v0.8.0 diff --git a/etc/workflow-runtime/src/go.sum b/etc/workflow-runtime/src/go.sum new file mode 100644 index 00000000..73a28981 --- /dev/null +++ b/etc/workflow-runtime/src/go.sum @@ -0,0 +1,85 @@ +github.com/99designs/gqlgen v0.17.73 h1:A3Ki+rHWqKbAOlg5fxiZBnz6OjW3nwupDHEG15gEsrg= +github.com/99designs/gqlgen v0.17.73/go.mod h1:2RyGWjy2k7W9jxrs8MOQthXGkD3L3oGr0jXW3Pu8lGg= +github.com/Khan/genqlient v0.8.1 h1:wtOCc8N9rNynRLXN3k3CnfzheCUNKBcvXmVv5zt6WCs= +github.com/Khan/genqlient v0.8.1/go.mod h1:R2G6DzjBvCbhjsEajfRjbWdVglSH/73kSivC9TLWVjU= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 h1:ad0vkEBuk23VJzZR9nkLVG0YAoN9coASF1GusYX6AlU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0/go.mod h1:igFoXX2ELCW06bol23DWPB5BEWfZISOzSP5K2sbLea0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= +github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= +github.com/sosodev/duration v1.3.1 h1:qtHBDMQ6lvMQsL15g4aopM4HEfOaYuhWBw3NPTtlqq4= +github.com/sosodev/duration v1.3.1/go.mod h1:RQIBBX0+fMLc/D9+Jb/fwvVmo0eZvDDEERAikUR6SDg= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/vektah/gqlparser/v2 v2.5.27 h1:RHPD3JOplpk5mP5JGX8RKZkt2/Vwj/PZv0HxTdwFp0s= +github.com/vektah/gqlparser/v2 v2.5.27/go.mod h1:D1/VCZtV3LPnQrcPBeR/q5jkSQIPti0uYCP/RI0gIeo= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0 h1:WzNab7hOOLzdDF/EoWCt4glhrbMPVMOO5JYTmpz36Ls= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0/go.mod h1:hKvJwTzJdp90Vh7p6q/9PAOd55dI6WA6sWj62a/JvSs= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0 h1:S+LdBGiQXtJdowoJoQPEtI52syEP/JYBUpjO49EQhV8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0/go.mod h1:5KXybFvPGds3QinJWQT7pmXf+TN5YIa7CNYObWRkj50= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0 h1:j7ZSD+5yn+lo3sGV69nW04rRR0jhYnBwjuX3r0HvnK0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0/go.mod h1:WXbYJTUaZXAbYd8lbgGuvih0yuCfOFC5RJoYnoLcGz8= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0 h1:t/Qur3vKSkUCcDVaSumWF2PKHt85pc7fRvFuoVT8qFU= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0/go.mod h1:Rl61tySSdcOJWoEgYZVtmnKdA0GeKrSqkHC1t+91CH8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 h1:IJFEoHiytixx8cMiVAO+GmHR6Frwu+u5Ur8njpFO6Ac= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0/go.mod h1:3rHrKNtLIoS0oZwkY2vxi+oJcwFRWdtUyRII+so45p8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0 h1:9kV11HXBHZAvuPUZxmMWrH8hZn/6UnHX4K0mu36vNsU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0/go.mod h1:JyA0FHXe22E1NeNiHmVp7kFHglnexDQ7uRWDiiJ1hKQ= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0 h1:cMyu9O88joYEaI47CnQkxO1XZdpoTF9fEnW2duIddhw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0/go.mod h1:6Am3rn7P9TVVeXYG+wtcGE7IE1tsQ+bP3AuWcKt/gOI= +go.opentelemetry.io/otel/log v0.8.0 h1:egZ8vV5atrUWUbnSsHn6vB8R21G2wrKqNiDt3iWertk= +go.opentelemetry.io/otel/log v0.8.0/go.mod h1:M9qvDdUTRCopJcGRKg57+JSQ9LgLBrwwfC32epk5NX8= +go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/log v0.8.0 h1:zg7GUYXqxk1jnGF/dTdLPrK06xJdrXgqgFLnI4Crxvs= +go.opentelemetry.io/otel/sdk/log v0.8.0/go.mod h1:50iXr0UVwQrYS45KbruFrEt4LvAdCaWWgIrsN3ZQggo= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= +go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= +go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= +golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= +golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a h1:nwKuGPlUAt+aR+pcrkfFRrTU1BVrSmYyYMxYbUIVHr0= +google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a/go.mod h1:3kWAYMk1I75K4vykHtKt2ycnOgpA6974V7bREqbsenU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a h1:51aaUVRocpvUOSQKM6Q7VuoaktNIaMCLuhZB6DKksq4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a/go.mod h1:uRxBH1mhmO8PGhU89cMcHaXKZqO+OfakD8QQO0oYwlQ= +google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= +google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/etc/workflow-runtime/src/main.go b/etc/workflow-runtime/src/main.go new file mode 100644 index 00000000..164befeb --- /dev/null +++ b/etc/workflow-runtime/src/main.go @@ -0,0 +1,110 @@ +// A generated module for Runner functions +// +// This module has been generated via dagger init and serves as a reference to +// basic module structure as you get started with Dagger. +// +// Two functions have been pre-created. You can modify, delete, or add to them, +// as needed. They demonstrate usage of arguments and return types using simple +// echo and grep commands. The functions can be called from the dagger CLI or +// from one of the SDKs. +// +// The first line in this comment block is a short description line and the +// rest is a long description with more detail on the module's purpose or usage, +// if appropriate. All modules should have a short description. + +package main + +import ( + "context" + "dagger/workflow_runtime/internal/dagger" + "fmt" +) + +func New( + // +required + // +ignore=["node_modules/", ".moon/cache/", ".cache/"] + dir *dagger.Directory, + // +optional + // +default="dev" + mode string, + // +optional + ghToken *dagger.Secret, +) *WorkflowRuntime { + return &WorkflowRuntime{ + Dir: dir, + Mode: mode, + GhToken: ghToken, + } +} + +// Setup Proto +func (m *WorkflowRuntime) BuildBaseEnv(ctx context.Context) *WorkflowRuntime { + m.Con = dag. + Container(). + From("ubuntu:plucky"). + // apt-get update && apt-get install -y curl git unzip gzip xz-utils + WithExec([]string{"apt-get", "update"}). + WithExec([]string{"apt-get", "install", "-y", "build-essential", "curl", "git", "unzip", "bash", "gzip", "xz-utils"}). + // curl -fsSL https://moonrepo.dev/install/proto.sh | bash -s 0.35.3 --yes + WithExec([]string{"bash", "-l", "-c", "curl -fsSL https://moonrepo.dev/install/proto.sh | bash -s 0.44.1 --yes"}). + WithEnvVariable("PROTO_HOME", "/root/.proto", dagger.ContainerWithEnvVariableOpts{Expand: true}). + WithEnvVariable("PATH", "$PATH:$PROTO_HOME/shims:$PROTO_HOME/bin", dagger.ContainerWithEnvVariableOpts{Expand: true}) + + return m +} + +func (m *WorkflowRuntime) BuildEnv(ctx context.Context) *WorkflowRuntime { + source := dag.Directory().WithDirectory("/", m.Dir, dagger.DirectoryWithDirectoryOpts{ + Exclude: []string{"node_modules", ".cache", ".moon/cache"}, + }) + + m.Con = m.BuildBaseEnv(ctx). + Con. + WithWorkdir("/mnt"). + WithFile("/mnt/.prototools", m.Dir.File(".prototools")). + // proto use + WithExec([]string{"proto", "use"}). + // rm .prototools + WithoutFile("/mnt/.prototools"). + WithMountedDirectory("/mnt", source). + // moon setup + WithExec([]string{"moon", "setup"}). + // yarn install --immutable + WithExec([]string{"yarn", "install", "--immutable"}) + + m = m.setEnvs(ctx) + + return m +} + +func (m *WorkflowRuntime) WithAction(ctx context.Context, action string) *WorkflowRuntime { + m.Con = m.Con.WithExec([]string{"bash", "-l", "-c", fmt.Sprintf("./etc/scripts/actions/%s.ts", action)}) + + return m +} + +func (m *WorkflowRuntime) Container(ctx context.Context) *dagger.Container { + return m.Con +} + +func (m *WorkflowRuntime) Stdout(ctx context.Context) (string, error) { + stdout, err := m.Con.Stdout(ctx) + if err != nil { + return "", fmt.Errorf("failed to get stdout: %w", err) + } + return stdout, nil +} + +func (m *WorkflowRuntime) setEnvs(ctx context.Context) *WorkflowRuntime { + m.Con = m.Con. + WithEnvVariable("MODE", m.Mode) + + if m.GhToken != nil { + tokenString, _ := m.GhToken.Plaintext(ctx) + + m.Con = m.Con. + WithEnvVariable("GH_TOKEN", tokenString) + } + + return m +} diff --git a/etc/workflow-runtime/src/workflow_runtime.go b/etc/workflow-runtime/src/workflow_runtime.go new file mode 100644 index 00000000..68bbf71f --- /dev/null +++ b/etc/workflow-runtime/src/workflow_runtime.go @@ -0,0 +1,10 @@ +package main + +import "dagger/workflow_runtime/internal/dagger" + +type WorkflowRuntime struct { + Dir *dagger.Directory + Mode string + GhToken *dagger.Secret + Con *dagger.Container +} From 11cafc5524c2814d3ee2a5d744879dab769a500d Mon Sep 17 00:00:00 2001 From: ndthanhdev Date: Fri, 20 Jun 2025 22:21:05 +0700 Subject: [PATCH 5/9] wip --- .github/workflows/validate-pr.yml | 8 ++++---- docs/guidelines.md | 4 ++-- rust-toolchain.toml | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/validate-pr.yml b/.github/workflows/validate-pr.yml index 15584716..e018265f 100644 --- a/.github/workflows/validate-pr.yml +++ b/.github/workflows/validate-pr.yml @@ -6,8 +6,8 @@ on: - main jobs: - call-function: - name: Call function + run-workflow: + name: Run Workflow runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -27,6 +27,6 @@ jobs: - name: Install dependencies run: yarn install - - name: Call script - working-directory: ./etc/scripts/pipelines + - name: Run workflow + working-directory: ./etc/scripts/workflows run: ./validate-pr.ts diff --git a/docs/guidelines.md b/docs/guidelines.md index 57377a9a..1626420b 100644 --- a/docs/guidelines.md +++ b/docs/guidelines.md @@ -7,5 +7,5 @@ - `runner/`: Contains `functions` that run an `pipeline` under `etc/scripts/pipelines/` inside `dagger` container. - `scripts/` - `utils/`: Contains utility modules for reuse in other scripts. - - `actions/`: Contains the main scripts that perform small tasks should be able to run independently. Requires `tsx` to be installed - - `pipelines/`: Contains the main scripts that run a series of `dagger functions`. Requires `dagger` && `tsx` to be installed. + - `actions/`: Contains scripts that perform small tasks should be able to run independently. Requires `tsx` to be installed + - `workflows/`: Contains scripts that run a series of `actions` inside `workflow-runtime` diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 0193dee3..292fe499 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,2 +1,2 @@ [toolchain] -channel = "1.83.0" +channel = "stable" From 92db9524cdcc34d7ba5de3e743e7192ef3f9ca20 Mon Sep 17 00:00:00 2001 From: ndthanhdev Date: Fri, 20 Jun 2025 22:43:23 +0700 Subject: [PATCH 6/9] wip --- .github/workflows/release-dev.yml | 11 ++++++----- .github/workflows/release-prod.yml | 11 ++++++----- .github/workflows/release-stg.yml | 11 ++++++----- README.md | 4 ++++ etc/scripts/workflows/release.ts | 31 ++++++++++++++++++++++++++++++ 5 files changed, 53 insertions(+), 15 deletions(-) create mode 100755 etc/scripts/workflows/release.ts diff --git a/.github/workflows/release-dev.yml b/.github/workflows/release-dev.yml index 530dab46..1cbbe5bd 100644 --- a/.github/workflows/release-dev.yml +++ b/.github/workflows/release-dev.yml @@ -6,15 +6,16 @@ on: - main jobs: - call-function: - name: Call function + run-workflow: + name: Run Workflow runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Dagger - uses: dagger/dagger-for-github@v7 + uses: dagger/dagger-for-github@8.0.0 with: + version: 0.18.9 verb: functions workdir: ./etc/runner @@ -26,8 +27,8 @@ jobs: - name: Install dependencies run: yarn install - - name: Call script - working-directory: ./etc/scripts/pipelines + - name: Run workflow + working-directory: ./etc/scripts/workflows run: ./release.ts env: MODE: dev diff --git a/.github/workflows/release-prod.yml b/.github/workflows/release-prod.yml index 129c25ac..98e7c2a6 100644 --- a/.github/workflows/release-prod.yml +++ b/.github/workflows/release-prod.yml @@ -6,15 +6,16 @@ on: - v*.*.* jobs: - call-function: - name: Call function + run-workflow: + name: Run Workflow runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Dagger - uses: dagger/dagger-for-github@v7 + uses: dagger/dagger-for-github@8.0.0 with: + version: 0.18.9 verb: functions workdir: ./etc/runner @@ -26,8 +27,8 @@ jobs: - name: Install dependencies run: yarn install - - name: Call script - working-directory: ./etc/scripts/pipelines + - name: Run workflow + working-directory: ./etc/scripts/workflows run: ./release.ts env: MODE: prod diff --git a/.github/workflows/release-stg.yml b/.github/workflows/release-stg.yml index c3c23822..b77130a3 100644 --- a/.github/workflows/release-stg.yml +++ b/.github/workflows/release-stg.yml @@ -6,15 +6,16 @@ on: - release-* jobs: - call-function: - name: Call function + run-workflow: + name: Run Workflow runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Dagger - uses: dagger/dagger-for-github@v7 + uses: dagger/dagger-for-github@8.0.0 with: + version: 0.18.9 verb: functions workdir: ./etc/runner @@ -26,8 +27,8 @@ jobs: - name: Install dependencies run: yarn install - - name: Call script - working-directory: ./etc/scripts/pipelines + - name: Run workflow + working-directory: ./etc/scripts/workflows run: ./release.ts env: MODE: stg diff --git a/README.md b/README.md index 0f63cc47..5b450f0d 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ +[![Release Dev](https://github.com/ndthanhdev/ndthanhdev.github.io/actions/workflows/release-dev.yml/badge.svg)](https://github.com/ndthanhdev/ndthanhdev.github.io/actions/workflows/release-dev.yml) +[![Release Stg](https://github.com/ndthanhdev/ndthanhdev.github.io/actions/workflows/release-stg.yml/badge.svg)](https://github.com/ndthanhdev/ndthanhdev.github.io/actions/workflows/release-stg.yml) +[![Release Prod](https://github.com/ndthanhdev/ndthanhdev.github.io/actions/workflows/release-prod.yml/badge.svg)](https://github.com/ndthanhdev/ndthanhdev.github.io/actions/workflows/release-prod.yml) + Welcome to my personal website repository! This repository contains the source code and content for my personal website, where I share posts on tech and life and experiment with various technologies. - [Website URL](#website-url) diff --git a/etc/scripts/workflows/release.ts b/etc/scripts/workflows/release.ts new file mode 100755 index 00000000..918a4d98 --- /dev/null +++ b/etc/scripts/workflows/release.ts @@ -0,0 +1,31 @@ +#!/usr/bin/env -S yarn dlx tsx +import "zx/globals"; +import { cleanBuild } from "@n8v/scripts/utils/clean-build"; +import { workDirs } from "@n8v/scripts/utils/work-dir"; + +$.verbose = true; + +await cleanBuild(); + +cd(workDirs.etc.workflowRuntime.path); + +await $`${[ + "dagger", + "call", + "--dir", + workDirs.path, + "--mode", + $.env.MODE ?? "dev", + "--gh-token", + "env:GH_TOKEN", + "with-action", + "--action", + "build", + "with-action", + "publish", + "container", + "directory", + "export", + "--path", + workDirs.apps.app.public.path, +]}`; From a9e2b49d004b5165ad7fcd2deef14374e8355618 Mon Sep 17 00:00:00 2001 From: ndthanhdev Date: Fri, 20 Jun 2025 22:47:21 +0700 Subject: [PATCH 7/9] clean up --- .github/workflows/release-dev.yml | 2 +- .github/workflows/release-prod.yml | 2 +- .github/workflows/release-stg.yml | 2 +- .github/workflows/validate-pr.yml | 2 +- docs/guidelines.md | 2 +- etc/runner/dagger.json | 8 -- etc/runner/moon.yml | 2 - etc/runner/src/.gitattributes | 4 - etc/runner/src/.gitignore | 4 - etc/runner/src/con.go | 32 ------ etc/runner/src/go.mod | 50 --------- etc/runner/src/go.sum | 85 --------------- etc/runner/src/main.go | 101 ------------------ etc/scripts/pipelines/release.ts | 24 ----- etc/scripts/pipelines/validate-pr.ts | 14 --- etc/scripts/utils/work-dir.ts | 4 - .../skeleton/etc/workflow-runtime/src/main.go | 2 +- etc/workflow-runtime/src/main.go | 2 +- 18 files changed, 7 insertions(+), 335 deletions(-) delete mode 100644 etc/runner/dagger.json delete mode 100644 etc/runner/moon.yml delete mode 100644 etc/runner/src/.gitattributes delete mode 100644 etc/runner/src/.gitignore delete mode 100644 etc/runner/src/con.go delete mode 100644 etc/runner/src/go.mod delete mode 100644 etc/runner/src/go.sum delete mode 100644 etc/runner/src/main.go delete mode 100755 etc/scripts/pipelines/release.ts delete mode 100755 etc/scripts/pipelines/validate-pr.ts diff --git a/.github/workflows/release-dev.yml b/.github/workflows/release-dev.yml index 1cbbe5bd..75d008f9 100644 --- a/.github/workflows/release-dev.yml +++ b/.github/workflows/release-dev.yml @@ -17,7 +17,7 @@ jobs: with: version: 0.18.9 verb: functions - workdir: ./etc/runner + workdir: ./etc/workflow-runtime - name: Setup Node.js uses: actions/setup-node@v4 diff --git a/.github/workflows/release-prod.yml b/.github/workflows/release-prod.yml index 98e7c2a6..05b869ef 100644 --- a/.github/workflows/release-prod.yml +++ b/.github/workflows/release-prod.yml @@ -17,7 +17,7 @@ jobs: with: version: 0.18.9 verb: functions - workdir: ./etc/runner + workdir: ./etc/workflow-runtime - name: Setup Node.js uses: actions/setup-node@v4 diff --git a/.github/workflows/release-stg.yml b/.github/workflows/release-stg.yml index b77130a3..dfeb38a4 100644 --- a/.github/workflows/release-stg.yml +++ b/.github/workflows/release-stg.yml @@ -17,7 +17,7 @@ jobs: with: version: 0.18.9 verb: functions - workdir: ./etc/runner + workdir: ./etc/workflow-runtime - name: Setup Node.js uses: actions/setup-node@v4 diff --git a/.github/workflows/validate-pr.yml b/.github/workflows/validate-pr.yml index e018265f..b49abe51 100644 --- a/.github/workflows/validate-pr.yml +++ b/.github/workflows/validate-pr.yml @@ -17,7 +17,7 @@ jobs: with: version: 0.18.9 verb: functions - workdir: ./etc/runner + workdir: ./etc/workflow-runtime - name: Setup Node.js uses: actions/setup-node@v4 diff --git a/docs/guidelines.md b/docs/guidelines.md index 1626420b..22f30b13 100644 --- a/docs/guidelines.md +++ b/docs/guidelines.md @@ -4,7 +4,7 @@ - `app/`: My personal website. - `packages/`: Contains all the `packages` that are used in the `apps` or `packages`. - `etc/`: Contains everything else grouped by `type`. - - `runner/`: Contains `functions` that run an `pipeline` under `etc/scripts/pipelines/` inside `dagger` container. + - `workflow-runtime/`: Provide runtime and utils to run `etc/scripts/workflows/`. - `scripts/` - `utils/`: Contains utility modules for reuse in other scripts. - `actions/`: Contains scripts that perform small tasks should be able to run independently. Requires `tsx` to be installed diff --git a/etc/runner/dagger.json b/etc/runner/dagger.json deleted file mode 100644 index 5a7ac72a..00000000 --- a/etc/runner/dagger.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "runner", - "engineVersion": "v0.18.9", - "sdk": { - "source": "go" - }, - "source": "src" -} diff --git a/etc/runner/moon.yml b/etc/runner/moon.yml deleted file mode 100644 index fa7e3bb1..00000000 --- a/etc/runner/moon.yml +++ /dev/null @@ -1,2 +0,0 @@ -# yaml-language-server: $schema: 'https://moonrepo.dev/schemas/project.json' -type: tool diff --git a/etc/runner/src/.gitattributes b/etc/runner/src/.gitattributes deleted file mode 100644 index 3a454933..00000000 --- a/etc/runner/src/.gitattributes +++ /dev/null @@ -1,4 +0,0 @@ -/dagger.gen.go linguist-generated -/internal/dagger/** linguist-generated -/internal/querybuilder/** linguist-generated -/internal/telemetry/** linguist-generated diff --git a/etc/runner/src/.gitignore b/etc/runner/src/.gitignore deleted file mode 100644 index 7ebabcc1..00000000 --- a/etc/runner/src/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/dagger.gen.go -/internal/dagger -/internal/querybuilder -/internal/telemetry diff --git a/etc/runner/src/con.go b/etc/runner/src/con.go deleted file mode 100644 index cb6b81aa..00000000 --- a/etc/runner/src/con.go +++ /dev/null @@ -1,32 +0,0 @@ -package main - -import ( - "context" - "dagger/runner/internal/dagger" - "fmt" -) - -type Con struct { - *dagger.Container -} - -func (c *Con) SetEnvs(ctx context.Context, m *Runner) *Con { - c.Container = c.Container. - WithEnvVariable("MODE", m.Mode) - - if m.GhToken != nil { - tokenString, _ := m.GhToken.Plaintext(ctx) - - c.Container = c. - WithEnvVariable("GH_TOKEN", tokenString) - } - - return c -} - -func (c *Con) WithAction(action string) *Con { - c.Container = c. - Container. - WithExec([]string{"bash", "-l", "-c", fmt.Sprintf("./etc/scripts/actions/%s.ts", action)}) - return c -} diff --git a/etc/runner/src/go.mod b/etc/runner/src/go.mod deleted file mode 100644 index 01f91aef..00000000 --- a/etc/runner/src/go.mod +++ /dev/null @@ -1,50 +0,0 @@ -module dagger/runner - -go 1.23.2 - -require ( - github.com/99designs/gqlgen v0.17.73 - github.com/Khan/genqlient v0.8.1 - github.com/vektah/gqlparser/v2 v2.5.27 - go.opentelemetry.io/otel v1.34.0 - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0 - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0 - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0 - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0 - go.opentelemetry.io/otel/log v0.8.0 - go.opentelemetry.io/otel/metric v1.34.0 - go.opentelemetry.io/otel/sdk v1.34.0 - go.opentelemetry.io/otel/sdk/log v0.8.0 - go.opentelemetry.io/otel/sdk/metric v1.34.0 - go.opentelemetry.io/otel/trace v1.34.0 - go.opentelemetry.io/proto/otlp v1.3.1 - golang.org/x/sync v0.14.0 - google.golang.org/grpc v1.72.1 -) - -require ( - github.com/cenkalti/backoff/v4 v4.3.0 // indirect - github.com/go-logr/logr v1.4.2 // indirect - github.com/go-logr/stdr v1.2.2 // indirect - github.com/google/uuid v1.6.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 // indirect - github.com/sosodev/duration v1.3.1 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 // indirect - golang.org/x/net v0.40.0 // indirect - golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.25.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a // indirect - google.golang.org/protobuf v1.36.6 // indirect -) - -replace go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc => go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0 - -replace go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp => go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0 - -replace go.opentelemetry.io/otel/log => go.opentelemetry.io/otel/log v0.8.0 - -replace go.opentelemetry.io/otel/sdk/log => go.opentelemetry.io/otel/sdk/log v0.8.0 diff --git a/etc/runner/src/go.sum b/etc/runner/src/go.sum deleted file mode 100644 index 73a28981..00000000 --- a/etc/runner/src/go.sum +++ /dev/null @@ -1,85 +0,0 @@ -github.com/99designs/gqlgen v0.17.73 h1:A3Ki+rHWqKbAOlg5fxiZBnz6OjW3nwupDHEG15gEsrg= -github.com/99designs/gqlgen v0.17.73/go.mod h1:2RyGWjy2k7W9jxrs8MOQthXGkD3L3oGr0jXW3Pu8lGg= -github.com/Khan/genqlient v0.8.1 h1:wtOCc8N9rNynRLXN3k3CnfzheCUNKBcvXmVv5zt6WCs= -github.com/Khan/genqlient v0.8.1/go.mod h1:R2G6DzjBvCbhjsEajfRjbWdVglSH/73kSivC9TLWVjU= -github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ= -github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= -github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= -github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= -github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 h1:ad0vkEBuk23VJzZR9nkLVG0YAoN9coASF1GusYX6AlU= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0/go.mod h1:igFoXX2ELCW06bol23DWPB5BEWfZISOzSP5K2sbLea0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= -github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= -github.com/sosodev/duration v1.3.1 h1:qtHBDMQ6lvMQsL15g4aopM4HEfOaYuhWBw3NPTtlqq4= -github.com/sosodev/duration v1.3.1/go.mod h1:RQIBBX0+fMLc/D9+Jb/fwvVmo0eZvDDEERAikUR6SDg= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/vektah/gqlparser/v2 v2.5.27 h1:RHPD3JOplpk5mP5JGX8RKZkt2/Vwj/PZv0HxTdwFp0s= -github.com/vektah/gqlparser/v2 v2.5.27/go.mod h1:D1/VCZtV3LPnQrcPBeR/q5jkSQIPti0uYCP/RI0gIeo= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= -go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0 h1:WzNab7hOOLzdDF/EoWCt4glhrbMPVMOO5JYTmpz36Ls= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0/go.mod h1:hKvJwTzJdp90Vh7p6q/9PAOd55dI6WA6sWj62a/JvSs= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0 h1:S+LdBGiQXtJdowoJoQPEtI52syEP/JYBUpjO49EQhV8= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0/go.mod h1:5KXybFvPGds3QinJWQT7pmXf+TN5YIa7CNYObWRkj50= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0 h1:j7ZSD+5yn+lo3sGV69nW04rRR0jhYnBwjuX3r0HvnK0= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0/go.mod h1:WXbYJTUaZXAbYd8lbgGuvih0yuCfOFC5RJoYnoLcGz8= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0 h1:t/Qur3vKSkUCcDVaSumWF2PKHt85pc7fRvFuoVT8qFU= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0/go.mod h1:Rl61tySSdcOJWoEgYZVtmnKdA0GeKrSqkHC1t+91CH8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 h1:IJFEoHiytixx8cMiVAO+GmHR6Frwu+u5Ur8njpFO6Ac= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0/go.mod h1:3rHrKNtLIoS0oZwkY2vxi+oJcwFRWdtUyRII+so45p8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0 h1:9kV11HXBHZAvuPUZxmMWrH8hZn/6UnHX4K0mu36vNsU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0/go.mod h1:JyA0FHXe22E1NeNiHmVp7kFHglnexDQ7uRWDiiJ1hKQ= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0 h1:cMyu9O88joYEaI47CnQkxO1XZdpoTF9fEnW2duIddhw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0/go.mod h1:6Am3rn7P9TVVeXYG+wtcGE7IE1tsQ+bP3AuWcKt/gOI= -go.opentelemetry.io/otel/log v0.8.0 h1:egZ8vV5atrUWUbnSsHn6vB8R21G2wrKqNiDt3iWertk= -go.opentelemetry.io/otel/log v0.8.0/go.mod h1:M9qvDdUTRCopJcGRKg57+JSQ9LgLBrwwfC32epk5NX8= -go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= -go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= -go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= -go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= -go.opentelemetry.io/otel/sdk/log v0.8.0 h1:zg7GUYXqxk1jnGF/dTdLPrK06xJdrXgqgFLnI4Crxvs= -go.opentelemetry.io/otel/sdk/log v0.8.0/go.mod h1:50iXr0UVwQrYS45KbruFrEt4LvAdCaWWgIrsN3ZQggo= -go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= -go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= -go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= -go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= -go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= -go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= -go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= -go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= -golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= -google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a h1:nwKuGPlUAt+aR+pcrkfFRrTU1BVrSmYyYMxYbUIVHr0= -google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a/go.mod h1:3kWAYMk1I75K4vykHtKt2ycnOgpA6974V7bREqbsenU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a h1:51aaUVRocpvUOSQKM6Q7VuoaktNIaMCLuhZB6DKksq4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a/go.mod h1:uRxBH1mhmO8PGhU89cMcHaXKZqO+OfakD8QQO0oYwlQ= -google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA= -google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/etc/runner/src/main.go b/etc/runner/src/main.go deleted file mode 100644 index 71f8f0e8..00000000 --- a/etc/runner/src/main.go +++ /dev/null @@ -1,101 +0,0 @@ -// A generated module for Runner functions -// -// This module has been generated via dagger init and serves as a reference to -// basic module structure as you get started with Dagger. -// -// Two functions have been pre-created. You can modify, delete, or add to them, -// as needed. They demonstrate usage of arguments and return types using simple -// echo and grep commands. The functions can be called from the dagger CLI or -// from one of the SDKs. -// -// The first line in this comment block is a short description line and the -// rest is a long description with more detail on the module's purpose or usage, -// if appropriate. All modules should have a short description. - -package main - -import ( - "context" - "dagger/runner/internal/dagger" -) - -type Runner struct { - Dir *dagger.Directory - Mode string - GhToken *dagger.Secret -} - -func New( - // +required - // +ignore=["node_modules/", ".moon/cache/", "app/public/", "etc/runner/"] - dir *dagger.Directory, - // +optional - // +default="dev" - mode string, - // +optional - ghToken *dagger.Secret, -) *Runner { - return &Runner{ - Dir: dir, - Mode: mode, - GhToken: ghToken, - } -} - -func (m *Runner) BuildBaseEnv(ctx context.Context) *dagger.Container { - return dag. - Container(). - From("debian:bookworm"). - // apt-get update && apt-get install -y curl git unzip gzip xz-utils - WithExec([]string{"apt-get", "update"}). - WithExec([]string{"apt-get", "install", "-y", "build-essential", "curl", "git", "unzip", "bash", "gzip", "xz-utils"}). - // curl -fsSL https://moonrepo.dev/install/proto.sh | bash -s 0.35.3 --yes - WithExec([]string{"bash", "-l", "-c", "curl -fsSL https://moonrepo.dev/install/proto.sh | bash -s 0.44.1 --yes"}). - WithWorkdir("/mnt"). - WithFile("/mnt/.prototools", m.Dir.File(".prototools")). - // proto use - WithExec([]string{"bash", "-l", "-c", "proto use"}). - // rm .prototools - WithoutFile("/mnt/.prototools") - // use docker scaffold to optimize build time -} - -func (m *Runner) BuildEnv(ctx context.Context) *Con { - source := dag.Directory().WithDirectory("/", m.Dir, dagger.DirectoryWithDirectoryOpts{ - Exclude: []string{"node_modules", ".cache", ".moon/cache"}, - }) - - con := m.BuildBaseEnv(ctx). - WithMountedDirectory("/mnt", source). - // // moon setup - WithExec([]string{"bash", "-l", "-c", "moon setup"}). - // yarn install --immutable - WithExec([]string{"bash", "-l", "-c", "yarn install --immutable"}) - - return (&Con{con}).SetEnvs(ctx, m) -} - -func (m *Runner) WithAction(ctx context.Context, command string) *dagger.Container { - return m. - BuildEnv(ctx). - WithAction(command). - Container -} - -func (m *Runner) Test(ctx context.Context) (string, error) { - return m. - WithAction(ctx, "test"). - Stdout(ctx) -} - -func (m *Runner) Build(ctx context.Context) *dagger.Directory { - return m. - WithAction(ctx, "build"). - Directory("/mnt/apps/app/public") -} - -func (m *Runner) Publish(ctx context.Context) (string, error) { - return m. - WithAction(ctx, "publish"). - Stdout(ctx) -} diff --git a/etc/scripts/pipelines/release.ts b/etc/scripts/pipelines/release.ts deleted file mode 100755 index 1d6225c1..00000000 --- a/etc/scripts/pipelines/release.ts +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env -S yarn dlx tsx -import "zx/globals"; -import { cleanBuild } from "@n8v/scripts/utils/clean-build"; -import { workDirs } from "@n8v/scripts/utils/work-dir"; - -$.verbose = true; - -await cleanBuild(); - -cd(workDirs.etc.runner.path); - -await $`dagger call \ ---dir ${workDirs.path} \ ---mode ${$.env.MODE ?? "dev"} \ -build \ -export --path ${workDirs.apps.app.public.path} \ -`; - -await $`dagger call \ ---dir ${workDirs.path} \ ---mode ${$.env.MODE ?? "dev"} \ ---gh-token env:GH_TOKEN \ -publish \ -`; diff --git a/etc/scripts/pipelines/validate-pr.ts b/etc/scripts/pipelines/validate-pr.ts deleted file mode 100755 index bc26a6c2..00000000 --- a/etc/scripts/pipelines/validate-pr.ts +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env -S yarn dlx tsx -import "zx/globals"; -import { cleanBuild } from "@n8v/scripts/utils/clean-build"; -import { workDirs } from "@n8v/scripts/utils/work-dir"; - -$.verbose = true; - -await cleanBuild(); - -cd(workDirs.etc.runner.path); - -await $`dagger call --dir ${workDirs.path} test`; - -await $`dagger call --dir ${workDirs.path} build`; diff --git a/etc/scripts/utils/work-dir.ts b/etc/scripts/utils/work-dir.ts index cb2957e4..82cd056a 100755 --- a/etc/scripts/utils/work-dir.ts +++ b/etc/scripts/utils/work-dir.ts @@ -9,7 +9,6 @@ const apps = path.resolve(root, "apps"); const etc = path.resolve(root, "etc"); const app = path.resolve(apps, "app"); const counter = path.resolve(apps, "counter"); -const runner = path.resolve(etc, "runner"); const workflowRuntime = path.resolve(etc, "workflow-runtime"); const scripts = path.resolve(etc, "scripts"); @@ -39,9 +38,6 @@ export const workDirs = { etc: { path: etc, - runner: { - path: runner, - }, scripts: { path: scripts, }, diff --git a/etc/templates/skeleton/etc/workflow-runtime/src/main.go b/etc/templates/skeleton/etc/workflow-runtime/src/main.go index 164befeb..a2ed861c 100644 --- a/etc/templates/skeleton/etc/workflow-runtime/src/main.go +++ b/etc/templates/skeleton/etc/workflow-runtime/src/main.go @@ -1,4 +1,4 @@ -// A generated module for Runner functions +// A generated module for WorkflowRuntime functions // // This module has been generated via dagger init and serves as a reference to // basic module structure as you get started with Dagger. diff --git a/etc/workflow-runtime/src/main.go b/etc/workflow-runtime/src/main.go index 164befeb..a2ed861c 100644 --- a/etc/workflow-runtime/src/main.go +++ b/etc/workflow-runtime/src/main.go @@ -1,4 +1,4 @@ -// A generated module for Runner functions +// A generated module for WorkflowRuntime functions // // This module has been generated via dagger init and serves as a reference to // basic module structure as you get started with Dagger. From 9169209ab9f506dd48d01657bae356027a98e71c Mon Sep 17 00:00:00 2001 From: ndthanhdev Date: Fri, 20 Jun 2025 22:50:28 +0700 Subject: [PATCH 8/9] wip --- etc/templates/skeleton/template.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/etc/templates/skeleton/template.yml b/etc/templates/skeleton/template.yml index 22baa47f..ccd55385 100644 --- a/etc/templates/skeleton/template.yml +++ b/etc/templates/skeleton/template.yml @@ -1,5 +1,5 @@ -# https://moonrepo.dev/docs/config/template -$schema: ../../../.moon/cache/schemas/template.json +$schema: "https://moonrepo.dev/schemas/template.json" + id: skeleton title: Monorepo Skeleton Template description: | From 67e2115fef63553468a58dadd79f13b9cefbcc4f Mon Sep 17 00:00:00 2001 From: ndthanhdev Date: Fri, 20 Jun 2025 22:55:50 +0700 Subject: [PATCH 9/9] wip --- .../posts/personal-website/dagger-io/dagger-io.mdx | 4 ++-- etc/templates/skeleton/etc/workflow-runtime/src/main.go | 8 ++++---- etc/workflow-runtime/src/main.go | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/app/content/posts/personal-website/dagger-io/dagger-io.mdx b/apps/app/content/posts/personal-website/dagger-io/dagger-io.mdx index 00c6ec4f..c5ee782d 100644 --- a/apps/app/content/posts/personal-website/dagger-io/dagger-io.mdx +++ b/apps/app/content/posts/personal-website/dagger-io/dagger-io.mdx @@ -70,8 +70,8 @@ func (m *NdthanhdevGithubIo) Init(ctx context.Context, dir *Directory) *Containe Container(). From("node:lts"). WithExec([]string{"yarn", "global", "add", "tsx"}). - WithMountedDirectory("/mnt", source). - WithWorkdir("/mnt"). + WithMountedDirectory("/workspace", source). + WithWorkdir("/workspace"). WithExec([]string{"yarn", "install", "--immutable"}) } ``` diff --git a/etc/templates/skeleton/etc/workflow-runtime/src/main.go b/etc/templates/skeleton/etc/workflow-runtime/src/main.go index a2ed861c..da067398 100644 --- a/etc/templates/skeleton/etc/workflow-runtime/src/main.go +++ b/etc/templates/skeleton/etc/workflow-runtime/src/main.go @@ -60,13 +60,13 @@ func (m *WorkflowRuntime) BuildEnv(ctx context.Context) *WorkflowRuntime { m.Con = m.BuildBaseEnv(ctx). Con. - WithWorkdir("/mnt"). - WithFile("/mnt/.prototools", m.Dir.File(".prototools")). + WithWorkdir("/workspace"). + WithFile("/workspace/.prototools", m.Dir.File(".prototools")). // proto use WithExec([]string{"proto", "use"}). // rm .prototools - WithoutFile("/mnt/.prototools"). - WithMountedDirectory("/mnt", source). + WithoutFile("/workspace/.prototools"). + WithMountedDirectory("/workspace", source). // moon setup WithExec([]string{"moon", "setup"}). // yarn install --immutable diff --git a/etc/workflow-runtime/src/main.go b/etc/workflow-runtime/src/main.go index a2ed861c..da067398 100644 --- a/etc/workflow-runtime/src/main.go +++ b/etc/workflow-runtime/src/main.go @@ -60,13 +60,13 @@ func (m *WorkflowRuntime) BuildEnv(ctx context.Context) *WorkflowRuntime { m.Con = m.BuildBaseEnv(ctx). Con. - WithWorkdir("/mnt"). - WithFile("/mnt/.prototools", m.Dir.File(".prototools")). + WithWorkdir("/workspace"). + WithFile("/workspace/.prototools", m.Dir.File(".prototools")). // proto use WithExec([]string{"proto", "use"}). // rm .prototools - WithoutFile("/mnt/.prototools"). - WithMountedDirectory("/mnt", source). + WithoutFile("/workspace/.prototools"). + WithMountedDirectory("/workspace", source). // moon setup WithExec([]string{"moon", "setup"}). // yarn install --immutable