/* ĊĠĠ ĠCopyright Ġ 2 0 1 7 - 2 0 2 0 ĠChar les ĠK orn . ĊĊĠĠ Ġ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 Ġb ate ct . execution . model . steps . runners Ċ Ċ import Ġb ate ct . config . Build Image Ċ import Ġb ate ct . config . EnvironmentVariable Reference Ċ import Ġb ate ct . config . Literal Value Ċ import Ġb ate ct . config . Variable Expression Ċ import Ġb ate ct . config . Variable Expression Evaluation Exception Ċ import Ġb ate ct . docker . Docker Image Ċ import Ġb ate ct . docker . Image Build FailedException Ċ import Ġb ate ct . docker . client . Docker Image Build Progress Ċ import Ġb ate ct . docker . client . Docker Images Client Ċ import Ġb ate ct . execution . Cancellation Context Ċ import Ġb ate ct . execution . Cleanup Option Ċ import Ġb ate ct . execution . Config Variables Provider Ċ import Ġb ate ct . execution . Run Options Ċ import Ġb ate ct . execution . model . events . Image Build Failed Event Ċ import Ġb ate ct . execution . model . events . Image Build Progress Event Ċ import Ġb ate ct . execution . model . events . Image Built Event Ċ import Ġb ate ct . execution . model . events . Task Event Sink Ċ import Ġb ate ct . execution . model . steps . Build Image Step Ċ import Ġb ate ct . os . System Info Ċ import Ġb ate ct . os . proxies . Proxy Environment Variables Provider Ċ import Ġb ate ct . test utils . create ForEach Test Ċ import Ġb ate ct . test utils . on Ċ import Ġb ate ct . ui . container io . Container IO Streaming Options Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . any Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . do Return Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . do Throw Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . eq Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . verify Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . wh enever Ċ import Ġok io . Sink Ċ import Ġorg . spe k framework . spe k 2 . Spe k Ċ import Ġorg . spe k framework . spe k 2 . style . specification . describe Ċ import Ġjava . nio . file . Paths Ċ Ċ object ĠBuild Image Step Runner Spec Ġ: ĠSpe k ({ ĊĠĠĠ Ġdescribe (" running Ġa Ġ' build Ġimage ' Ġstep ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuild Directory Ġ= ĠPaths . get ("/ some - build - dir ") ĊĠĠĠĠĠĠĠ Ġval Ġbuild Args Ġ= Ġmap Of (" some _ arg " Ġto ĠLiteral Value (" some _ value "), Ġ" SO ME _ PROXY _ CONFIG " Ġto ĠLiteral Value (" over ridden "), Ġ" SO ME _ HOST _ VAR " Ġto ĠEnvironment Variable Reference (" SO ME _ ENV _ VAR ")) ĊĠĠĠĠĠĠĠ Ġval Ġdocker filePath Ġ= Ġ" some - Dockerfile - path " ĊĠĠĠĠĠĠĠ Ġval Ġimage Tags Ġ= Ġset Of (" some _ image _ tag ", Ġ" some _ other _ image _ tag ") ĊĠĠĠĠĠĠĠ Ġval Ġimage Source Ġ= ĠBuild Image ( build Directory , Ġbuild Args , Ġdocker filePath ) ĊĠĠĠĠĠĠĠ Ġval Ġstep Ġ= ĠBuild Image Step ( image Source , Ġimage Tags ) ĊĠĠĠĠĠĠĠ Ġval Ġoutput Sink Ġby Ġcreate ForEach Test Ġ{ Ġmock < Sink >() Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġimages Client Ġby Ġcreate ForEach Test Ġ{ Ġmock < Docker Images Client >() Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġproxy Variables Ġ= Ġmap Of (" SO ME _ PROXY _ CONFIG " Ġto Ġ" some _ proxy ", Ġ" SO ME _ OTHER _ PROXY _ CONFIG " Ġto Ġ" some _ other _ value ") ĊĠĠĠĠĠĠĠ Ġval Ġproxy Environment Variables Provider Ġ= Ġmock < Proxy Environment Variables Provider > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġget Proxy Environment Variables ( empty Set ()) Ġ} Ġdo Return Ġproxy Variables ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġconfig Variables Provider Ġ= Ġmock < Config Variables Provider > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġconfig Variable Values Ġ} Ġdo Return Ġempty Map () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcancellation Context Ġby Ġcreate ForEach Test Ġ{ Ġmock < Cancellation Context >() Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġio Streaming Options Ġby Ġcreate ForEach Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock < Container IO Streaming Options > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġstdout For Image Build ( image Source ) Ġ} Ġdo Return Ġoutput Sink ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrun Options Ġ= ĠRun Options (" some - task ", Ġempty List (), ĠCleanup Option . Cleanup , ĠCleanup Option . Cleanup , Ġtrue , Ġempty Map ()) ĊĠĠĠĠĠĠĠ Ġval Ġsystem Info Ġ= Ġmock < System Info > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġline Separator Ġ} Ġdo Return Ġ" SYSTEM _ LINE _ SEPARATOR " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġhost Environment Variables Ġ= Ġmap Of (" SO ME _ ENV _ VAR " Ġto Ġ" some Ġenv Ġvar Ġvalue ") ĊĠĠĠĠĠĠĠ Ġval Ġevent Sink Ġby Ġcreate ForEach Test Ġ{ Ġmock < Task Event Sink >() Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrunner Ġby Ġcreate ForEach Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBuild Image Step Runner ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimages Client , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproxy Environment Variables Provider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Variables Provider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancellation Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġio Streaming Options , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Options , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsystem Info , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhost Environment Variables ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdescribe (" when Ġbuilding Ġthe Ġimage Ġsucceeds ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon (" and Ġpropag ating Ġproxy - related Ġenvironment Ġvariables Ġis Ġenabled ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Ġ= ĠDocker Image (" some - image ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdate 1 Ġ= ĠDocker Image Build Progress ( 1 , Ġ 2 , Ġ" First Ġstep ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdate 2 Ġ= ĠDocker Image Build Progress ( 2 , Ġ 2 , Ġ" Second Ġstep ", Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbeforeEach Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( images Client . build ( eq ( build Directory ), Ġany (), Ġeq ( docker filePath ), Ġeq ( image Tags ), Ġeq ( output Sink ), Ġeq ( c ancellation Context ), Ġany ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Ġ{ Ġinvocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġon Status Update Ġ= Ġinvocation . arguments [ 6 ] Ġas Ġ( Docker Image Build Progress ) Ġ-> ĠUnit ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Status Update ( update 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Status Update ( update 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrunner . run ( step , Ġevent Sink ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" passes Ġthe Ġimage Ġbuild Ġargs Ġprovided Ġby Ġthe Ġuser Ġas Ġwell Ġas Ġany Ġproxy - related Ġbuild Ġargs , Ġwith Ġuser - provided Ġbuild Ġargs Ġoverriding Ġthe Ġgenerated Ġproxy - related Ġbuild Ġargs , Ġand Ġwith Ġany Ġenvironment Ġvariable Ġreferences Ġresolved ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Args Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" some _ arg " Ġto Ġ" some _ value ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" SO ME _ PROXY _ CONFIG " Ġto Ġ" over ridden ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" SO ME _ OTHER _ PROXY _ CONFIG " Ġto Ġ" some _ other _ value ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" SO ME _ HOST _ VAR " Ġto Ġ" some Ġenv Ġvar Ġvalue " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( images Client ). build ( any (), Ġeq ( expected Args ), Ġany (), Ġany (), Ġany (), Ġany (), Ġany ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" em its Ġa Ġ' image Ġbuild Ġprogress ' Ġevent Ġfor Ġeach Ġupdate Ġreceived Ġfrom ĠDocker ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( event Sink ). post Event ( Image Build Progress Event ( image Source , Ġupdate 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( event Sink ). post Event ( Image Build Progress Event ( image Source , Ġupdate 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" em its Ġa Ġ' image Ġbuilt ' Ġevent ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( event Sink ). post Event ( Image Built Event ( image Source , Ġimage )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġon (" and Ġpropag ating Ġproxy - related Ġenvironment Ġvariables Ġis Ġdisabled ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Ġ= ĠDocker Image (" some - image ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrun Options With Proxy EnvironmentVariable Propagation Disabled Ġ= Ġrun Options . copy ( propagate Proxy Environment Variables Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrunner With Proxy EnvironmentVariable Propagation Disabled Ġby Ġcreate ForEach Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBuild Image Step Runner ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimages Client , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproxy Environment Variables Provider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Variables Provider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancellation Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġio Streaming Options , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Options With Proxy EnvironmentVariable Propagation Disabled , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsystem Info , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhost Environment Variables ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbeforeEach Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( images Client . build ( eq ( build Directory ), Ġany (), Ġeq ( docker filePath ), Ġeq ( image Tags ), Ġeq ( output Sink ), Ġeq ( c ancellation Context ), Ġany ())). thenReturn ( image ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrunner With Proxy EnvironmentVariable Propagation Disabled . run ( step , Ġevent Sink ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" does Ġnot Ġpass Ġthe Ġproxy - related Ġenvironment Ġvariables Ġas Ġimage Ġbuild Ġarguments , Ġbut Ġdoes Ġstill Ġpass Ġthe Ġuser - provided Ġbuild Ġargs Ġwith Ġany Ġenvironment Ġvariable Ġreferences Ġresolved ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Args Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" some _ arg " Ġto Ġ" some _ value ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" SO ME _ PROXY _ CONFIG " Ġto Ġ" over ridden ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" SO ME _ HOST _ VAR " Ġto Ġ" some Ġenv Ġvar Ġvalue " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( images Client ). build ( any (), Ġeq ( expected Args ), Ġany (), Ġany (), Ġany (), Ġany (), Ġany ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" em its Ġa Ġ' image Ġbuilt ' Ġevent ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( event Sink ). post Event ( Image Built Event ( image Source , Ġimage )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġon (" when Ġbuilding Ġthe Ġimage Ġfails ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠbeforeEach Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( images Client . build ( eq ( build Directory ), Ġany (), Ġeq ( docker filePath ), Ġeq ( image Tags ), Ġeq ( output Sink ), Ġeq ( c ancellation Context ), Ġany ())). then Throw ( Image Build FailedException (" Something Ġwent Ġwrong .\ n More Ġdetails Ġon Ġthis Ġline .")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrunner . run ( step , Ġevent Sink ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" em its Ġa Ġ' image Ġbuild Ġfailed ' Ġevent Ġwith Ġall Ġline Ġbreaks Ġreplaced Ġwith Ġthe Ġsystem Ġline Ġseparator ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( event Sink ). post Event ( Image Build Failed Event ( image Source , Ġ" Something Ġwent Ġwrong . SYSTEM _ LINE _ SEPAR AT ORM ore Ġdetails Ġon Ġthis Ġline .")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġon (" when Ġa Ġbuild Ġarg Ġis Ġan Ġinvalid Ġreference ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinvalid Reference Ġ= Ġmock < Variable Expression > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġevaluate ( host Environment Variables , Ġempty Map ()) Ġ} Ġdo Throw ĠVariable Expression Evaluation Exception (" Couldn 't Ġevaluate Ġexpression .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Source With Invalid Build Arg Reference Ġ= ĠBuild Image ( build Directory , Ġmap Of (" SO ME _ HOST _ VAR " Ġto Ġinvalid Reference ), Ġdocker filePath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstep With Invalid Build Arg Reference Ġ= ĠBuild Image Step ( image Source With Invalid Build Arg Reference , Ġimage Tags ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠbeforeEach Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrunner . run ( step With Invalid Build Arg Reference , Ġevent Sink ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" em its Ġa Ġ' image Ġbuild Ġfailed ' Ġevent ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( event Sink ). post Event ( Image Build Failed Event ( image Source With Invalid Build Arg Reference , Ġ" The Ġvalue Ġfor Ġthe Ġbuild Ġarg Ġ' SO ME _ HOST _ VAR ' Ġcannot Ġbe Ġevaluated : ĠCould n 't Ġevaluate Ġexpression .")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ