/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠInter shop ĠCom munications ĠAG . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ*/ Ċ package Ġcom . inter shop . gradle . ic m . docker Ċ Ċ import Ġcom . bm us ch ko . gradle . docker . Docker Remote Api Plugin Ċ import Ġcom . inter shop . gradle . ic m . docker . extension . Inter shop Docker Extension Ċ import Ġcom . inter shop . gradle . ic m . docker . extension . image . build . Image Configuration Ċ import Ġcom . inter shop . gradle . ic m . docker . extension . image . build . Project Configuration Ċ import Ġcom . inter shop . gradle . ic m . docker . tasks . Build Image Ċ import Ġcom . inter shop . gradle . ic m . docker . tasks . Gen IC M Properties Ċ import Ġcom . inter shop . gradle . ic m . docker . tasks . Image Properties Ċ import Ġcom . inter shop . gradle . ic m . docker . tasks . Push Images Ċ import Ġcom . inter shop . gradle . ic m . docker . tasks . Show IC M AS Config Ċ import Ġcom . inter shop . gradle . ic m . docker . utils . Build Image Registry Ċ import Ġcom . inter shop . gradle . ic m . docker . utils . Configuration Ċ import Ġcom . inter shop . gradle . ic m . docker . utils . sol rc loud . Task Pre par er Ġas ĠSolr Cloud Pre par er Ċ import Ġcom . inter shop . gradle . ic m . docker . utils . webserver . Task Pre par er Ġas ĠWeb Server Pre par er Ċ import Ġcom . inter shop . gradle . ic m . docker . utils . mail . Task Pre par er Ġas ĠMail Srv Pre par er Ċ import Ġcom . inter shop . gradle . ic m . docker . utils . mss ql . Task Pre par er Ġas ĠM SS QL Pre par er Ċ import Ġcom . inter shop . gradle . ic m . docker . utils . network . Task Pre par er Ġas ĠNetwork Pre par er Ċ import Ġcom . inter shop . gradle . ic m . docker . utils . oracle . Task Pre par er Ġas ĠOracle Pre par er Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . Unknown Task Exception Ċ import Ġorg . gradle . api . provider . Map Property Ċ import Ġorg . gradle . api . provider . Property Ċ import Ġorg . gradle . api . provider . Provider Ċ import Ġorg . gradle . api . tasks . Task Provider Ċ import Ġcom . inter shop . gradle . ic m . docker . utils . mail . Task Pre par er Ġas ĠMail Task Pre par er Ċ import Ġcom . inter shop . gradle . ic m . docker . utils . webserver . Task Pre par er Ġas ĠWeb Task Pre par er Ċ import Ġcom . inter shop . gradle . ic m . docker . utils . sol rc loud . Task Pre par er Ġas ĠSolr Task Pre par er Ċ import Ġcom . inter shop . gradle . ic m . docker . utils . mss ql . Task Pre par er Ġas ĠM SS QL Task Pre par er Ċ import Ġcom . inter shop . gradle . ic m . docker . utils . oracle . Task Pre par er Ġas ĠOracle Task Pre par er Ċ Ċ /** Ċ Ġ* ĠMain Ġplugin Ġclass Ġof Ġthe Ġproject Ġplugin . Ċ Ġ*/ Ċ open Ġclass ĠI CMD ocker Plugin : ĠPlugin < Project > Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠBUILD _ MAIN _ IMAGE Ġ= Ġ" build Main Image " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠBUILD _ TEST _ IMAGE Ġ= Ġ" build Test Image " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠBUILD _ I MAGES Ġ= Ġ" build Images " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠP USH _ I MAGES Ġ= Ġ" push Images " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠWRITE _ IMAGE _ PROPERTIES Ġ= Ġ" write Image Properties " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠBUILD _ IMG _ REGISTRY Ġ= Ġ" ish Build Image Registry " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠGROUP _ CONTAINER Ġ= Ġ" ic m Ġcontainer " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠGROUP _ SERVER BUILD Ġ= Ġ" ic m Ġserver Ġbuild " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMain Ġmethod Ġof Ġa Ġplugin . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġproject Ġtarget Ġproject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġapply ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( project . root Project ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" IC M ĠDocker Ġbuild Ġplugin Ġwill Ġbe Ġinitialized ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextension Ġ= Ġextensions . findBy Type ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInter shop Docker Extension :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ?: Ġextensions . create (" inter shop _ docker ", ĠInter shop Docker Extension :: class . java , Ġproject ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġplugins . apply ( Docker Remote Api Plugin :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnetwork Tasks Ġ= ĠNetwork Pre par er ( project , Ġextension ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm ss ql Tasks Ġ= ĠM SS QL Pre par er ( project , Ġnetwork Tasks . create Network Task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoracle Tasks Ġ= ĠOracle Pre par er ( project , Ġnetwork Tasks . create Network Task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmail Srv Task Ġ= ĠMail Srv Pre par er ( project , Ġnetwork Tasks . create Network Task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsol rc loud Pre par er Ġ= ĠSolr Cloud Pre par er ( project , Ġnetwork Tasks ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweb Server Tasks Ġ= ĠWeb Server Pre par er ( project , Ġnetwork Tasks ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtasks . named (" db Prepare "). configure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . must Run After ( mss ql Tasks . start Task ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . must Run After ( oracle Tasks . start Task ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch ( ex : ĠUnknown Task Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . logger . info (" No Ġdb Prepare Ġtask Ġavailable !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcc Task Ġ= Ġtasks . register (" container Clean ") Ġ{ task Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . group Ġ= ĠGROUP _ CONTAINER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . description Ġ= Ġ" Remov es Ġall Ġavailable Ġcontainer Ġfrom ĠDocker " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . depends On ( Ġnetwork Tasks . remove Network Task , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ss ql Tasks . remove Task , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmail Srv Task . remove Task , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweb Server Tasks . remove Task , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoracle Tasks . remove Task , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsol rc loud Pre par er . remove Task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Tasks . remove Network Task . configure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . must Run After ( mss ql Tasks . remove Task , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmail Srv Task . remove Task , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweb Server Tasks . remove Task , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoracle Tasks . remove Task , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsol rc loud Pre par er . remove Task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgradle . shared Services . register If Absent ( BUILD _ IMG _ REGISTRY , ĠBuild Image Registry :: class . java ) Ġ{ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate IC M Properties Gen Task ( project ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Image Tasks ( project , Ġextension ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Environment Task ( project , Ġextension ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtasks . named (" publish "). configure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . final ized By ( cc Task ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch ( ex : ĠUnknown Task Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Publish Ġtask Ġis Ġnot Ġavailable .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate IC M Properties Gen Task ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . tasks . register (" generate IC M Props ", ĠGen IC M Properties :: class . java ). configure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . group Ġ= Ġ" ic m Ġproject Ġsetup " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . description Ġ= Ġ" Gener ates Ġan Ġic m Ġproperties Ġfile ." ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġproject . tasks . register (" show IC M AS Config ", ĠShow IC M AS Config :: class . java ). configure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . group Ġ= Ġ" ic m Ġproject Ġsetup " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . description Ġ= Ġ" Shows Ġa Ġspecial Ġpart Ġof Ġthe Ġconfiguration Ġfor Ġlocal Ġapplication Ġserver Ġdevelopment " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Environment Task ( project : ĠProject , Ġextension : ĠInter shop Docker Extension ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Str Ġ= Ġextension . development Config . getConfig Property ( Configuration . C OT AIN ER _ ENV _ PROP ) ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġlist Str . split (",") ĊĊĠĠĠĠĠĠĠ Ġproject . tasks . register (" start Env ") Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . group Ġ= ĠGROUP _ CONTAINER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . description Ġ= Ġ" Start Ġall Ġcontainer Ġfrom ĠDocker Ġfor Ġthe Ġselected Ġenvironment " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( list . contains (" mail ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . depends On (" start ${ Mail Task Pre par er . ext Name }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( list . contains (" webserver ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . depends On (" start ${ Web Task Pre par er . TASK _ EXT _ SERVER }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( list . contains (" solr ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . depends On (" start ${ Solr Task Pre par er . TASK _ EXT _ SERVER }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( list . contains (" mss ql ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . depends On (" start ${ MSS QL Task Pre par er . ext Name }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( list . contains (" oracle ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . depends On (" start ${ Oracle Task Pre par er . ext Name }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproject . tasks . register (" stop Env ") Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . group Ġ= ĠGROUP _ CONTAINER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . description Ġ= Ġ" Stops Ġall Ġcontainer Ġfrom ĠDocker Ġfor Ġthe Ġselected Ġenvironment " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( list . contains (" mail ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . depends On (" stop ${ Mail Task Pre par er . ext Name }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( list . contains (" webserver ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . depends On (" stop ${ Web Task Pre par er . TASK _ EXT _ SERVER }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( list . contains (" solr ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . depends On (" stop ${ Solr Task Pre par er . TASK _ EXT _ SERVER }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( list . contains (" mss ql ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . depends On (" stop ${ MSS QL Task Pre par er . ext Name }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( list . contains (" oracle ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . depends On (" stop ${ Oracle Task Pre par er . ext Name }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Image Tasks ( project : ĠProject , Ġextension : ĠInter shop Docker Extension ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( extension ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimg Task Ġ= Ġcreate Image Task ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject , Ġimages . ic m setup , Ġimage Build , Ġimage Build . images . main Image , ĠBUILD _ MAIN _ IMAGE ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġimg Task . configure Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . description Ġ= Ġ" Creates Ġthe Ġmain Ġimage Ġwith Ġan Ġapp server ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtest Img Task Ġ= Ġcreate Image Task ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject , Ġimages . ic m setup , Ġimage Build , Ġimage Build . images . test Image , ĠBUILD _ TEST _ IMAGE ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Img Task . configure Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . description Ġ= Ġ" Creates Ġthe Ġtest Ġimage Ġof Ġan Ġapp server ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . build Args . put ( Ġ" BASE _ IMAGE ", Ġproject . provider Ġ{ Ġimg Task . get (). images . get (). first () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . depends On ( img Task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . tasks . register ( BUILD _ I MAGES ) Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . group Ġ= Ġ" build " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . description Ġ= Ġ" Build Ġall Ġconfigured Ġimages " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . depends On ( img Task , Ġtest Img Task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpush Ġ= Ġproject . tasks . register ( PUSH _ I MAGES , ĠPush Images :: class . java ) Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . depends On ( img Task , Ġtest Img Task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcheck Task Ġ= Ġproject . tasks . named (" check ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpush . configure Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . must Run After ( check Task ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠUnknown Task Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . logger . info (" Task Ġcheck Ġis Ġnot Ġavailable !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . tasks . register ( WRITE _ IMAGE _ PROPERTIES , ĠImage Properties :: class . java ) Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . depends On ( push ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Image Task ( project : ĠProject , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Img : ĠProperty < String >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg Build : ĠProject Configuration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg Conf : ĠImage Configuration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Name : ĠString ): ĠTask Provider < Build Image > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . tasks . register ( task Name , ĠBuild Image :: class . java Ġ) Ġ{ Ġbuild Image Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Image . group Ġ= Ġ" ic m Ġimage Ġbuild " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Image . enabled . set ( img Conf . enabled Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Image . dockerfile . set ( img Conf . dockerfile Provider ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Image . src Files . from ( img Conf . src Files ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Image . dirname . set ( img Conf . docker Build Dir Provider ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure L ables ( build Image . labels , Ġproject , Ġimg Build ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( build Image . labels ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" description ", Ġproject . provider Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ img Build . base Description . get ()} Ġ- Ġ${ img Conf . description . get () }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Image . build Args . put ( Ġ" SETUP _ IMAGE ", Ġsetup Img Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Image . images . set ( Ġcalculate Image Tag ( project , Ġimg Build , Ġimg Conf ) Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure L ables ( property : ĠMap Property < String , String >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject : ĠProject , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Build : ĠProject Configuration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproperty . put (" license ", Ġimage Build . license Provider ) ĊĠĠĠĠĠĠĠ Ġproperty . put (" maintainer ", Ġimage Build . maintainer Provider ) ĊĠĠĠĠĠĠĠ Ġproperty . put (" created ", Ġimage Build . created Provider ) ĊĠĠĠĠĠĠĠ Ġproperty . put (" version ", Ġproject . provider Ġ{ Ġproject . version . toString () Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcalculate Image Tag ( project : ĠProject , Ġpr j conf : ĠProject Configuration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg Conf : ĠImage Configuration ): ĠProvider < List < String >> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . provider Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ext Ġ= Ġimg Conf . name Extension . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Complete Ġ= Ġif ( name Ext . isNotEmpty ()) Ġ{ Ġ"- $ name Ext " Ġ} Ġelse Ġ{ Ġ"" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutable ListOf ("${ prj conf . base Image Name . get ()} ${ name Complete }:${ project . version }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ Ċ } Ċ