package Ġru . y oom oney . gradle . plugins . release Ċ Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ import Ġru . y oom oney . gradle . plugins . release . PullRequest Info Provider . Companion . from Name Ċ import Ġru . y oom oney . gradle . plugins . release . changelog . Check Change Log Task Ċ import Ġru . y oom oney . gradle . plugins . release . git . Git Settings Ċ Ċ /** Ċ Ġ* ĠÐŁ Ð» Ð°Ð³ Ð¸Ð½ ĠÐ´Ð»Ñı ĠÑĢ ÐµÐ»Ð¸ Ð· Ð° ĠÐ° ÑĢ ÑĤÐµ ÑĦ Ð°Ðº ÑĤ Ð¾Ð² Ċ Ġ*/ Ċ class ĠRelease Plugin Ġ: ĠPlugin < Project > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . extensions . create (" release Settings ", ĠRelease Extension :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġproject . tasks . create (" check Change log ", ĠCheck Change Log Task :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . group Ġ= Ġ" verification " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . description Ġ= Ġ" Check Ġthat Ġchangelog Ġhas Ġnext Ġversion Ġdescription " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproject . tasks . create (" pre Release Rotate Version ", ĠPre Release Rotate Version Task :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . group Ġ= Ġ" release " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . description Ġ= Ġ" Update Ġversion Ġin Ġgradle . property , Ġrotate ĠCHANGELOG . md " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproject . tasks . create (" check Release ", ĠCheck Release Task :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . group Ġ= Ġ" release " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . description Ġ= Ġ" Fail Ġbuild Ġif Ġpush Ġun successful Ġor Ġtag Ġalready Ġexist " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproject . tasks . create (" pre Release Check Executed ", ĠCheck Pre Release Executed Task :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . group Ġ= Ġ" release " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . description Ġ= Ġ" Fail Ġbuild Ġif Ġno Ġpre Release Ġwas Ġexecuted " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproject . tasks . create (" pre Release ", ĠPre Release Commit Task :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . group Ġ= Ġ" release " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . description Ġ= Ġ" Commit Ġall Ġchanges , Ġadd Ġtag Ġwith Ġversion " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproject . tasks . create (" release ", ĠPost Release Task :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . group Ġ= Ġ" release " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . description Ġ= Ġ" Execute Ġuser Ġrelease Ġtasks , Ġappend Ġmarkers Ġto Ġchangelog ," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġup Ġgradle . property Ġpatch Ġversion , Ġappend Ġsnapshot Ġto Ġversion , Ġgit Ġpush " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġafter Evaluate ( project ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġafter Evaluate ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . after Evaluate Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Release Task Order ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Pre Release Task Order ( it ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrelease Extension Ġ= Ġproject . extensions . getBy Type ( Release Extension :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgit Settings Ġ= ĠGit Settings ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġrelease Extension . git Email !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġrelease Extension . git Username !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġssh Key Path Ġ= Ġrelease Extension . path To Git Private Ssh Key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassphrase Ssh Key Ġ= Ġrelease Extension . pass phrase To Git Private Ssh Key ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcheck Release Task Ġ= Ġit . tasks . get ByName (" check Release ") Ġas ĠCheck Release Task ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Release Task . git Settings Ġ= Ġgit Settings ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpost Release Task Ġ= Ġit . tasks . get ByName (" release ") Ġas ĠPost Release Task ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Release Task . git Settings Ġ= Ġgit Settings ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpre Release Rotate Version Task Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . tasks . get ByName (" pre Release Rotate Version ") Ġas ĠPre Release Rotate Version Task ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpre Release Rotate Version Task . git Settings Ġ= Ġgit Settings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpre Release Rotate Version Task . pull Request Link Settings Ġ= ĠPull Request Link Settings ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpull Request Link In Change log Enabled Ġ= Ġrelease Extension . add PullRequest Link To Change log , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpull Request Info Provider Ġ= Ġfrom Name ( release Extension . pull Request Info Provider ) !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbit bucket Api Token Ġ= Ġrelease Extension . bitbucket Api Token , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgithub AccessToken Ġ= Ġrelease Extension . github AccessToken ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpre Release Commit Task Ġ= Ġit . tasks . get ByName (" pre Release ") Ġas ĠPre Release Commit Task ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpre Release Commit Task . git Settings Ġ= Ġgit Settings ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcheck Change Log Task Ġ= Ġit . tasks . get ByName (" check Change log ") Ġas ĠCheck Change Log Task ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Change Log Task . changelog Required Ġ= Ġrelease Extension . changelog Required ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐ¡ ÑĤ ÑĢÐ¾ Ð¸Ð¼ ĠÐ· Ð°Ð² Ð¸Ñģ Ð¸Ð¼Ð¾ÑģÑĤ ÑĮ ĠÐ´Ð»Ñı ĠÐ¿ Ð¾ÑĢ Ñı Ð´ ÐºÐ° ĠÐ²ÑĭÐ¿Ð¾Ð»Ð½ ÐµÐ½Ð¸Ñı ĠÐ² ĠÑĦ Ð°Ð· Ðµ ĠRelease ĊĠĠĠĠ Ġ* Ġbuild Ġ-> Ġpublic Ġ-> Ġuser Task .. N Ġ-> Ġpre Release Check Executed -> Ġrelease ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġconfig Release Task Order ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrelease Tasks Ġ= Ġproject . extensions . getBy Type ( Release Extension :: class . java ). release Tasks ĊĠĠĠĠĠĠĠ Ġif Ġ( release Tasks . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 Ġuntil Ġrelease Tasks . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . tasks . get ByName ( release Tasks [ i ]). depends On ( release Tasks [ i Ġ- Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . tasks . get ByName (" pre Release Check Executed "). depends On ( release Tasks . last ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġproject . tasks . get ByName (" release "). depends On (" pre Release Check Executed ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÐ¡ ÑĤ ÑĢÐ¾ Ð¸Ð¼ ĠÐ· Ð°Ð² Ð¸Ñģ Ð¸Ð¼Ð¾ÑģÑĤ ÑĮ ĠÐ´Ð»Ñı ĠÐ¿ Ð¾ÑĢ Ñı Ð´ ÐºÐ° ĠÐ²ÑĭÐ¿Ð¾Ð»Ð½ ÐµÐ½Ð¸Ñı ĠÐ² ĠÑĦ Ð°Ð· Ðµ Ġpre Release ĊĠĠĠĠ Ġ* Ġcheck Change log Ġ-> Ġpre Release Rotate Version -> Ġuser Task 1 Ġ-> Ġuser Task 2 Ġ-> Ġuser Task .. N Ġ-> Ġpre Release ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġconfig Pre Release Task Order ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpre Release Tasks Ġ= Ġproject . extensions . getBy Type ( Release Extension :: class . java ). pre Release Tasks ĊĠĠĠĠĠĠĠ Ġif Ġ( pre Release Tasks . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . tasks . get ByName ( pre Release Tasks [ 0 ]). depends On (" pre Release Rotate Version ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 Ġuntil Ġpre Release Tasks . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . tasks . get ByName ( pre Release Tasks [ i ]). depends On ( pre Release Tasks [ i Ġ- Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . tasks . get ByName (" pre Release "). depends On ( pre Release Tasks . last ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . tasks . get ByName (" pre Release "). depends On (" check Release ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġproject . tasks . get ByName (" pre Release Rotate Version "). depends On (" check Change log ") ĊĊĠĠĠĠĠĠĠ Ġproject . tasks . get ByName (" check Release "). depends On (" pre Release Rotate Version ") ĊĠĠĠ Ġ} Ċ } Ċ