/* Ċ Ġ* Ġ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 . bk . code cc . task . service . impl Ċ Ċ import Ġcom . fasterxml . jackson . core . type . Type Reference Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . tencent . bk . code cc . def ect . api . Service Task Log Rest Resource Ċ import Ġcom . tencent . bk . code cc . def ect . vo . Upload Task Log Step VO Ċ import Ġcom . tencent . bk . code cc . task . constant . Task Constants Ċ import Ġcom . tencent . bk . code cc . task . constant . Task Message Code Ċ import Ġcom . tencent . bk . code cc . task . dao . Tool Meta Cache Ċ import Ġcom . tencent . bk . code cc . task . dao . mong ore pository . Base Data Repository Ċ import Ġcom . tencent . bk . code cc . task . model . Task Info Entity Ċ import Ġcom . tencent . bk . code cc . task . service . Meta Service Ċ import Ġcom . tencent . bk . code cc . task . service . Pipeline Service Ċ import Ġcom . tencent . bk . code cc . task . vo . Batch Register VO Ċ import Ġcom . tencent . bk . code cc . task . vo . Repo Info VO Ċ import Ġcom . tencent . devops . common . api . enums . Repository Type Ċ import Ġcom . tencent . devops . common . api . enums . Sc m Type Ċ import Ġcom . tencent . devops . common . api . exception . Code CC Exception Ċ import Ġcom . tencent . devops . common . api . exception . Stream Exception Ċ import Ġcom . tencent . devops . common . api . pojo . Code CC Result Ċ import Ġcom . tencent . devops . common . client . Client Ċ import Ġcom . tencent . devops . common . constant . Com Constants Ċ import Ġcom . tencent . devops . common . constant . Common Message Code Ċ import Ġcom . tencent . devops . common . pipeline . Model Ċ import Ġcom . tencent . devops . common . pipeline . container .* Ċ import Ġcom . tencent . devops . common . pipeline . enums .* Ċ import Ġcom . tencent . devops . common . pipeline . option . Job Control Option Ċ import Ġcom . tencent . devops . common . pipeline . pojo . Build Form Property Ċ import Ġcom . tencent . devops . common . pipeline . pojo . element . Element Ċ import Ġcom . tencent . devops . common . pipeline . pojo . element . agent .* Ċ import Ġcom . tencent . devops . common . pipeline . pojo . element . trigger . Manual Trigger Element Ċ import Ġcom . tencent . devops . common . pipeline . pojo . element . trigger . Timer Trigger Element Ċ import Ġcom . tencent . devops . plugin . api . Service Code cc Resource Ċ import Ġcom . tencent . devops . plugin . code cc . pojo . Code cc Build Info Ċ import Ġcom . tencent . devops . plugin . code cc . pojo . cover ity . Project Language Ċ import Ġcom . tencent . devops . process . api . service . Service Build Resource Ċ import Ġcom . tencent . devops . process . api . service . Service Pipeline Resource Ċ import Ġcom . tencent . devops . repository . api . Service Repository Resource Ċ import Ġcom . tencent . devops . repository . api . scm . Service Sc m Resource Ċ import Ġcom . tencent . devops . repository . pojo . Repository Ċ import Ġnet . sf . json . JSONArray Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . beans . factory . annotation . Value Ċ import Ġorg . springframework . scheduling . annotation . Async Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġ ä¸İ èĵĿ çĽ ¾ äº¤ äºĴ å·¥åħ· ç±» Ċ Ġ* Ċ Ġ* Ġ@ version ĠV 1 . 0 Ċ Ġ* Ġ@ date Ġ 2 0 1 9 / 5 / 5 Ċ Ġ*/ Ċ @ Service Ċ class ĠPipeline ServiceImpl Ġ@ Autowired Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġclient : ĠClient , ĊĠĠĠ Ġprivate Ġval Ġbase Data Repository : ĠBase Data Repository , ĊĠĠĠ Ġprivate Ġval Ġtool Meta Cache : ĠTool Meta Cache , ĊĠĠĠ Ġprivate Ġval ĠobjectMapper : ĠObjectMapper , ĊĠĠĠ Ġprivate Ġval Ġmeta Service : ĠMeta Service Ċ ) Ġ: ĠPipeline Service Ġ{ ĊĊĠĠĠ Ġ@ Value ("\ ${ devops . retry . attempt :# { 1 }} ") ĊĠĠĠ Ġprivate Ġval Ġretry Attempt : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġ@ Value ("\ ${ devops . retry . interval :# { 1 }} ") ĊĠĠĠ Ġprivate Ġval Ġretry Interval : ĠLong Ġ= Ġ 0 ĊĊĠĠĠ Ġ@ Value ("\ ${ devops . image Name :# { null }} ") ĊĠĠĠ Ġprivate Ġval Ġimage Name : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġassemble Create Pipeline ( register VO : ĠBatch Register VO , Ġtask Info Entity : ĠTask Info Entity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Execute Time : ĠString , Ġdefault Execute Date : ĠList < String >): ĠModel Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ ç¬¬ä¸Ģä¸ª stage çļĦåĨħå®¹ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġelement First Ġ= ĠManual Trigger Element ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" æīĭåĬ¨ è§¦åıĳ ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcan Element Skip Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Latest Parameters Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġelement Second Ġ= ĠTimer Trigger Element ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" å®ļæĹ¶ è§¦åıĳ ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpression Ġ= Ġget Cr ontab Timing Str ( default Execute Time , Ġdefault Execute Date ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Expression Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadvance Expression Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġno Sc m Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcontainer First Ġ= ĠTrigger Container ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" demo ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelements Ġ= Ġarray ListOf ( element First , Ġelement Second ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Epoch Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsystem Elapsed Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement Elapsed Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemplate Params Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild No Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcan Retry Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer Id Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġstage First Ġ= ĠStage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainers Ġ= Ġarray ListOf ( container First ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ ç¬¬äºĮ ä¸ª stage ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġelement Third Ġ= Ġget Code Element ( register VO , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġval Ġelement Four th : ĠElement Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLinux Code CC Script Element ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" æī§è¡Į æī«æıı èĦļæľ¬ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscript Type Ġ= ĠBuild Script Type . valueOf ( if Ġ( register VO . build Script Type . isNull Or Blank ()) Ġ" SHELL " Ġelse Ġregister VO . build Script Type ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscript Ġ= Ġif Ġ( register VO . script Content . isNull Or Blank ()) Ġ" echo " Ġelse Ġregister VO . script Content , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode C CT ask Name Ġ= Ġtask Info Entity . name En , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode C CT ask Cn Name Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlanguages Ġ= Ġconvert Code Lang To Bs ( task Info Entity . code Lang ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġasynchronous Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscan Type Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompile Pl at Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtools Ġ= Ġif Ġ( register VO . tools . isNull OrEmpty ()) ĠlistOf (" OTHER S ") Ġelse Ġregister VO . tools . map Ġ{ Ġit . tool Name Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpy Version Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeslint Rc Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġphp cs Standard Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgo Path Ġ= Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcontainer Second Ġ= ĠVM Build Container ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" demo ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelements Ġ= ĠlistOf ( element Third , Ġelement Four th ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Epoch Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsystem Elapsed Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement Elapsed Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase OS Ġ= ĠVM Base OS . valueOf (" LINUX "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvm Names Ġ= Ġempty Set (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Queue Minutes Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Running Minutes Ġ= Ġ 8 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Env Ġ= Ġregister VO . build Env , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Build Env Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthird Party Agent Id Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthird Party Agent Env Id Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthird Party Workspace Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocker Build Version Ġ= Ġimage Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdispatch Type Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcan Retry Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable External Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer Id Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjob Control Option Ġ= ĠJob Control Option ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimeout Ġ= Ġ 9 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Condition Ġ= ĠJob Run Condition . STAGE _ RUNNING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Variables Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Condition Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmutex Group Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt stack Agent Id Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġstage Second Ġ= ĠStage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainers Ġ= Ġarray ListOf ( container Second ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġlogger . info (" assemble Ġpipeline Ġparameter Ġsuccessfully ! Ġtask Ġid : Ġ${ task Info Entity . taskId }") ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ æĢ» æµģ æ°´ çº¿ æĭ ¼ è£ħ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġreturn ĠModel ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġtask Info Entity . taskId . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdesc Ġ= Ġtask Info Entity . projectName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstages Ġ= Ġarray ListOf ( stage First , Ġstage Second ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabels Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstance From Template Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline Creator Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsrc Template Id Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġget Code Element ( register VO : ĠBatch Register VO , Ġrel Path : ĠString ?): ĠElement Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( register VO . scm Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" CODE _ GIT " Ġ-> ĠCode Git Element ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" ä¸ĭè½½ ä»£çłģ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository Hash Id Ġ= Ġregister VO . repository Hash Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbranch Name Ġ= Ġif Ġ( register VO . branch Name . isNull Or Blank ()) Ġ"" Ġelse Ġregister VO . branch Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrevision Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstrategy Ġ= ĠCode Pull Strategy . F RESH _ CHECK OUT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġrel Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable Sub module Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit Pull Mode Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository Type Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository Name Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" CODE _ GIT LAB " Ġ-> ĠCode Git lab Element ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" ä¸ĭè½½ ä»£çłģ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository Hash Id Ġ= Ġregister VO . repository Hash Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbranch Name Ġ= Ġif Ġ( register VO . branch Name . isNull Or Blank ()) Ġ"" Ġelse Ġregister VO . branch Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrevision Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstrategy Ġ= ĠCode Pull Strategy . F RESH _ CHECK OUT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġrel Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable Sub module Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit Pull Mode Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository Type Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository Name Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" GITHUB " Ġ-> ĠGithub Element ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" ä¸ĭè½½ ä»£çłģ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository Hash Id Ġ= Ġregister VO . repository Hash Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstrategy Ġ= ĠCode Pull Strategy . F RESH _ CHECK OUT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġrel Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable Sub module Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrevision Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit Pull Mode Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable Virtual Merge Branch Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository Type Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository Name Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠCode S vn Element ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" ä¸ĭè½½ ä»£çłģ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository Hash Id Ġ= Ġregister VO . repository Hash Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrevision Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstrategy Ġ= ĠCode Pull Strategy . F RESH _ CHECK OUT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġrel Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable Sub module Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspecify Revision Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsvn Depth Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsvn Path Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsvn Version Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository Type Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository Name Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ å®ļæĹ¶ ä»»åĬ¡ è¡¨è¾¾å¼ı ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġexecute Time ĊĠĠĠĠ Ġ* Ġ@ param Ġexecute Date List ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Cr ontab Timing Str ( execute Time : ĠString , Ġexecute Date List : ĠList < String >? ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( execute Time . isBlank () Ġ|| Ġexecute Date List . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" execute Ġdate Ġand Ġtime Ġis Ġempty !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠCode CC Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerr Code Ġ= ĠCommon Message Code . PARAMETER _ IS _ NULL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmsg Param Ġ= ĠarrayOf (" å®ļæĹ¶ æī§è¡Į æĹ¶éĹ´ "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Cause Ġ= Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġhour Ġ= Ġexecute Time . substring ( 0 , Ġexecute Time . indexOf (" :" )) ĊĠĠĠĠĠĠĠ Ġval Ġmin Ġ= Ġexecute Time . substring ( execute Time . indexOf (": ") Ġ+ Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġweek Day List Str Ġ= Ġexecute Date List . reduce Ġ{ Ġacc , Ġs Ġ-> Ġ"$ acc ,$ s " Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠString . format (" 0 Ġ% s Ġ% s Ġ? Ġ* Ġ% s ", Ġmin , Ġhour , Ġweek Day List Str ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġupdate Pipeline Tools ( userName : ĠString , ĠtaskId : ĠLong , Ġtool List : ĠList < String >, Ġtask Info Entity : ĠTask Info Entity ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Type : ĠCom Constants . Pipeline Tool Update Type , Ġcode Element : ĠElement ?): ĠSet < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Tool Set Ġ= Ġmutable Set Of < String >() ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ== Ġtask Info Entity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcurrent Tool Set ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠprojectId Ġ= Ġtask Info Entity . projectId ĊĠĠĠĠĠĠĠ Ġval Ġpipeline Id Ġ= Ġtask Info Entity . pipeline Id ĊĊĠĠĠĠĠĠĠ Ġ// å¦Ĥæŀľ æĺ¯ ä»İ æµģ æ°´ çº¿ åĪĽå»º çļĦ ĊĠĠĠĠĠĠĠ Ġval Ġchannel Code Ġ= Ġif Ġ( Com Constants . Bs Task CreateFrom . BS _ PIPELINE . value () Ġ== Ġtask Info Entity . createFrom ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChannel Code . BS ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChannel Code . CODE CC ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġclient . get ( Service Pipeline Resource :: class . java ). get ( userName , ĠprojectId , Ġpipeline Id , Ġchannel Code ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result . isNot Ok () Ġ|| Ġnull Ġ== Ġresult . data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" get Ġpipeline Ġinfo Ġfail ! Ġbs Ġproject Ġid : Ġ{}, Ġbs Ġpipeline Ġid : Ġ{}", ĠprojectId , Ġpipeline Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠCode CC Exception ( Common Message Code . BLUE _ SH I ELD _ INTERNAL _ ERROR ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// stages Ġ ä¸Ģå®ļ ä¸į ä¸ºç©º ĠæľįåĬ¡ åĪĽå»º çļĦ åıªæľī ä¸Ģä¸ª code cc åİŁ åŃĲ ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= Ġresult . data Ġ?: Ġreturn Ġcurrent Tool Set ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Model Ġ= Ġwith ( model ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstage List Ġ= Ġmutable ListOf < Stage >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstages . forEach Ġ{ Ġstage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontainer List Ġ= Ġmutable ListOf < Container >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnew Stage Ġ= Ġstage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Com Constants . Bs Task CreateFrom . BS _ PIPELINE . value () Ġ== Ġtask Info Entity . createFrom ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Stage Ġ= Ġinit Params Element For Stage One ( stage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Stage . containers . forEach Ġ{ Ġcontainer Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Container : ĠContainer Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( container Ġis ĠVM Build Container Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . elements . any Ġ{ Ġit Ġis ĠLinux Code CC Script Element Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement List Ġ= Ġmutable ListOf < Element >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . elements . forEach Ġ{ Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Element : ĠElement Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( element Ġis ĠLinux Code CC Script Element ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtools Ġ= Ġelement . tools ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! tools . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Tool Set . addAll ( tools ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( update Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCom Constants . Pipeline Tool Update Type . ADD Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Tool Set . addAll ( tool List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCom Constants . Pipeline Tool Update Type . REMOVE Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Tool Set . removeAll ( tool List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCom Constants . Pipeline Tool Update Type . REPLACE Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Tool Set Ġ= Ġtool List . to Mutable Set () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCom Constants . Pipeline Tool Update Type . GET Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Tool Set ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . tools Ġ= Ġcurrent Tool Set . toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( null Ġ!= Ġcode Element Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( element Ġis ĠCode Git Element Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġis ĠCode Git lab Element Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġis ĠGithub Element Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġis ĠCode S vn Element )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Element ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement List . add ( new Element ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVM Build Container ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer Id Ġ= Ġcontainer . container Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġcontainer . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġcontainer . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelements Ġ= Ġelement List , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġcontainer . status , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Epoch Ġ= Ġcontainer . start Epoch , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsystem Elapsed Ġ= Ġcontainer . system Elapsed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Elapsed Ġ= Ġcontainer . element Elapsed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase OS Ġ= Ġcontainer . base OS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvm Names Ġ= Ġcontainer . vm Names , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Queue Minutes Ġ= Ġcontainer . max Queue Minutes , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Running Minutes Ġ= Ġcontainer . max Running Minutes , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Env Ġ= Ġcontainer . build Env , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Build Env Ġ= Ġcontainer . custom Build Env , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthird Party Agent Id Ġ= Ġcontainer . third Party Agent Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthird Party Agent Env Id Ġ= Ġcontainer . third Party Agent Env Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthird Party Workspace Ġ= Ġcontainer . third Party Workspace , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocker Build Version Ġ= Ġcontainer . docker Build Version , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcan Retry Ġ= Ġcontainer . can Retry , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable External Ġ= Ġcontainer . enable External , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjob Control Option Ġ= Ġcontainer . job Control Option , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutex Group Ġ= Ġcontainer . mutex Group , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatch Type Ġ= Ġcontainer . dispatch Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt stack Agent Id Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer List . add ( new Container ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstage List . add ( Stage ( container List , Ġnew Stage . id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModel ( name , Ġdesc , Ġstage List , Ġlabels , Ġinstance From Template , Ġpipeline Creator ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmodify Result Ġ= Ġif Ġ( Com Constants . Bs Task CreateFrom . BS _ PIPELINE . value () Ġ== Ġtask Info Entity . createFrom ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . get ( Service Pipeline Resource :: class . java ). edit ( userName , ĠprojectId , Ġpipeline Id , Ġnew Model , ĠChannel Code . BS ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . get ( Service Pipeline Resource :: class . java ). edit ( userName , ĠprojectId , Ġpipeline Id , Ġnew Model , ĠChannel Code . CODE CC ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( modify Result . isNot Ok () Ġ|| Ġmodify Result . data Ġ!= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" mong ot emplate Ġbs Ġpipeline Ġinfo Ġfail ! Ġbs Ġproject Ġid : Ġ$ projectId ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠCode CC Exception ( Common Message Code . BLUE _ SH I ELD _ INTERNAL _ ERROR ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlogger . info (" update Ġpipeline Ġinfo Ġsuccessfully ! Ġproject Ġid : Ġ$ projectId , Ġpipeline Ġid : Ġ$ pipeline Id ") ĊĠĠĠĠĠĠĠ Ġreturn Ġcurrent Tool Set ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĿå§ĭåĮĸ èĢģ çļĦ æľįåĬ¡ åŀĭ æµģ æ°´ çº¿ çļĦ Params åħĥç´ł ï¼Į ä»¥ éħį åĲĪ æµģ æ°´ çº¿ æĶ¯æĮģ è§¦åıĳ åįķ ä¸ª å·¥åħ· ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ date Ġ 2 0 1 9 / 6 / 2 7 ĊĠĠĠĠ Ġ* Ġ@ version ĠV 4 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit Params Element For Stage One ( stage : ĠStage ): ĠStage Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(" stage - 1 " Ġ== Ġstage . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontainer List Ġ= Ġmutable ListOf < Container >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstage . containers . forEach Indexed Ġ{ Ġindex , Ġcontainer Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Container Ġ= Ġif Ġ( index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġ( container Ġas ĠTrigger Container ). params . to Mutable List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontain Params Ġ= Ġcheck Is Pipeline Contain Params ( params ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// params èĤ ¯ å®ļ ä¸įä¼ļ ä¸ºç©º ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! contain Params ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparam Ġ= ĠBuild Form Property ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ"_ CODE CC _ FILTER _ TOOLS ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠBuild Form PropertyType . STRING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdesc Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Hash Id Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelative Path Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsc m Type Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer Type Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġglob Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperties Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams . add ( param ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTrigger Container ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġcontainer . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġcontainer . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelements Ġ= Ġcontainer . elements , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġcontainer . status , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Epoch Ġ= Ġcontainer . start Epoch , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsystem Elapsed Ġ= Ġcontainer . system Elapsed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Elapsed Ġ= Ġcontainer . element Elapsed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġparams , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemplate Params Ġ= Ġcontainer . template Params , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild No Ġ= Ġcontainer . build No , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcan Retry Ġ= Ġcontainer . can Retry , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer Id Ġ= Ġcontainer . container Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer List . add ( new Container ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠStage ( container List , Ġstage . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġstage ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ£Ģ æŁ¥ pipeline éĩĮ éĿ¢çļĦ params æĺ¯åĲ¦ å·²ç»ı æľī åĢ¼ , æľī åĢ¼ è¿ĶåĽŀ true ï¼Į åĲ¦åĪĻ è¿ĶåĽŀ false ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġparam List ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcheck Is Pipeline Contain Params ( param List : ĠList < Build Form Property >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( param List . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparam List . any Ġ{ Ġit . id . isBlank () Ġ&& Ġ"_ CODE CC _ FILTER _ TOOLS ". equals ( it . id , Ġignore Case Ġ= Ġtrue ) Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĲ¯åĬ¨ æµģ æ°´ çº¿ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtask Info Entity ĊĠĠĠĠ Ġ* Ġ@ param Ġtool Name ĊĠĠĠĠ Ġ* Ġ@ param ĠuserName ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġstart Pipeline ( task Info Entity : ĠTask Info Entity , Ġtool Name : ĠList < String >, ĠuserName : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuild Id : ĠString ĊĠĠĠĠĠĠĠ Ġval Ġvalue Map Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"_ CODE CC _ FILTER _ TOOLS " Ġto Ġtool Name . join ToString (",") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġbuild Id Result Ġ= Ġclient . get ( Service Build Resource :: class . java ). manual Startup ( userName , Ġtask Info Entity . projectId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Info Entity . pipeline Id , Ġvalue Map , ĠChannel Code . CODE CC ) ĊĠĠĠĠĠĠĠ Ġif Ġ( build Id Result . isNot Ok () Ġ|| Ġnull Ġ== Ġbuild Id Result . data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" start Ġpipeline Ġfail ! Ġproject Ġid : Ġ{}, Ġpipeline Ġid : Ġ{}, Ġmsg Ġis : Ġ{}", Ġtask Info Entity . projectId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Info Entity . pipeline Id , Ġbuild Id Result . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠCode CC Exception ( Common Message Code . BLUE _ SH I ELD _ INTERNAL _ ERROR ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbuild Id Ġ= Ġbuild Id Result . data ?. id Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġlogger . info (" return Ġbuild Ġid : Ġ{}", Ġbuild Id ) ĊĊĊĠĠĠĠĠĠĠ Ġ// æł¹æį® æŀĦ ä»¶ åı· èİ·åıĸ æŀĦå»º number , Ġè®¾ç½® 7 s è¶ħæĹ¶ ĊĠĠĠĠĠĠĠ Ġvar Ġbuild No : ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġvar Ġreal Retry Attempt Ġ= Ġretry Attempt ĊĠĠĠĠĠĠĠ Ġwhile Ġ( real Retry Attempt Ġ> Ġ 0 Ġ&& Ġnull Ġ== Ġbuild No ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( retry Interval ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInterruptedException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" current Ġthread Ġinterrupted !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreal Retry Attempt -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuild Info Result Ġ= Ġclient . get ( Service Code cc Resource :: class . java ). getCode cc Build Info ( set Of ( build Id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( build Info Result . is Ok () Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ!= Ġbuild Info Result . data Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Info Result . data !!. containsKey ( build Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild No Ġ= Ġbuild Info Result . data ! ![ build Id ]?. build No ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( build Id . isBlank () Ġ|| Ġbuild No . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" start Ġdev ops Ġpipeline Ġfailed ! Ġproject Ġid : Ġ{}, Ġcode cc Ġtask Ġid : Ġ{}, Ġpipeline Ġid : Ġ{}, Ġbuild Ġid : Ġ{}", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Info Entity . projectId , Ġtask Info Entity . taskId , Ġtask Info Entity . pipeline Id , Ġbuild Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠCode CC Exception ( Common Message Code . BLUE _ SH I ELD _ INTERNAL _ ERROR ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbuild Id ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Throws ( Stream Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġconvert Dev ops Code Lang To Code CC ( code Lang : ĠString ): ĠLong ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( code Lang . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 L ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmeta Lang List Ġ= Ġbase Data Repository . findAll By Param Type ( Com Constants . KEY _ CODE _ LANG ) ĊĠĠĠĠĠĠĠ Ġval Ġreq Lang List Ġ= ĠobjectMapper . readValue < List < String >>( code Lang , Ġobject Ġ: ĠType Reference < List < String >>() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġreturn Ġmeta Lang List . filter Ġ{ Ġmeta Lang Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlang Array Ġ= ĠJSONArray . from Object ( meta Lang . param Extend 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlang Array . any Ġ{ Ġreq Lang List . contains ( it Ġas ĠString ) Ġ} ĊĠĠĠĠĠĠĠ Ġ}. map Ġ{ Ġmeta Lang Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Lang . param Code . to Long () ĊĠĠĠĠĠĠĠ Ġ}. reduce Ġ{ Ġacc , Ġl Ġ-> Ġacc Ġor Ġl Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Async (" async Task Executor ") ĊĠĠĠ Ġoverride Ġfun Ġupdate Task Init Step ( is First Trigger : ĠString ?, Ġtask Info Entity : ĠTask Info Entity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline Build Id : ĠString , Ġtool Name : ĠString , ĠuserName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġupload Task Log Step VO Ġ= ĠUpload Task Log Step VO () ĊĠĠĠĠĠĠĠ Ġupload Task Log Step VO . step Num Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġupload Task Log Step VO . startTime Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġupload Task Log Step VO . endTime Ġ= Ġ 0 L ĊĊĠĠĠĠĠĠĠ Ġupload Task Log Step VO . msg Ġ= Ġif Ġ( is First Trigger ?. to Boolean () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" æ·»åĬł ${ tool Meta Cache . get Tool From Cache ( tool Name ). displayName } åĲİ èĩªåĬ¨ è§¦åıĳ ç¬¬ ä¸Ģæ¬¡ åĪĨæŀĲ " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" æīĭåĬ¨ è§¦åıĳ ($ userName )" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupload Task Log Step VO . flag Ġ= ĠTask Constants . TASK _ FLAG _ PROCESS ING ĊĠĠĠĠĠĠĠ Ġupload Task Log Step VO . tool Name Ġ= Ġtool Name ĊĠĠĠĠĠĠĠ Ġupload Task Log Step VO . stream Name Ġ= Ġtask Info Entity . name En ĊĠĠĠĠĠĠĠ Ġupload Task Log Step VO . pipeline Build Id Ġ= Ġpipeline Build Id ĊĠĠĠĠĠĠĠ Ġupload Task Log Step VO . trigger From Ġ= ĠuserName ĊĊĠĠĠĠĠĠĠ Ġval Ġupload Result Ġ= Ġclient . get ( Service Task Log Rest Resource :: class . java ). upload Task Log ( upload Task Log Step VO ) ĊĠĠĠĠĠĠĠ Ġif Ġ( upload Result . isNot Ok ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" upload Ġtask Ġanalysis Ġlog Ġfail ! Ġstream Ġname : Ġ{}, Ġtool Ġname : Ġ{}", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Info Entity . name En , Ġtool Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠCode CC Exception ( Common Message Code . INTERNAL _ SYSTEM _ FAIL ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlogger . info (" update Ġtask Ġlog Ġstep Ġstatus Ġsuccess ! Ġtask Ġid : Ġ${ task Info Entity . taskId }, Ġtool Ġname : Ġ$ tool Name ") ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġget Repository List ( proj Code : ĠString ): ĠList < Repo Info VO > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrepo Result Ġ= Ġclient . get ( Service Repository Resource :: class . java ). list ( proj Code , Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( repo Result . isNot Ok () Ġ|| Ġnull Ġ== Ġrepo Result . data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" get Ġrepo Ġlist Ġfail !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠCode CC Exception ( Common Message Code . BLUE _ SH I ELD _ INTERNAL _ ERROR ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġrepo Result . data !!. map Ġ{ Ġ( repository Hash Id , Ġalias Name , Ġurl , Ġtype , Ġ_, Ġ_, Ġ_, Ġauth Type ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepo Info VO Ġ= ĠRepo Info VO () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Info VO . repo Hash Id Ġ= Ġrepository Hash Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Info VO . url Ġ= Ġurl ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Info VO . auth Type Ġ= Ġauth Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Info VO . type Ġ= Ġtype . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Info VO . alias Name Ġ= Ġalias Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Info VO ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ ä»£çłģ åºĵ åĪĨ æĶ¯ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġproj Code ĊĠĠĠĠ Ġ* Ġ@ param Ġurl ĊĠĠĠĠ Ġ* Ġ@ param Ġsc m Type ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget Repository Branches ( proj Code : ĠString , Ġurl : ĠString , Ġsc m Type : ĠString ): ĠList < String >? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġrepo Result Ġ= Ġclient . get ( Service Sc m Resource :: class . java ). list Branches ( proj Code , Ġurl , ĠS cm Type . valueOf ( scm Type ), Ġnull , Ġnull , Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( repo Result . isNot Ok () Ġ|| Ġnull Ġ== Ġrepo Result . data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" get Ġrepo Ġlist Ġfail !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠCode CC Exception ( Common Message Code . BLUE _ SH I ELD _ INTERNAL _ ERROR ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġrepo Result . data ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä¿®æĶ¹ code cc åİŁ åŃĲ è¯Ńè¨Ģ ï¼Į æ¸ ł éģĵ ä¸º CODE CC ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtask Info Entity ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġupdate Bs Pipeline Lang ( task Info Entity : ĠTask Info Entity , ĠuserName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( userName . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcode Lang Ġ= Ġtask Info Entity . code Lang ĊĠĠĠĠĠĠĠ Ġval ĠprojectId Ġ= Ġtask Info Entity . projectId ĊĠĠĠĠĠĠĠ Ġval Ġpipeline Id Ġ= Ġtask Info Entity . pipeline Id ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġclient . get ( Service Pipeline Resource :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( userName , ĠprojectId , Ġpipeline Id , ĠChannel Code . CODE CC ). data ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Objects . isNull ( data )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠCode CC Exception ( Common Message Code . BLUE _ SH I ELD _ INTERNAL _ ERROR ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// å®ļä½į åĪ° ç¬¬äºĮ ä¸ª stage ä¸ĭ éĿ¢çļĦ ç¬¬ä¸Ģä¸ª container ï¼Į ä¸ĭ éĿ¢çļĦ ç¬¬äºĮ ä¸ª element ĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġdata !!. stages [ 1 ]. containers [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. elements [ 1 ] Ġas ĠLinux Code CC Script Element ĊĊĠĠĠĠĠĠĠ Ġ// Ġè®¾ç½® è¯Ńè¨Ģ ĊĠĠĠĠĠĠĠ Ġelement . languages Ġ= Ġconvert Code Lang To Bs ( code Lang ) ĊĊĠĠĠĠĠĠĠ Ġval Ġedit Ġ= Ġclient . get ( Service Pipeline Resource :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. edit ( userName , ĠprojectId , Ġpipeline Id , Ġdata , ĠChannel Code . CODE CC ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Objects . non Null ( edit ) Ġ&& Ġedit . data Ġ!= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠCode CC Exception ( Common Message Code . BLUE _ SH I ELD _ INTERNAL _ ERROR ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä¿®æĶ¹ code cc åİŁ åŃĲ è¯Ńè¨Ģ ï¼Į æ¸ ł éģĵ ä¸º BS ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtask Info Entity ĊĠĠĠĠ Ġ* Ġ@ param ĠuserName ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġupdate Bs Pipeline Lang BS Channel Code ( task Info Entity : ĠTask Info Entity , ĠuserName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Objects . isNull ( task Info Entity ) Ġ|| ĠuserName . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcode Lang Ġ= Ġtask Info Entity . code Lang ĊĠĠĠĠĠĠĠ Ġval ĠprojectId Ġ= Ġtask Info Entity . projectId ĊĠĠĠĠĠĠĠ Ġval Ġpipeline Id Ġ= Ġtask Info Entity . pipeline Id ĊĊĠĠĠĠĠĠĠ Ġval Ġmodel Result Ġ= Ġclient . get ( Service Pipeline Resource :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( userName , ĠprojectId , Ġpipeline Id , ĠChannel Code . BS ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Objects . isNull ( model Result ) Ġ|| ĠObjects . isNull ( model Result . data )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" get Ġpipeline Ġmodel Ġinfo Ġfail ! Ġproject Ġid : Ġ$ projectId , Ġpipeline Ġid : Ġ$ pipeline Id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠCode CC Exception ( Common Message Code . BLUE _ SH I ELD _ INTERNAL _ ERROR ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// åľ¨ Model ä¸Ń å®ļä½į åĪ° ä»£çłģ æ£ĢæŁ¥ åİŁ åŃĲ çļĦ element ï¼Į å¹¶ ä¿®æĶ¹ è¯Ńè¨Ģ ĊĠĠĠĠĠĠĠ Ġval Ġlinux Element Ġ= Ġmodel Result . data !!. stages ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġstage Ġ-> Ġstage . containers Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġcontainer Ġ-> Ġcontainer . elements Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġelement Ġ-> Ġelement Ġis ĠLinux Pa as Code CC Script Element Ġ} Ġas ĠLinux Pa as Code CC Script Element ĊĠĠĠĠĠĠĠ Ġif Ġ( linux Element . code C CT ask Name . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" can Ġnot Ġfind Ġqualified Ġelement ! Ġproject Ġid : Ġ$ projectId , Ġpipeline Ġid : Ġ$ pipeline Id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠCode CC Exception ( Task Message Code . ELEMENT _ NOT _ FIND ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ è¨Ń ç½® èªŀ è¨Ģ ĊĠĠĠĠĠĠĠ Ġlinux Element . languages Ġ= Ġconvert Code Lang To Bs ( code Lang ) ĊĊĠĠĠĠĠĠĠ Ġval Ġedit Ġ= Ġclient . get ( Service Pipeline Resource :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. edit ( userName , ĠprojectId , Ġpipeline Id , Ġmodel Result . data !! , ĠChannel Code . BS ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Objects . non Null ( edit ) Ġ&& Ġedit . data Ġ!= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" update Ġpipeline Ġinfo Ġfail ! Ġproject Ġid : Ġ$ projectId , Ġpipeline Ġid : Ġ$ pipeline Id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠCode CC Exception ( Common Message Code . BLUE _ SH I ELD _ INTERNAL _ ERROR ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå°Ĩ code cc å¹³åı° çļĦ é¡¹çĽ® è¯Ńè¨Ģ è½¬æį¢ ä¸º èĵĿ çĽ ¾ å¹³åı° çļĦ code cc åİŁ åŃĲ è¯Ńè¨Ģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" CAST _ NE VER _ SU CCE ED S ") ĊĠĠĠ Ġfun Ġconvert Code Lang To Bs ( lang Code : ĠLong ): ĠList < Project Language > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmetadata List Ġ= Ġmeta Service . query Met adat as ( Com Constants . METADATA _ TYPE )[ Com Constants . METADATA _ TYPE ] ĊĠĠĠĠĠĠĠ Ġval Ġlanguage List Ġ= Ġmetadata List ?. filter Ġ{ Ġmetadata VO Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( metadata VO . key . to Long () Ġand Ġlang Code ) Ġ!= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . map Ġ{ Ġmetadata VO Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProject Language . valueOf ( JSONArray . from Object ( metadata VO . alias Names )[ 0 ]. toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( language List . isNull OrEmpty ()) ĠlistOf ( Project Language . OTHER S ) Ġelse Ġlanguage List ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġmodify Code C CT iming ( task Info Entity : ĠTask Info Entity , Ġexecute Date : ĠList < String >, Ġexecute Time : ĠString , ĠuserName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠprojectId Ġ= Ġtask Info Entity . projectId ĊĠĠĠĠĠĠĠ Ġval Ġpipeline Id Ġ= Ġtask Info Entity . pipeline Id ĊĠĠĠĠĠĠĠ Ġval Ġchannel Code Ġ= Ġif Ġ( Com Constants . Bs Task CreateFrom . BS _ PIPELINE . value () Ġ== Ġtask Info Entity . createFrom ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChannel Code . BS ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChannel Code . CODE CC ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmodel Result Ġ= Ġclient . get ( Service Pipeline Resource :: class . java ). get ( userName , ĠprojectId , Ġpipeline Id , Ġchannel Code ) ĊĠĠĠĠĠĠĠ Ġif Ġ( model Result . isNot Ok () Ġ|| Ġnull Ġ== Ġmodel Result . data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" get Ġpipeline Ġinfo Ġfail ! Ġbs Ġproject Ġid : Ġ{}, Ġbs Ġpipeline Ġid : Ġ{}", ĠprojectId , Ġpipeline Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠCode CC Exception ( Common Message Code . BLUE _ SH I ELD _ INTERNAL _ ERROR ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= Ġmodel Result . data ĊĠĠĠĠĠĠĠ Ġval Ġnew Model Ġ= Ġwith ( model !! ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstage List Ġ= Ġmutable ListOf < Stage >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstages . forEach Indexed Ġ{ Ġstage Index , Ġstage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Stage Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( stage Index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontainer List Ġ= Ġmutable ListOf < Container >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstage . containers . forEach Indexed Ġ{ Ġcontainer Index , Ġcontainer Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Container : ĠContainer Ġ= Ġif Ġ( container Ġis ĠTrigger Container Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer Index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Elements Ġ= Ġcontainer . elements . to Mutable List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Elements . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Elements . remove At ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// å®ļæĹ¶ æĹ¶éĹ´ æĪĸèĢħ æĹ¥æľŁ ä¸ºç©º åĪĻ åĪłéĻ¤ å®ļæĹ¶ ä»»åĬ¡ ç¼ĸ æİĴ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! execute Time . isBlank () Ġ&& Ġ! execute Date . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĹł è®º åİŁ æĿ¥ æĺ¯åĲ¦ æľī å®ļæĹ¶ ä»»åĬ¡ åİŁ åŃĲ ï¼Į éĥ½ æĸ°å»º æĽ´æĸ° ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtimer Trigger Element Ġ= ĠTimer Trigger Element ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" å®ļæĹ¶ è§¦åıĳ ", Ġnull , Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Cr ontab Timing Str ( execute Time , Ġexecute Date ), Ġnull , Ġnull , Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Elements . add ( timer Trigger Element ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTrigger Container ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġcontainer . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġcontainer . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelements Ġ= Ġnew Elements , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġcontainer . status , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Epoch Ġ= Ġcontainer . start Epoch , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsystem Elapsed Ġ= Ġcontainer . system Elapsed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Elapsed Ġ= Ġcontainer . element Elapsed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġcontainer . params , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemplate Params Ġ= Ġcontainer . template Params , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild No Ġ= Ġcontainer . build No , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcan Retry Ġ= Ġcontainer . can Retry , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer Id Ġ= Ġcontainer . container Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer List . add ( new Container ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStage ( container List , Ġstage . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstage List . add ( new Stage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModel ( name , Ġdesc , Ġstage List , Ġlabels , Ġinstance From Template , Ġpipeline Creator ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġval Ġmodify Result Ġ= Ġclient . get ( Service Pipeline Resource :: class . java ). edit ( userName , ĠprojectId , Ġpipeline Id , Ġnew Model , Ġchannel Code ) ĊĠĠĠĠĠĠĠ Ġif Ġ( modify Result . isNot Ok () Ġ|| Ġmodify Result . data Ġ!= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" mong ot emplate Ġbs Ġpipeline Ġinfo Ġfail ! Ġbs Ġproject Ġid : Ġ{}", ĠprojectId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠCode CC Exception ( Common Message Code . BLUE _ SH I ELD _ INTERNAL _ ERROR ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlogger . info (" modify Ġcode cc Ġtask Ġschedule Ġsuccessfully ! Ġproject Ġid : Ġ$ projectId , Ġpipeline Ġid : Ġ$ pipeline Id ") ĊĊĠĠĠĠĠĠĠ Ġtask Info Entity . execute Date Ġ= Ġexecute Date ĊĠĠĠĠĠĠĠ Ġtask Info Entity . execute Time Ġ= Ġexecute Time ĊĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġdelete Code C CT iming ( userName : ĠString , Ġcreate From : ĠString , Ġpipeline Id : ĠString , ĠprojectId : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchannel Code Ġ= Ġif Ġ( Com Constants . Bs Task CreateFrom . BS _ PIPELINE . value () Ġ== Ġcreate From ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChannel Code . BS ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChannel Code . CODE CC ĊĊĠĠĠĠĠĠĠ Ġval Ġmodel Result Ġ= Ġclient . get ( Service Pipeline Resource :: class . java ). get ( userName , ĠprojectId , Ġpipeline Id , Ġchannel Code ) ĊĠĠĠĠĠĠĠ Ġif Ġ( model Result . isNot Ok () Ġ|| Ġnull Ġ== Ġmodel Result . data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" get Ġpipeline Ġinfo Ġfail ! Ġbs Ġproject Ġid : Ġ{}, Ġbs Ġpipeline Ġid : Ġ{}", ĠprojectId , Ġpipeline Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠCode CC Exception ( Common Message Code . BLUE _ SH I ELD _ INTERNAL _ ERROR ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= Ġmodel Result . data ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Model Ġ= Ġwith ( model !! ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstage List Ġ= Ġmutable ListOf < Stage >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstages . forEach Indexed Ġ{ Ġstage Index , Ġstage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Stage Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( stage Index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontainer List Ġ= Ġmutable ListOf < Container >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstage . containers . forEach Indexed Ġ{ Ġcontainer Index , Ġcontainer Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Container : ĠContainer Ġ= Ġif Ġ( container Ġis ĠTrigger Container Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer Index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Elements Ġ= Ġcontainer . elements . to Mutable List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Elements . remove At ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTrigger Container ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġcontainer . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġcontainer . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelements Ġ= Ġnew Elements , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġcontainer . status , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Epoch Ġ= Ġcontainer . start Epoch , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsystem Elapsed Ġ= Ġcontainer . system Elapsed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Elapsed Ġ= Ġcontainer . element Elapsed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġcontainer . params , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemplate Params Ġ= Ġcontainer . template Params , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild No Ġ= Ġcontainer . build No , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcan Retry Ġ= Ġcontainer . can Retry , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer Id Ġ= Ġcontainer . container Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer List . add ( new Container ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStage ( container List , Ġstage . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstage List . add ( new Stage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModel ( name , Ġdesc , Ġstage List , Ġlabels , Ġinstance From Template , Ġpipeline Creator ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmodify Result Ġ= Ġclient . get ( Service Pipeline Resource :: class . java ). edit ( userName , ĠprojectId , Ġpipeline Id , Ġnew Model , Ġchannel Code ) ĊĠĠĠĠĠĠĠ Ġif Ġ( modify Result . isNot Ok ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" mong ot emplate Ġbs Ġpipeline Ġinfo Ġfail ! Ġbs Ġproject Ġid : Ġ{}", ĠprojectId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠCode CC Exception ( Common Message Code . BLUE _ SH I ELD _ INTERNAL _ ERROR ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlogger . info (" delete Ġcode cc Ġtask Ġschedule Ġsuccessfully ! Ġproject Ġid : Ġ$ projectId , Ġpipeline Ġid : Ġ$ pipeline Id ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Repo Detail ( projectId : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Hash Id : ĠString ): ĠRepository ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrepo Result Ġ= Ġclient . get ( Service Repository Resource :: class . java ). get ( projectId , Ġrepo Hash Id , ĠRepository Type . ID ) ĊĠĠĠĠĠĠĠ Ġif Ġ( repo Result . isNot Ok ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" get Ġrepo Ġdetail Ġfail ! Ġproject Ġid : Ġ$ projectId , Ġrepo Ġhash Ġid : Ġ$ repo Hash Id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠCode CC Exception ( Common Message Code . BLUE _ SH I ELD _ INTERNAL _ ERROR ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġrepo Result . data ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( Pipeline ServiceImpl :: class . java ) ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ