ó
    D1EjÃ0  ã            	      ó  • S SK Jr  S SKJr  S SKrS SKrS SKrS SKrS SKJr  S SK	J
r
  S SKJr  S SKJr  S SKJr  \" S	5      rSS
 jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jr\\\\\\\\S.rSS jrg)é    )Úannotations)ÚdatetimeN)ÚAny)Úload_agent_token)Ú
get_logger)ÚConfig)Ú	ApiClientzactions.pipelinec                óD   • [         R                  " U 5      nU(       a  U$ U $ )N)ÚshutilÚwhich)ÚbinaryÚpaths     Ú:D:\Programs\laragon\www\wolf\agent\src\actions\pipeline.pyÚresolve_binaryr      s   € Ü�<Š<˜Ó€DÞˆ4Ð#˜VÐ#ó    c           	     óˆ  • [        S5      nU R                  S0 5      R                  S5      =(       d    U=(       d    SnUR                  S5      n [        R                  " USU/USSSS	S
9nSU SUR                   SUR
                   SUR                   S3	nUR                  S:w  a  SUS.$   [        R                  " USSU/USSSS	S
9n	SU SU	R                   SU	R
                   SU	R                   S3	n
US-   U
-   nU	R                  S:w  a  SUS.$ SUS.$ ! [        R                   a;  nSSUR
                  =(       d    S SUR                  =(       d    S 3S.s S nA$ S nAff = f! [        R                   a>  nSUSUR
                  =(       d    S SUR                  =(       d    S 3-   S.s S nA$ S nAff = f)NÚgitÚconfigÚbranchÚmainÚ	repo_pathÚcheckoutTFé<   ©ÚcwdÚcapture_outputÚtextÚshellÚtimeoutzgit checkout z:
code: z	
stdout:
ú	
stderr:
Ú
r   Úfailed©ÚstatusÚoutputz0git checkout timed out after 60 seconds
stdout:
Ú ÚpullÚoriginzgit pull origin Ú	succeededz-
git pull timed out after 60 seconds
stdout:
)r   ÚgetÚ
subprocessÚrunÚ
returncodeÚstdoutÚstderrÚTimeoutExpired)ÚstepÚcontextr   Úgit_binÚtarget_branchr   Úres_checkoutÚcheckout_outÚexcÚres_pullÚpull_outÚcombined_outputs               r   Ú_step_git_pullr;      sL  € Ü˜UÓ#€GØ—H‘H˜X rÓ*×.Ñ.¨xÓ8×L¸F×LÀf€MØ
�+‰+�kÓ
"€Cð
Ü!—~’~Ø�j -Ð0ØØØØØñ
ˆð ' } o°Y¸|×?VÑ?VÐ>WÐWbÐco×cvÑcvÐbwð  xCð  DP÷  DWñ  DWð  CXð  XZð  [ˆØ×"Ñ" aÓ'Ø&°,Ñ?Ð?ð (ð
Ü—>’>Ø�f˜h¨Ð6ØØØØØñ
ˆð & m _°I¸h×>QÑ>QÐ=RÐR]Ð^f×^mÑ^mÐ]nÐnyð  {C÷  {Jñ  {Jð  zKð  KMð  NˆØ&¨Ñ-°Ñ8ˆØ×Ñ !Ó#Ø&°/ÑBÐBØ%°ÑAÐAøô) ×$Ñ$ó 
àØJÈ3Ï:É:×K[ÐY[ÐJ\Ð\gÐhk×hrÑhr×hxÐvxÐgyÐzñ
õ 	
ûð
ûô* ×$Ñ$ó 
àØ"Ð'WÐX[×XbÑXb×XhÐfhÐWiÐitÐux×uÑu÷  vFð  DFð  uGð  &Hñ  Hñ
õ 	
ûð
úsD   ÁAD Â1A&E/ ÄE/ ÄE,Ä10E'Å!E,Å'E,Å/GÆ3F<Æ6GÆ<Gc           	     ó   • U R                  S0 5      R                  S5      =(       d    U R                  S5      nU(       d  SSS.$ [        U5      S:”  a  SSS.$ [        R                  " U5      nU(       d  SSS.$ [	        US	   5      US	'   UR                  S
5      n [
        R                  " UUSSSSS9nSUR                   SUR                   3nUR                  S	:X  a  SUS.$ SSUR                   SU 3S.$ ! [
        R                   a;  nSSUR                  =(       d    S SUR                  =(       d    S 3S.s S nA$ S nAff = f)Nr   Úcommandr"   zNo command specifiedr#   iè  z1Command exceeds maximum length of 1000 characterszEmpty command after parsingr   r   TFé,  r   ústdout:
r    r)   zCommand failed with exit code r!   z,Command timed out after 300 seconds
stdout:
r&   )r*   ÚlenÚshlexÚsplitr   r+   r,   r.   r/   r-   r0   )r1   r2   Úcmd_strÚargsr   Úresr%   r7   s           r   Ú_step_run_commandrF   E   sU  € Ø�h‰h�x Ó$×(Ñ(¨Ó3×J°t·x±xÀ	Ó7J€GÞØ"Ð.DÑEÐEÜ
ˆ7ƒ|�dÓØ"Ð.aÑbÐbä�;Š;�wÓ€DÞØ"Ð.KÑLÐLä˜T !™WÓ%€Dˆ�GØ
�+‰+�kÓ
"€Cð
Ü�nŠnØØØØØØñ
ˆð ˜SŸZ™Z˜L¨°C·J±J°<Ð@ˆØ�>‰>˜QÓØ)°VÑ<Ð<Ø"Ð0NÈsÏ~É~ÐN^Ð^`ÐagÐ`hÐ.iÑjÐjøÜ×$Ñ$ó 
àØFÀsÇzÁz×GWÐUWÐFXÐXcÐdg×dnÑdn×dtÐrtÐcuÐvñ
õ 	
ûð
ús%   ÂA	C> Ã)C> Ã>EÄ0EÅEÅEc           	     ó&  • [        S5      nU R                  S0 5      R                  S5      =(       d    SnU/[        R                  " U5      -   nUR                  S5      n [        R
                  " UUSSSSS	9nS
UR                   SUR                   3nUR                  S:X  a  SUS.$ SSUR                   SU 3S.$ ! [        R                   a;  nSSUR                  =(       d    S SUR                  =(       d    S 3S.s S nA$ S nAff = f)NÚnpmr   ÚactionÚinstallr   TFr>   r   r?   r    r   r)   r#   r"   znpm failed with exit code r!   z(npm timed out after 300 seconds
stdout:
r&   ©
r   r*   rA   rB   r+   r,   r.   r/   r-   r0   )	r1   r2   Únpm_binrI   rD   r   rE   r%   r7   s	            r   Ú	_step_npmrM   f   s  € Ü˜UÓ#€GØ�X‰X�h Ó#×'Ñ'¨Ó1×>°Y€FØˆ9”u—{’{ 6Ó*Ñ*€DØ
�+‰+�kÓ
"€Cð
Ü�nŠnØØØØØØñ
ˆð ˜SŸZ™Z˜L¨°C·J±J°<Ð@ˆØ�>‰>˜QÓØ)°VÑ<Ð<Ø"Ð0JÈ3Ï>É>ÐJZÐZ\Ð]cÐ\dÐ.eÑfÐføÜ×$Ñ$ó 
àØBÀ3Ç:Á:×CSÐQSÐBTÐT_Ð`c×`jÑ`j×`pÐnpÐ_qÐrñ
õ 	
ûð
úó%   Á"A	C Â,C ÃDÃ0DÄDÄDc           	     ó&  • [        S5      nU R                  S0 5      R                  S5      =(       d    SnU/[        R                  " U5      -   nUR                  S5      n [        R
                  " UUSSSSS	9nS
UR                   SUR                   3nUR                  S:X  a  SUS.$ SSUR                   SU 3S.$ ! [        R                   a;  nSSUR                  =(       d    S SUR                  =(       d    S 3S.s S nA$ S nAff = f)NÚcomposerr   rI   rJ   r   TFr>   r   r?   r    r   r)   r#   r"   zcomposer failed with exit code r!   z-composer timed out after 300 seconds
stdout:
r&   rK   )	r1   r2   Úcomposer_binrI   rD   r   rE   r%   r7   s	            r   Ú_step_composerrR      s  € Ü! *Ó-€LØ�X‰X�h Ó#×'Ñ'¨Ó1×>°Y€FØˆ>œEŸKšK¨Ó/Ñ/€DØ
�+‰+�kÓ
"€Cð
Ü�nŠnØØØØØØñ
ˆð ˜SŸZ™Z˜L¨°C·J±J°<Ð@ˆØ�>‰>˜QÓØ)°VÑ<Ð<Ø"Ð0OÐPS×P^ÑP^ÐO_Ð_aÐbhÐaiÐ.jÑkÐkøÜ×$Ñ$ó 
àØGÈÏ
É
×HXÐVXÐGYÐYdÐeh×eoÑeo×euÐsuÐdvÐwñ
õ 	
ûð
úrN   c           	     ó(  • [        S5      nU R                  S0 5      R                  S5      =(       d    SnUS/[        R                  " U5      -   nUR                  S5      n [        R
                  " UUSSSS	S
9nSUR                   SUR                   3nUR                  S:X  a  SUS.$ SSUR                   SU 3S.$ ! [        R                   a;  nSSUR                  =(       d    S SUR                  =(       d    S 3S.s S nA$ S nAff = f)NÚphpr   r=   zmigrate --forceÚartisanr   TFéx   r   r?   r    r   r)   r#   r"   z"php artisan failed with exit code r!   z0php artisan timed out after 120 seconds
stdout:
r&   rK   )	r1   r2   Úphp_binrC   rD   r   rE   r%   r7   s	            r   Ú_step_artisanrX   ˜   s  € Ü˜UÓ#€GØ�h‰h�x Ó$×(Ñ(¨Ó3×HÐ7H€GØ�YÐ¤%§+¢+¨gÓ"6Ñ6€DØ
�+‰+�kÓ
"€Cð
Ü�nŠnØØØØØØñ
ˆð ˜SŸZ™Z˜L¨°C·J±J°<Ð@ˆØ�>‰>˜QÓØ)°VÑ<Ð<Ø"Ð0RÐSV×SaÑSaÐRbÐbdÐekÐdlÐ.mÑnÐnøÜ×$Ñ$ó 
àØJÈ3Ï:É:×K[ÐY[ÐJ\Ð\gÐhk×hrÑhr×hxÐvxÐgyÐzñ
õ 	
ûð
ús%   Á#A	C Â-C ÃDÃ0DÄDÄDc           	     ó¨  • [        S5      nU R                  S0 5      R                  S5      =(       d    SnU R                  S0 5      R                  S5      =(       d    SnU/[        R                  " U5      -   [        R                  " U5      -   nUR                  S5      n [        R
                  " UUSSS	S
S9nSUR                   SUR                   3nUR                  S:X  a  SUS.$ SSUR                   SU 3S.$ ! [        R                   a;  n	SSU	R                  =(       d    S SU	R                  =(       d    S 3S.s S n	A	$ S n	A	ff = f)NÚpm2r   rI   ÚrestartÚappÚallr   TFr   r   r?   r    r   r)   r#   r"   zpm2 failed with exit code r!   z'pm2 timed out after 60 seconds
stdout:
r&   rK   )
r1   r2   Úpm2_binrI   r\   rD   r   rE   r%   r7   s
             r   Ú	_step_pm2r_   ±   sC  € Ü˜UÓ#€GØ�X‰X�h Ó#×'Ñ'¨Ó1×>°Y€FØ
�(‰(�8˜RÓ
 ×
$Ñ
$ UÓ
+×
4¨u€CØˆ9”u—{’{ 6Ó*Ñ*¬U¯[ª[¸Ó-=Ñ=€DØ
�+‰+�kÓ
"€Cð
Ü�nŠnØØØØØØñ
ˆð ˜SŸZ™Z˜L¨°C·J±J°<Ð@ˆØ�>‰>˜QÓØ)°VÑ<Ð<Ø"Ð0JÈ3Ï>É>ÐJZÐZ\Ð]cÐ\dÐ.eÑfÐføÜ×$Ñ$ó 
àØAÀ#Ç*Á*×BRÐPRÐASÐS^Ð_b×_iÑ_i×_oÐmoÐ^pÐqñ
õ 	
ûð
ús%   Â#A	D Ã-D ÄEÄ0EÅEÅEc                óØ  • [        S5      nU R                  S0 5      R                  S5      =(       d    SnUSU/n [        R                  " USSSSS	9nS
UR                   SUR
                   3nUR                  S:X  a  SUS.$ SSUR                   SU 3S.$ ! [        R                   a;  nSSUR                  =(       d    S SUR
                  =(       d    S 3S.s S nA$ S nAff = f)NÚcurlr   Úurlzhttp://localhostz-sfTFé   )r   r   r   r   r?   r    r   r)   r#   r"   z#Health check failed with exit code r!   z0Health check timed out after 30 seconds
stdout:
r&   )r   r*   r+   r,   r.   r/   r-   r0   )r1   r2   Úcurl_binrb   rD   rE   r%   r7   s           r   Ú_step_health_checkre   Ë   sÿ   € Ü˜fÓ%€HØ
�(‰(�8˜RÓ
 ×
$Ñ
$ UÓ
+×
AÐ/A€CØ�e˜SÐ!€Dð
Ü�nŠnØØØØØñ
ˆð ˜SŸZ™Z˜L¨°C·J±J°<Ð@ˆØ�>‰>˜QÓØ)°VÑ<Ð<Ø"Ð0SÐTW×TbÑTbÐScÐceÐflÐemÐ.nÑoÐoøÜ×$Ñ$ó 
àØJÈ3Ï:É:×K[ÐY[ÐJ\Ð\gÐhk×hrÑhr×hxÐvxÐgyÐzñ
õ 	
ûð
ús$   ¼AB ÂB ÂC)Â.0C$ÃC)Ã$C)c                ó’   • U R                  S0 5      R                  S5      =(       d    Sn[        R                  SU5        SSU 3S.$ )Nr   ÚmessagezNotification step executedzPipeline Notification: %sr)   zNotification: r#   )r*   ÚlogÚinfo)r1   r2   Úmsgs      r   Ú_step_notificationrk   â   sD   € Ø
�(‰(�8˜RÓ
 ×
$Ñ
$ YÓ
/×
OÐ3O€CÜ‡H�HÐ(¨#Ô.Ø!¨~¸c¸UÐ-CÑDÐDr   )úgit-pullzrun-commandrH   rP   rU   rZ   zhealth-checkÚnotificationc           
     óô  • U R                  S5      nU R                  S5      nU R                  S5      =(       d    / nU R                  S5      =(       d    Sn[        U5      n0 nSU ;   a  U S   US'   XhS'   / n	[        U5       HP  u  p«U	R                  U
UR                  S5      =(       d    UR                  S5      =(       d    S	U
 3S
S S S S.5        MR      UR	                  USX—5        Sn[        U5       GHx  u  p«UR                  S5      nUR                  S5      =(       d    0 n[        U[        5      (       a  UR                  SS5      nO[        U5      nSnUS:X  a
  U(       d  SnOUS:X  a	  U(       a  SnU(       aÇ  SXš   S'   [        R                  " 5       R                  5       S-   Xš   S'    UR	                  USX—5        U[        ;  a	  SSU 3S.nO#[        U   n US:X  a
  U" X¸U5      nO	U" X¸5      n US   Xš   S'   US   Xš   S'   [        R                  " 5       R                  5       S-   Xš   S'   US   S:X  a  SnOSXš   S'   SU 3Xš   S'    UR	                  USX—5        GM{     U(       a  S!OSn UR	                  UUX—5        UUS#.$ ! [
         a!  n[        R                  SU5         S nAGNÔS nAff = f! [
         a!  n[        R                  SU5         S nAGN#S nAff = f! [
         a  nSS[        U5       3S.n S nAGNS nAff = f! [
         a"  n[        R                  S U5         S nAGMM  S nAff = f! [
         a   n[        R                  S"U5         S nANÞS nAff = f)$NÚpipeline_idÚrun_idÚstepsr   r   r   ÚlabelÚtypezStep Úpending)Ú
step_indexÚ	step_namer$   r%   Ú
started_atÚfinished_atÚrunningz7failed to initialize pipeline run status on backend: %sTÚ	conditionz
on-successFz
on-failurer$   ÚZrw   z4failed to update pipeline run step running state: %sr"   zUnsupported step type: r#   rl   z"Step execution handler exception: r%   rx   ÚskippedzSkipped due to condition z5failed to update pipeline run step finished state: %sr)   z.failed to update pipeline run final status: %s)Úsuccessr$   )r*   r   Ú	enumerateÚappendÚupdate_pipeline_runÚ	Exceptionrh   ÚwarningÚ
isinstanceÚdictÚstrr   ÚutcnowÚ	isoformatÚSTEP_HANDLERS)Úpayloadr   Ú
api_clientro   rp   rq   r   Útokenr2   ÚlogsÚidxr1   ÚeÚcurrent_run_successÚ	step_typerz   Ú	cond_typeÚ
should_runrE   ÚhandlerÚfinal_statuss                        r   Úhandle_pipeline_runr•   ô   sŒ  € Ø—+‘+˜mÓ,€KØ�[‰[˜Ó"€FØ�K‰K˜Ó ×& B€EØ�[‰[˜Ó"×, f€Fä˜VÓ$€Eð €GØ�gÓØ& {Ñ3ˆ�ÑØˆHÑð €DÜ˜uÖ%‰	ˆØ�‰ØØŸ™ 'Ó*×O¨d¯h©h°vÓ.>×OÀEÈ#ÈÀ-ØØØØñ
ö 	ñ &ðRØ×&Ñ& v¨y¸$ÔFð Ðô ˜u×%‰	ˆØ—H‘H˜VÓ$ˆ	ð —H‘H˜[Ó)×/¨Rˆ	Ü�i¤×&Ñ&Ø!Ÿ™ f¨lÓ;‰Iä˜I›ˆIð ˆ
Ø˜Ó$Ö-@Ø‰JØ˜,Ó&Ö+>ØˆJæà"+ˆD‰I�hÑÜ&.§o¢oÓ&7×&AÑ&AÓ&CÀcÑ&IˆD‰I�lÑ#ðWØ×.Ñ.¨v°yÀ$ÔNð
 ¤Ó-Ø!)Ð7NÈyÈkÐ5ZÑ[‘ä'¨	Ñ2�ðhØ  JÓ.Ù% d°VÓ<™á% dÓ4™ð
 #& h¡-ˆD‰I�hÑØ"% h¡-ˆD‰I�hÑÜ'/§¢Ó'8×'BÑ'BÓ'DÀsÑ'JˆD‰I�mÑ$à�8‰} Ó(Ø&+Ð#øð #,ˆD‰I�hÑØ$=¸i¸[Ð"IˆD‰I�hÑð	TØ×*Ñ*¨6°9¸d×Jñk &öt #6‘;¸8€LðIØ×&Ñ& v¨|¸TÔIð +°lÑCÐCøôM ó RÜ�‰ÐMÈq×QÒQûðRûô: ó WÜ—‘ÐRÐTU×VÒVûðWûô !ó hØ%-Ð;]Ô^aÐbcÓ^dÐ]eÐ9fÑg–Cûðhûô$ ó 	TÜ�K‰KÐOÐQR×SÓSûð	Tûô ó IÜ�‰ÐDÀa×HÑHûðIús~   ÃJ Æ7KÇ'K5Ç7K5ÉLÊM Ê
KÊ#J?Ê?KË
K2ËK-Ë-K2Ë5
LË?LÌLÌ
M
Ì(MÍM
Í
M7ÍM2Í2M7)r   r…   Úreturnr…   )r1   r„   r2   r„   r   r…   r–   údict[str, str])r1   r„   r2   r„   r–   r—   )r‰   r„   r   r   rŠ   r	   r–   r„   )Ú
__future__r   r   Úosr   rA   r+   Útypingr   Úidentityr   Úloggerr   r   r   rŠ   r	   rh   r   r;   rF   rM   rR   rX   r_   re   rk   rˆ   r•   © r   r   Ú<module>rž      s‰   ðÝ "å Û 	Û Û Û Ý å %Ý Ý Ý  áÐ#Ó$€ô$ô
+
ô\
ôB
ô2
ô2
ô2
ô4
ô.Eð Ø$ØØØØØ&Ø&ñ	€õcDr   