import Ġcom . bm us ch ko . gradle . docker . tasks . image . Docker Build Image Ċ import Ġcom . bm us ch ko . gradle . docker . tasks . image . Docker Push Image Ċ Ċ val Ġkotlin Version Ġ= Ġ" 1 . 2 . 7 0 " Ċ Ċ plugins Ġ{ ĊĠĠĠ Ġkotlin (" jvm "). version (" 1 . 2 . 7 0 ") ĊĠĠĠ Ġid (" com . bm us ch ko . docker - remote - api "). version (" 4 . 4 . 0 ") ĊĠĠĠ Ġ` java - library ` ĊĠĠĠ Ġid (" com . atlassian . performance . tools . gradle - release "). version (" 0 . 7 . 1 ") Ċ } Ċ Ċ configurations . all Ġ{ ĊĠĠĠ Ġresolution Strategy Ġ{ ĊĠĠĠĠĠĠĠ Ġactivate Dependency Lock ing () ĊĠĠĠĠĠĠĠ Ġfail On Version Conflict () ĊĠĠĠĠĠĠĠ Ġeach Dependency Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( requested . module . toString ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" org . jetbrains : annotations " Ġ-> Ġuse Version (" 1 3 . 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" org . slf 4 j : slf 4 j - api " Ġ-> Ġuse Version (" 1 . 7 . 2 5 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" net . java . dev . j na : j na " Ġ-> Ġuse Version (" 5 . 5 . 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( requested . group ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" org . jetbrains . kotlin " Ġ-> Ġuse Version ( kotlin Version ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ dependencies Ġ{ ĊĠĠĠ Ġimplementation (" org . jetbrains . kotlin : kotlin - stdlib - jdk 8 :$ kotlin Version ") ĊĠĠĠ Ġapi (" org . test containers : test containers : 1 . 1 5 . 1 ") ĊĠĠĠ Ġlog 4 j ( ĊĠĠĠĠĠĠĠ Ġ" api ", ĊĠĠĠĠĠĠĠ Ġ" core ", ĊĠĠĠĠĠĠĠ Ġ" slf 4 j - impl " ĊĠĠĠ Ġ). forEach Ġ{ Ġimplementation ( it ) Ġ} ĊĠĠĠ Ġtest Compile (" com . atlassian . performance . tools : ssh :[ 2 . 0 . 0 , 3 . 0 . 0 )") ĊĠĠĠ Ġtest Compile (" junit : junit : 4 . 1 2 ") ĊĠĠĠ Ġtest Compile (" org . assertj : assertj - core : 3 . 1 1 . 1 ") Ċ } Ċ Ċ fun Ġlog 4 j ( ĊĠĠĠ Ġvar arg Ġmodules : ĠString Ċ ): ĠList < String > Ġ= Ġmodules . map Ġ{ Ġmodule Ġ-> ĊĠĠĠ Ġ" org . apache . logging . log 4 j : log 4 j -$ module : 2 . 1 0 . 0 " Ċ } Ċ Ċ tasks . get ByName (" wrapper ", ĠWrapper :: class ). apply Ġ{ ĊĠĠĠ Ġgradle Version Ġ= Ġ" 5 . 0 " ĊĠĠĠ Ġdistribution Type Ġ= ĠWrapper . Distribution Type . ALL Ċ } Ċ Ċ val Ġssh Docker Image Name Ġ= Ġ" atlassian / ssh - ubuntu :${ project . version }" Ċ Ċ val Ġbuild Docker Ġ= Ġtask < Docker Build Image >(" build Docker ") Ġ{ ĊĠĠĠ Ġinput Dir . set ( file (" docker ")) ĊĠĠĠ Ġtags . add ( ssh Docker Image Name ) Ċ } Ċ Ċ val Ġpush Docker Ġ= Ġtask < Docker Push Image >(" push Docker ") Ġ{ ĊĠĠĠ Ġdepends On ( build Docker ) ĊĠĠĠ Ġthis . image Name . set ( ssh Docker Image Name ) ĊĠĠĠ Ġthis . registry Credentials . username . set ( System . getenv (" DOCKER _ USERNAME ")) ĊĠĠĠ Ġthis . registry Credentials . password . set ( System . getenv (" DOCKER _ PASSWORD ")) Ċ } Ċ Ċ val Ġgenerate Properties Ġ= Ġtask < Task >(" generate Properties ") Ġ{ ĊĠĠĠ Ġdepends On ( tasks [" process Resources "]) ĊĠĠĠ Ġdo Last Ġ{ ĊĠĠĠĠĠĠĠ ĠFile ("$ build Dir / resources / main / app . properties "). buffered Writer (). use Ġ{ Ġwriter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of (" version " Ġto Ġproject . version . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Properties () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. store ( writer , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ tasks [" publish "]. depends On ( push Docker ) Ċ tasks [" classes "]. depends On ( generate Properties ) Ċ tasks [" test "]. depends On ( build Docker ) Ċ