package Ġcom . vint ed . autom er ger . plugin Ċ Ċ import Ġh udson . FilePath Ċ import Ġh udson . model . Label Ċ import Ġh udson . model . Result . SUCCESS Ċ import Ġh udson . rem oting . Virtual Channel Ċ import Ġorg . eclipse . j git . api . Git Ċ import Ġorg . j enk in sci . plugins . workflow . cps . C ps Flow Definition Ċ import Ġorg . j enk in sci . plugins . workflow . job . Workflow Job Ċ import Ġorg . j enk in sci . rem oting . Role Checker Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . jv net . h udson . test . J enkins Rule Ċ import Ġjava . io . File Ċ Ċ class ĠGit Autom er ger Step Pipeline Test Ġ{ ĊĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval Ġjenkins Rule Ġ= ĠJenkins Rule () ĊĊĠĠĠ Ġlateinit Ġvar Ġproject : ĠWorkflow Job ĊĠĠĠ Ġlateinit Ġvar Ġworkspace : ĠFilePath ĊĠĠĠ Ġlateinit Ġvar Ġgit : ĠGit ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġproject Ġ= Ġjenkins Rule . create Project ( Workflow Job :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġworkspace Ġ= Ġjenkins Rule . instance . get Workspace For ( project ) !! ĊĊĠĠĠĠĠĠĠ Ġworkspace . act ( object Ġ: ĠFilePath . File Callable < Any > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcheck Roles ( checker : ĠRole Checker ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠSecurity Exception () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinvoke ( file : ĠFile , Ġchannel : ĠVirtual Channel ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit Ġ= ĠGit . init (). set Directory ( file ). call () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrun With Basic Config () Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . definition Ġ= ĠC ps Flow Definition ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit Autom er ger Ġlog Level : Ġ' INFO ', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmerge Rules : Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ[ path : Ġ' CHANGELOG . md ', Ġresolution : Ġ' MERGE _ NEW ER _ TOP '], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ[ path : Ġ' version ', Ġresolution : Ġ' KEEP _ NEW ER '], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetail Conflict Report : Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheckout From Remote : Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent (), Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbuild Ġ= Ġproject . schedule Build 2 ( 0 ) !!. get () ĊĊĠĠĠĠĠĠĠ Ġprintln ( build . log ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( SUCCESS , Ġbuild . result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrun Autom er ger In Another Node () Ġ{ ĊĠĠĠĠĠĠĠ Ġjenkins Rule . create Slave ( Label . parse Expression (" android ")) ĊĊĠĠĠĠĠĠĠ Ġproject . definition Ġ= ĠC ps Flow Definition ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode (" android ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsh Ġ" git Ġinit " ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgit Autom er ger Ġlog Level : Ġ' INFO ', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmerge Rules : Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ[ path : Ġ' CHANGELOG . md ', Ġresolution : Ġ' MERGE _ NEW ER _ TOP '], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ[ path : Ġ' version ', Ġresolution : Ġ' KEEP _ NEW ER '], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetail Conflict Report : Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheckout From Remote : Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent (), Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbuild Ġ= Ġproject . schedule Build 2 ( 0 ) !!. get () ĊĊĠĠĠĠĠĠĠ Ġprintln ( build . log ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( SUCCESS , Ġbuild . result ) ĊĠĠĠ Ġ} Ċ } Ċ