[{"data":1,"prerenderedAt":398},["ShallowReactive",2],{"Categories":3,"NavIndexCategoriesCountFooter":203,"content-\u002F2009\u002F04\u002F18\u002Fhudson-ci-testing-for-grails-from-git\u002F":204},[4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,68,70,71,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202],{"category":5},"System Administration",{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":27},"Software Development",{"category":5},{"category":5},{"category":5},{"category":5},{"category":27},{"category":27},{"category":5},{"category":5},{"category":5},{"category":27},{"category":5},{"category":5},{"category":5},{"category":27},{"category":27},{"category":27},{"category":27},{"category":5},{"category":5},{"category":5},{"category":27},{"category":27},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":27},{"category":5},{"category":5},{"category":27},{"category":27},{"category":27},{"category":27},{"category":5},{"category":27},{"category":27},{"category":67},"Drones & RC",{"category":69},"DIY Projects",{"category":67},{"category":72},"Photography",{"category":69},{"category":69},{"category":69},{"category":67},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":67},{"category":69},{"category":69},{"category":67},{"category":67},{"category":72},{"category":72},{"category":72},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":5},{"category":5},{"category":72},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":5},{"category":67},{"category":67},{"category":72},{"category":72},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":72},{"category":67},{"category":138},"3D Printing - Laser Cutting - CNC",{"category":138},{"category":138},{"category":138},{"category":138},{"category":138},{"category":138},{"category":138},{"category":138},{"category":138},{"category":138},{"category":138},{"category":5},{"category":138},{"category":27},{"category":27},{"category":138},{"category":138},{"category":72},{"category":158},"Photography,3D Printing - Laser Cutting - CNC",{"category":27},{"category":27},{"category":69},{"category":27},{"category":27},{"category":27},{"category":27},{"category":5},{"category":67},{"category":5},{"category":5},{"category":27},{"category":27},{"category":27},{"category":27},{"category":27},{"category":69},{"category":27},{"category":27},{"category":27},{"category":27},{"category":181},"Home Assistant",{"category":181},{"category":72},{"category":27},{"category":27},{"category":72},{"category":138},{"category":5},{"category":72},{"category":72},{"category":138},{"category":27},{"category":181},{"category":181},{"category":72},{"category":72},{"category":72},{"category":72},{"category":72},{"category":72},{"category":72},{"category":72},191,{"id":205,"title":206,"body":207,"category":27,"date":380,"description":381,"embedImage":382,"extension":383,"image":260,"intro":382,"meta":384,"navigation":385,"path":386,"seo":387,"series":382,"sitemap":388,"stem":389,"tags":390,"__hash__":397},"content\u002F2009\u002F04\u002F18\u002Fhudson-ci-testing-for-grails-from-git.md","Hudson CI testing for grails from git",{"type":208,"value":209,"toc":376},"minimark",[210,237,243,246,251,254,261,295,300,303,306,309,315,318,321,327,330,335,338,341,347,350,353,359,362,365,368,373],[211,212,213,214,224,225,230,231,236],"p",{},"After running continuous integration with ",[215,216,223],"a",{"href":217,"rel":218,"target":222},"http:\u002F\u002Fcontinuum.apache.org\u002F",[219,220,221],"nofollow","noopener","noreferer","_blank","continuum"," for a long while (which works great for maven projects) I decided to take a look at ",[215,226,229],{"href":227,"rel":228,"target":222},"https:\u002F\u002Fhudson.dev.java.net\u002F",[219,220,221],"Hudson",". It can also do maven - but seems to have a larger range of plugins available. Of interest to me was ",[215,232,235],{"href":233,"rel":234,"target":222},"http:\u002F\u002Fgrails.org",[219,220,221],"grails",".",[211,238,239],{},[240,241,242],"strong",{},"Installation",[211,244,245],{},"This was extremely simple - I just grabbed the hudson.war file from the hudson site and deployed it in a running glassfish.",[211,247,248],{},[240,249,250],{},"LDAP configuration",[211,252,253],{},"This was a bit more complex. Under Manage Hudson > Configure System",[211,255,256],{},[257,258],"img",{"alt":259,"src":260},"Hudson LDAP config","\u002Fimages\u002Fposts\u002F2009\u002F04\u002Fhudson-ldap.png",[211,262,263,264,272,294],{},"Note the User\u002FGroup names - ",[265,266,267,268],"code",{},"ROLE",[269,270,271],"em",{},"ADMIN",[269,273,274,275,278,279,282,283,286,287,274,290,293],{}," and ",[265,276,277],{},"ROLE_HUDSON",". For this to work you need ",[265,280,281],{},"groupOfUniqueNames"," entries directly under the group search base (here ",[265,284,285],{},"ou=groups,dc=chrissearle,dc=net",") with the names ",[265,288,289],{},"cn=admin",[265,291,292],{},"cn=hudson",". Hudson will match this by removing ROLE"," and lowercasing the rolename. This was unclear in the hudson docs I was reading but google came to the rescue.",[211,296,297],{},[240,298,299],{},"Plugins",[211,301,302],{},"To be able to test grails projects from git I installed the grails and git plugins (Manage Hudson > Manage Plugins > Available). Check them off (and any others you want) and then install them.",[211,304,305],{},"Each plugin will add a config section under Manage Hudson > Configure System.",[211,307,308],{},"For git:",[211,310,311],{},[257,312],{"alt":313,"src":314},"Hudson - git","\u002Fimages\u002Fposts\u002F2009\u002F04\u002Fhudson-git.png",[211,316,317],{},"Since git is in the path this is OK - otherwise set the full path.",[211,319,320],{},"For grails:",[211,322,323],{},[257,324],{"alt":325,"src":326},"Hudson - grails","\u002Fimages\u002Fposts\u002F2009\u002F04\u002Fhudson-grails.png",[211,328,329],{},"Here only grails 1.0.4 is configured - but you can add several different versions.",[211,331,332],{},[240,333,334],{},"Project",[211,336,337],{},"Now lets add a grails project.",[211,339,340],{},"Choose New Job from the main menu.",[211,342,343],{},[257,344],{"alt":345,"src":346},"Hudson - build","\u002Fimages\u002Fposts\u002F2009\u002F04\u002Fhudson-build.png",[211,348,349],{},"Add a name and choose free-style.",[211,351,352],{},"To configure the project - choose git from the SCM configuration section - my projects have the ability to be cloned over http - so just add the clone URL as the git repository url. Set a branch if you're not testing master.",[211,354,355,356],{},"For build triggers - I chose to poll the SCM with the following schedule ",[265,357,358],{},"_\u002F5 _ * * *",[211,360,361],{},"For build choose \"Add build step\" and choose Build with Grails. You'll need to pick which grails installation from the dropdown (these were configured above) and also target.",[211,363,364],{},"I normally add two grails build steps - one for target test, one for target war - so that if it fails then the notification tells me which step.",[211,366,367],{},"Finally set whichever notification options you want. Git specific is the ability to tag the original repository with the test.",[211,369,370],{},[240,371,372],{},"Other plugins",[211,374,375],{},"For me the other plugins that are useful are JIRA (if the last commit message contains a JIRA tag then it will comment in the JIRA issue when the test passes), and email\u002Fjabber\u002Firc\u002Ftwitter notifications.",{"title":377,"searchDepth":378,"depth":378,"links":379},"",2,[],"2009-04-18 13:19:38 +0200","After running continuous integration with continuum for a long while (which works great for maven projects) I decided to take a look at Hudson. It can also do maven - but seems to have a larger range of plugins available. Of interest to me was grails.",null,"md",{},true,"\u002F2009\u002F04\u002F18\u002Fhudson-ci-testing-for-grails-from-git",{"title":206,"description":381},{"loc":386},"2009\u002F04\u002F18\u002Fhudson-ci-testing-for-grails-from-git",[391,235,392,393,394,395,396],"glassfish","git","hudson","ci","continuous integration","tutorial","AYEKG9DcsJZtSTJxaNhcQENZbPnt3a-UcwkovXvv-ok",1775293014130]