diff options
author | Lars Wirzenius <liw@liw.fi> | 2012-08-11 18:39:46 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2012-08-11 18:39:46 +0100 |
commit | 381a73e5644ea23dae813d4ef3b32319c63c1560 (patch) | |
tree | ca7ee75f6333df7f90b6f72dd7280f48280357ef /jenkinstool | |
parent | aa6ec79044298faf2d9bbbc9a299adb1cefb5568 (diff) | |
download | jenkinstool-381a73e5644ea23dae813d4ef3b32319c63c1560.tar.gz |
Refactor: simplify generation/yielding of job ids
Diffstat (limited to 'jenkinstool')
-rwxr-xr-x | jenkinstool | 39 |
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', { |