From 5945fbc32d756739d981a53e5607c150c25d225e Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 18 Jun 2013 14:52:13 -0700 Subject: [PATCH 1/4] initial version of jenkins groovy DSL --- jenkins/jobs.groovy | 84 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 jenkins/jobs.groovy diff --git a/jenkins/jobs.groovy b/jenkins/jobs.groovy new file mode 100644 index 0000000000..f00a86295e --- /dev/null +++ b/jenkins/jobs.groovy @@ -0,0 +1,84 @@ +/*def targets = [ + 'animation-server', + 'audio-mixer', + 'avatar-mixer', + 'domain-server', + 'eve', + 'interface', + 'pairing-server', + 'space-server', + 'voxel-server' +]*/ + +def targets = ['space-server'] + +def JENKINS_URL = 'https://jenkins.below92.com/' +def GITHUB_HOOK_URL = 'https://github.com/worklist/hifi/' +def GIT_REPO_URL = 'git@github.com:worklist/hifi.git' +def HIPCHAT_AUTH_TOKEN = '4ad6553471db605629852ff3265408' +def HIPCHAT_ROOM = 'High Fidelity' +def ARTIFACT_DESTINATION = 'a-tower.below92.com' + +targets.each { + def targetName = it + + job { + name "hifi-${targetName}" + logRotator(7, -1, -1, -1) + + scm { + git(GIT_REPO_URL) + } + + configure { project -> + project / 'properties' << { + 'com.coravy.hudson.plugins.github.GithubProjectProperty' { + projectUrl GITHUB_HOOK_URL + } + + 'jenkins.plugins.hipchat.HipChatNotifier_-HipChatJobProperty' { + room HIPCHAT_ROOM + } + } + + project / 'scm' << { + includedRegions "${targetName}/.*\nlibraries/.*" + } + + project / 'triggers' << 'com.cloudbees.jenkins.GitHubPushTrigger' { + spec '' + } + + project / 'publishers' << { + 'jenkins.plugins.hipchat.HipChatNotifier' { + jenkinsUrl JENKINS_URL + authToken HIPCHAT_AUTH_TOKEN + room HIPCHAT_ROOM + } + + 'jenkins.plugins.publish__over__ssh.BapSshPublisherPlugin' { + consolePrefix 'SSH: ' + + } + } + + project / 'builders' << 'hudson.plugins.cmake.CmakeBuilder' { + sourceDir targetName + buildDir 'build' + buildType 'Release' + generator 'Unix Makefiles' + makeCommand 'make' + installCommand 'make install' + projectCmakePath '/usr/bin/cmake' + cleanBuild 'false' + cleanInstallDir 'false' + } + } + + publishers { + publishScp(ARTIFACT_DESTINATION) { + entry('**/build/$TARGET', '/deploy/$TARGET') + } + } + } +} \ No newline at end of file From 8e94da3cc00ccc5d030b0c9f1466d60d8b5e3945 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 18 Jun 2013 15:43:51 -0700 Subject: [PATCH 2/4] fixes to order of publish steps, deploy --- jenkins/jobs.groovy | 69 +++++++++++++++++++++++++++++---------------- 1 file changed, 45 insertions(+), 24 deletions(-) diff --git a/jenkins/jobs.groovy b/jenkins/jobs.groovy index f00a86295e..37e5a24348 100644 --- a/jenkins/jobs.groovy +++ b/jenkins/jobs.groovy @@ -38,7 +38,11 @@ targets.each { 'jenkins.plugins.hipchat.HipChatNotifier_-HipChatJobProperty' { room HIPCHAT_ROOM - } + } + 'hudson.plugins.buildblocker.BuildBlockerProperty' { + useBuildBlocker true + blockingJobs 'hifi-dsl-seed' + } } project / 'scm' << { @@ -49,35 +53,52 @@ targets.each { spec '' } + project / 'builders' << 'hudson.plugins.cmake.CmakeBuilder' { + sourceDir targetName + buildDir 'build' + installDir '' + buildType 'RelWithDebInfo' + generator 'Unix Makefiles' + makeCommand 'make' + installCommand 'make install' + preloadScript '' + cmakeArgs '' + projectCmakePath '/usr/bin/cmake' + cleanBuild 'false' + cleanInstallDir 'false' + builderImpl '' + } + } + + publishers { + publishScp(ARTIFACT_DESTINATION) { + entry("**/build/${targetName}", "deploy/${targetName}") + } + } + + configure { project -> project / 'publishers' << { + 'hudson.plugins.postbuildtask.PostbuildTask' { + 'tasks' { + 'hudson.plugins.postbuildtask.TaskProperties' { + logTexts { + 'hudson.plugins.postbuildtask.LogProperties' { + logText '.' + operator 'AND' + } + } + EscalateStatus true + RunIfJobSuccessful true + script "curl -d 'action=deploy&role=highfidelity-live&revision=${targetName}' https://a-tower.below92.com" + } + } + } + 'jenkins.plugins.hipchat.HipChatNotifier' { jenkinsUrl JENKINS_URL authToken HIPCHAT_AUTH_TOKEN room HIPCHAT_ROOM } - - 'jenkins.plugins.publish__over__ssh.BapSshPublisherPlugin' { - consolePrefix 'SSH: ' - - } - } - - project / 'builders' << 'hudson.plugins.cmake.CmakeBuilder' { - sourceDir targetName - buildDir 'build' - buildType 'Release' - generator 'Unix Makefiles' - makeCommand 'make' - installCommand 'make install' - projectCmakePath '/usr/bin/cmake' - cleanBuild 'false' - cleanInstallDir 'false' - } - } - - publishers { - publishScp(ARTIFACT_DESTINATION) { - entry('**/build/$TARGET', '/deploy/$TARGET') } } } From df28dc3165a041baeca66c6de1b26434cc59f69f Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 18 Jun 2013 15:46:58 -0700 Subject: [PATCH 3/4] enable creation of jobs for all targets --- jenkins/jobs.groovy | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/jenkins/jobs.groovy b/jenkins/jobs.groovy index 37e5a24348..cc327b1d08 100644 --- a/jenkins/jobs.groovy +++ b/jenkins/jobs.groovy @@ -1,4 +1,4 @@ -/*def targets = [ +def targets = [ 'animation-server', 'audio-mixer', 'avatar-mixer', @@ -8,9 +8,7 @@ 'pairing-server', 'space-server', 'voxel-server' -]*/ - -def targets = ['space-server'] +] def JENKINS_URL = 'https://jenkins.below92.com/' def GITHUB_HOOK_URL = 'https://github.com/worklist/hifi/' From 3ae44b7614860217fb097fe3023142e803898a22 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 18 Jun 2013 15:55:29 -0700 Subject: [PATCH 4/4] match shorter seed name for DSL job --- jenkins/jobs.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jenkins/jobs.groovy b/jenkins/jobs.groovy index cc327b1d08..91da60b78e 100644 --- a/jenkins/jobs.groovy +++ b/jenkins/jobs.groovy @@ -39,7 +39,7 @@ targets.each { } 'hudson.plugins.buildblocker.BuildBlockerProperty' { useBuildBlocker true - blockingJobs 'hifi-dsl-seed' + blockingJobs 'hifi-seed' } }