summaryrefslogtreecommitdiff
path: root/jenkinstool
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2012-08-11 18:39:46 +0100
committerLars Wirzenius <liw@liw.fi>2012-08-11 18:39:46 +0100
commit381a73e5644ea23dae813d4ef3b32319c63c1560 (patch)
treeca7ee75f6333df7f90b6f72dd7280f48280357ef /jenkinstool
parentaa6ec79044298faf2d9bbbc9a299adb1cefb5568 (diff)
downloadjenkinstool-381a73e5644ea23dae813d4ef3b32319c63c1560.tar.gz
Refactor: simplify generation/yielding of job ids
Diffstat (limited to 'jenkinstool')
-rwxr-xr-xjenkinstool39
1 files changed, 13 insertions, 26 deletions
diff --git a/jenkinstool b/jenkinstool
index b82f561..f968789 100755
--- a/jenkinstool
+++ b/jenkinstool
@@ -57,19 +57,6 @@ class JobGenerator(object):
'''Generate Jenkins jobs from a JSON specification file.'''
- def job_id(self, name, target, suffix):
- '''Create a unique job id from constituent parts.
-
- Escape characters that Jenkins gets upset by, such as '@'.
-
- '''
-
- def esc(s):
- s = '.'.join(s.split('@'))
- return s
-
- return '%s_%s_%s' % (esc(name), esc(target), esc(suffix))
-
def generate(self, config):
'''Generate all the jobs for a given config.
@@ -78,13 +65,15 @@ class JobGenerator(object):
'''
for project in config['projects']:
- for x in self.generate_project(config, project):
- yield x
+ for jc in self.generate_project(config, project):
+ logging.debug('yielding job id %s' % jc.job_id())
+ logging.debug('yielding config.xml:\n%s' % jc.tostring())
+ yield jc.job_id(), jc.tostring()
def generate_project(self, config, project):
'''Generate all the jobs for a given project.'''
main_host = config['hosts'][0]
-
+
for host in config['hosts']:
yield self.build_job(host, project)
@@ -96,7 +85,7 @@ class JobGenerator(object):
def build_job(self, host, project):
'''Generate a job to build a given project on a given host.'''
- jc = self.create_job_config(host, project)
+ jc = self.create_job_config(host, project, 'build')
jc.set_description('Build %(project.name)s from %(project.bzr)s '
'on %(host.ssh-target)s')
@@ -104,13 +93,12 @@ class JobGenerator(object):
jc.add_shell_command('\n'.join(project['build-commands']))
self.add_rsync_workspace_from_target(jc)
- job_id = self.job_id(project['name'], host['name'], 'build')
- return job_id, jc.tostring()
+ return jc
def tarball_job(self, host, project):
'''Create a job to create upstream release tarball.'''
- jc = self.create_job_config(host, project)
+ jc = self.create_job_config(host, project, 'tarball')
jc.set_description('Create release tarball for %(project.name)s '
'from %(project.bzr)s on %(host.ssh-target)s')
self.add_rsync_workspace_to_target(jc)
@@ -131,13 +119,12 @@ mkdir -p "${artifacts}"
mv "${tarball}" "${artifacts}/."
''')
- job_id = self.job_id(project['name'], host['name'], 'tarball')
- return job_id, jc.tostring()
+ return jc
def dsc_job(self, host, project):
'''Create a job to create Debian source package.'''
- jc = self.create_job_config(host, project)
+ jc = self.create_job_config(host, project, 'dsc')
jc.set_description('Create Debian source package for %(project.name)s '
'from %(project.bzr)s on %(host.ssh-target)s')
@@ -153,11 +140,11 @@ debuild -S -us -uc
''')
self.add_rsync_workspace_from_target(jc)
- job_id = self.job_id(project['name'], host['name'], 'dsc')
- return job_id, jc.tostring()
+ return jc
- def create_job_config(self, host, project):
+ def create_job_config(self, host, project, suffix):
jc = simplejenkinsapi.JobConfig()
+ jc.set_job_suffix(suffix)
jc.add_param_dict('project', project)
jc.add_param_dict('host', host)
jc.add_param_dict('global', {