package Ġcom . netflix . spin n aker . ke el . slack . handlers Ċ Ċ import Ġcom . netflix . spin n aker . ke el . lifecycle . Lifecycle EventType Ċ import Ġcom . netflix . spin n aker . ke el . notifications . Notification Type Ċ import Ġcom . netflix . spin n aker . ke el . slack . Slack Lifecycle Notification Ċ import Ġcom . netflix . spin n aker . ke el . slack . Slack Service Ċ import Ġcom . slack . api . model . kotlin _ extension . block . with Blocks Ċ import Ġorg . apache . logging . log 4 j . util . Strings Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . beans . factory . annotation . Value Ċ import Ġorg . springframework . stereotype . Component Ċ Ċ /** Ċ Ġ* ĠSends Ġnotification Ġfor Ġa Ġlifecycle Ġevent , Ġlike Ġb ake Ġ/ Ġbuild Ġfailures Ċ Ġ*/ Ċ @ Component Ċ class ĠLifecycle Event Notification Handler Ġ( ĊĠ Ġprivate Ġval Ġslack Service : ĠSlack Service , ĊĠ Ġ@ Value ("\ ${ spin n aker . baseUrl }") Ġprivate Ġval Ġsp inn aker BaseUrl : ĠString , ĊĠ Ġprivate Ġval Ġgit Data Generator : ĠGit Data Generator Ċ ) Ġ: ĠSlack Notification Handler < Slack Lifecycle Notification > Ġ{ ĊĊĠ Ġoverride Ġval Ġtype : ĠNotification Type Ġ= ĠNotification Type . LI FE CYCLE _ EVENT ĊĊĠ Ġprivate Ġval Ġlog Ġby Ġlazy Ġ{ ĠLoggerFactory . getLogger ( java Class ) Ġ} ĊĊĠ Ġoverride Ġfun ĠsendMessage ( notification : ĠSlack Lifecycle Notification , Ġchannel : ĠString ) Ġ{ ĊĠĠĠ Ġlog . debug (" Sending Ġlifecycle Ġevent Ġnotification Ġfor Ġapplication Ġ${ notification . application }") ĊĊĠĠĠ Ġwith ( notification ) Ġ{ ĊĠĠĠĠĠ Ġval ĠimageUrl Ġ= Ġwhen Ġ( eventType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠLifecycle EventType . BA KE Ġ-> Ġ" https :// raw . githubusercontent . com / g com stock / managed . delivery / master / src / icons / b ake _ fail . png " ĊĠĠĠĠĠĠĠĠĠ ĠLifecycle EventType . BUILD Ġ-> Ġ" https :// raw . githubusercontent . com / g com stock / managed . delivery / master / src / icons / build _ fail . png " ĊĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠStrings . EMPTY ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġval Ġartifact Url Ġ= Ġ"$ spin n aker BaseUrl /#/ applications /${ application }/ environments /${ artifact . reference }/${ artifact . version }" ĊĊĠĠĠĠĠ Ġval Ġblocks Ġ= Ġwith Blocks Ġ{ ĊĠĠĠĠĠĠĠ Ġheader Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġtext ("${ eventType . name } Ġfailed ", Ġemoji Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsection Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġwith ( artifact ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( build Metadata Ġ!= Ġnull Ġ&& Ġgit Metadata Ġ!= Ġnull Ġ&& Ġgit Metadata !!. commit Info Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarkdown Text ("* Version :* Ġ<$ artifact Url | # ${ build Metadata !!. number }> Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" by Ġ@ ${ git Metadata !!. author }\ n Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ git Metadata !!. commit Info ?. message }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccess ory Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage ( imageUrl Ġ= ĠimageUrl , Ġalt Text Ġ= Ġ" lifecycle ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . debug (" either Ġgit Ġmetadata Ġor Ġbuild Ġmetadata Ġis Ġnull Ġwhen Ġtrying Ġto Ġsend ĠSlack Lifecycle Notification Ġfor Ġapplication Ġ$ application ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsection Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġgit Data Generator . generate Data ( this , Ġapplication , Ġartifact ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġslack Service . send Slack Notification ( channel , Ġblocks , Ġapplication Ġ= Ġapplication , Ġtype Ġ= Ġtype ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ Ċ } Ċ