/* Ċ Ġ* ĠTencent Ġis Ġplease d Ġto Ġsupport Ġthe Ġopen Ġsource Ġcommunity Ġby Ġmaking ĠB K - CI Ġ èĵĿ é² ¸ æĮģ ç»Ń éĽĨ æĪĲ å¹³åı° Ġavailable . Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠTH L ĠA 2 9 ĠLimited , Ġa ĠTencent Ġcompany . Ġ ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠB K - CI Ġ èĵĿ é² ¸ æĮģ ç»Ń éĽĨ æĪĲ å¹³åı° Ġis Ġlicensed Ġunder Ġthe ĠMIT Ġlicense . Ċ Ġ* Ċ Ġ* ĠA Ġcopy Ġof Ġthe ĠMIT ĠLicense Ġis Ġincluded Ġin Ġthis Ġfile . Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠTerms Ġof Ġthe ĠMIT ĠLicense : Ċ Ġ* Ġ------------------------------------------------ --- Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ċ Ġ* Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ġto Ġuse , Ġcopy , Ċ Ġ* Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe Ċ Ġ* ĠSoftware Ġis Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT Ċ Ġ* ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN Ċ Ġ* ĠNO ĠEVENT ĠSHALL ĠTHE ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER ĠLIABILITY , Ċ Ġ* ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE Ċ Ġ* ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . tencent . devops . worker . common . service Ċ Ċ import Ġcom . tencent . devops . common . api . exception . Remote ServiceException Ċ import Ġcom . tencent . devops . process . pojo . Build Task Ċ import Ġcom . tencent . devops . process . pojo . Build Task Result Ċ import Ġcom . tencent . devops . process . pojo . Build Variables Ċ import Ġcom . tencent . devops . worker . common . api . Api Factory Ċ import Ġcom . tencent . devops . worker . common . api . process . Build SDK Api Ċ import Ġcom . tencent . devops . worker . common . logger . Logger Service Ċ import Ġorg . slf 4 j . LoggerFactory Ċ Ċ object ĠProcess Service Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( Process Service :: class . java ) ĊĊĠĠĠ Ġprivate Ġval Ġbuild Api Ġ= ĠApi Factory . create ( Build SDK Api :: class ) ĊĊĠĠĠ Ġfun Ġset Started (): ĠBuild Variables Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġbuild Api . set Started () ĊĠĠĠĠĠĠĠ Ġif Ġ( result . isNot Ok ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRemote ServiceException (" Report Ġbuilder Ġstartup Ġstatus Ġfailed ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult . data Ġ?: Ġthrow ĠRemote ServiceException (" Report Ġbuilder Ġstartup Ġstatus Ġfailed ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclaim Task (): ĠBuild Task Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġbuild Api . claim Task () ĊĠĠĠĠĠĠĠ Ġif Ġ( result . isNot Ok ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRemote ServiceException (" Failed Ġto Ġget Ġbuild Ġtask ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult . data Ġ?: Ġthrow ĠRemote ServiceException (" Failed Ġto Ġget Ġbuild Ġtask ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcomplete Task ( ĊĠĠĠĠĠĠĠ ĠtaskId : ĠString , ĊĠĠĠĠĠĠĠ Ġelement Id : ĠString , ĊĠĠĠĠĠĠĠ Ġelement Name : ĠString , ĊĠĠĠĠĠĠĠ Ġcontainer Id : ĠString , ĊĠĠĠĠĠĠĠ Ġis Success : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġbuild Result : ĠMap < String , ĠString >, ĊĠĠĠĠĠĠĠ Ġtype : ĠString ?, ĊĠĠĠĠĠĠĠ Ġmessage : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġerror Type : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ ĠerrorCode : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info ("[ ERROR CODE ] Ġcomplete Task Ġ<$ taskId > [$ error Type ][$ errorCode ][$ message ] Ġ") ĊĠĠĠĠĠĠĠ ĠLogger Service . add Fold End Line ("$ element Name - [$ element Id ]") ĊĠĠĠĠĠĠĠ ĠLogger Service . flush () ĊĠĠĠĠĠĠĠ Ġval Ġtask Result Ġ= ĠBuild Task Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtaskId Ġ= ĠtaskId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement Id Ġ= Ġelement Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer Id Ġ= Ġcontainer Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Ġ= Ġis Success , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Result Ġ= Ġbuild Result , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġmessage , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Type Ġ= Ġerror Type , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠerrorCode Ġ= ĠerrorCode ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġbuild Api . complete Task ( task Result ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result . isNot Ok ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRemote ServiceException (" Failed Ġto Ġcomplete Ġbuild Ġtask ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġend Build () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġbuild Api . end Task () ĊĠĠĠĠĠĠĠ Ġif Ġ( result . isNot Ok ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRemote ServiceException (" Failed Ġto Ġend Ġbuild Ġtask ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġheartbeat () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġbuild Api . heartbeat () ĊĠĠĠĠĠĠĠ Ġif Ġ( result . isNot Ok ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRemote ServiceException (" Failed Ġto Ġdo Ġheartbeat Ġtask ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }