package Ġcom . av ito . cd Ċ Ċ import Ġcom . av ito . android . android App Extension Ċ import Ġcom . av ito . git . Git State Ċ import Ġcom . av ito . git . git State Ċ import Ġcom . av ito . utils . gradle . env Args Ċ import Ġcom . av ito . utils . logging . ci Logger Ċ import Ġcom . google . gson . Gson Ċ import Ġokhttp 3 . MediaType Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . RequestBody Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġorg . gradle . api . Default Task Ċ import Ġorg . gradle . api . tasks . Task Action Ċ import Ġjavax . inject . Inject Ċ Ċ // TODO Ġinternal ? Ċ Ċ const Ġval Ġupload Cd Build Result Task Name Ġ= Ġ" upload Cd Build Result " Ċ Ċ abstract Ġclass ĠUpload Cd Build Result Task Ċ @ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġui Test Configuration : ĠString , ĊĠĠĠ Ġprivate Ġval Ġuser : ĠString , ĊĠĠĠ Ġprivate Ġval Ġpassword : ĠString , ĊĠĠĠ Ġprivate Ġval Ġoutput : ĠC d Build Config . Output Descriptor Ċ ) Ġ: ĠDefault Task () Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġonly If Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! output . skip Upload ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġsend Build Output Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠUpload Cd Build Result Task Action ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgson Ġ= ĠPro viders . gson , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient Ġ= ĠPro viders . client ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Ġ= Ġuser , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġpassword , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger Ġ= ĠHttp Logging Interceptor . Logger Ġ{ Ġmessage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . ci Logger . info ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Task Action ĊĠĠĠ Ġfun Ġsend Cd Build Result () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgit State Ġ= Ġproject . git State Ġ{ Ġproject . ci Logger . info ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġsend Build Output . send ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Output Ġ= Ġproject . build Output . get (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcd Build Config Ġ= Ġproject . cd Build Config . get (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Code Ġ= Ġproject . android App Extension . default Config . version Code . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġteam city Url Ġ= Ġproject . env Args . build Url , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgit State Ġ= Ġgit State . get (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Test Configuration Ġ= Ġui Test Configuration ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠUpload Cd Build Result Task Action ( ĊĠĠĠ Ġprivate Ġval Ġclient : ĠOk HttpClient , ĊĠĠĠ Ġprivate Ġval Ġgson : ĠGson Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġsend ( ĊĠĠĠĠĠĠĠ Ġbuild Output : ĠBuild Output , ĊĠĠĠĠĠĠĠ Ġcd Build Config : ĠC d Build Config , ĊĠĠĠĠĠĠĠ Ġversion Code : ĠString , ĊĠĠĠĠĠĠĠ Ġteam city Url : ĠString , ĊĠĠĠĠĠĠĠ Ġgit State : ĠGit State , ĊĠĠĠĠĠĠĠ Ġui Test Configuration : ĠString ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest Results Ġ= Ġbuild Output . test Results [ ui Test Configuration ] ĊĠĠĠĠĠĠĠ Ġrequire NotNull ( test Results ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Need Ġ$ ui Test Configuration Ġtest Results Ġon Ġbuild Output " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠC d Build Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschema Version Ġ= Ġcd Build Config . schema Version , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Number Ġ= Ġversion Code , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Version Ġ= Ġcd Build Config . release Version , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġteam city Build Url Ġ= Ġteam city Url , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgit Branch Ġ= ĠC d Build Result . Git Branch ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġgit State . current Branch . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommit Hash Ġ= Ġgit State . current Branch . commit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Results Ġ= Ġtest Results , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġartifacts Ġ= Ġbuild Output . artifacts ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġcd Build Result Raw Ġ= Ġgson . toJson ( result ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ( cd Build Config . output Descriptor . path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put ( RequestBody . create ( MediaType . get (" application / json "), Ġcd Build Result Raw )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġclient . new Call ( request ). execute () ĊĠĠĠ Ġ} Ċ } Ċ