diff options
author | Lars Wirzenius <liw@liw.fi> | 2012-08-24 18:13:05 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2012-08-24 18:13:05 +0100 |
commit | da2bdaef786328a18aa0b7565a93226257059fac (patch) | |
tree | 206cf4c26ad7055c8d573fc168f6dcf203cc1b7c /jenkinstool | |
parent | 3649459015cf3ad30c16eeebd43da43eac0ad408 (diff) | |
download | jenkinstool-da2bdaef786328a18aa0b7565a93226257059fac.tar.gz |
Add git support
Diffstat (limited to 'jenkinstool')
-rwxr-xr-x | jenkinstool | 54 |
1 files changed, 41 insertions, 13 deletions
diff --git a/jenkinstool b/jenkinstool index 1a16f17..cfa14f5 100755 --- a/jenkinstool +++ b/jenkinstool @@ -52,12 +52,15 @@ commit_date() then commit_timestamp="$(bzr log -l1 --timezone=utc | sed -n '/^timestamp: /s///p')" + elif [ -e .git ] + then + commit_timestamp="$(git log -1 --date=iso | sed -n '/^Date:/s///p')" else echo "UNKNOWN-COMMIT-TIME" return fi - date --date="$commit_timestamp" +%%Y%%m%%dT%%H%%M%%S + date -u --date="$commit_timestamp" +%%Y%%m%%dT%%H%%M%%S } project="%(project.name)s" @@ -285,8 +288,13 @@ fi jc = self.create_job_config(host, project, 'vcs-update') jc.set_description( - 'Watch a version control repository: %(project.bzr)s') - jc.set_bzr(project['bzr']) + 'Watch a version control repository: %(project.vcs)s') + if 'bzr' in project: + jc.set_bzr(project['bzr']) + elif 'git' in project: + jc.set_git(project['git']) + else: + raise cliapp.AppException('Unknown VCS') return jc def apt_upgrade_job(self, host, project): @@ -294,7 +302,7 @@ fi jc = self.create_job_config(host, project, 'apt-upgrade') jc.set_description('Upgrade build environment on %(host.ssh-target)s ' - 'for %(project.name)s from %(project.bzr)s') + 'for %(project.name)s from %(project.vcs)s') jc.add_ssh_command(''' sudo apt-get update @@ -307,7 +315,7 @@ sudo apt-get --no-remove --allow-unauthenticated -y upgrade '''Generate a job to build a given project on a given host.''' jc = self.create_job_config(host, project, 'build') - jc.set_description('Build %(project.name)s from %(project.bzr)s ' + jc.set_description('Build %(project.name)s from %(project.vcs)s ' 'on %(host.ssh-target)s') jc.add_shell_command(prelude + ''' @@ -326,18 +334,32 @@ cp -a "$workspace/." . jc = self.create_job_config(host, project, 'tarball') jc.set_description('Create release tarball for %(project.name)s ' - 'from %(project.bzr)s') + 'from %(project.vcs)s') jc.add_shell_command(prelude + '''\ find . -delete if [ ! -e "$artifacts/$tarball" ] then - mkdir -p "$artifacts" - mkdir "${project}-${version}" - (cd "$workspace" && - bzr export "$workdir/${project}-${version}") + old="$(pwd)" + cd "$workspace" + if [ -e .bzr ] + then + mkdir "${project}-${version}" + bzr export "$workdir/${project}-${version}" + elif [ -e .git ] + then + git archive --prefix="${project}-${version}/" HEAD | + tar -C "$workdir" -xf - + else + echo "Unknown VCS" 1>&2 + exit 1 + fi + + cd "$old" tar -caf "$tarball" --anchored \ --exclude "${project}-${version}/debian" \ "${project}-${version}" + + mkdir -p "$artifacts" mv "$tarball" "$artifacts/." else echo "$artifacts/$tarball already exists, ignoring rebuilt version" @@ -351,7 +373,7 @@ fi 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') + 'from %(project.vcs)s on %(host.ssh-target)s') jc.add_shell_command(prelude + '''\ find . -delete @@ -367,7 +389,7 @@ else wget -O "../$origtgz" "$project_url/$tarball" dch -v "$debianversion" --distribution "%(host.debian-dist)s" "CI build" dch -r '' - debuild -S -us -uc -i'\.bzr' + debuild -S -us -uc -i'\.bzr' -i'\.git' dput -f "%(global.dput-host)s" "../$changes" fi ''') @@ -389,7 +411,7 @@ fi jc = self.create_job_config(host, project, 'deb') jc.set_description('Build Debian binary package for %(project.name)s ' - 'from %(project.bzr)s on %(host.ssh-target)s') + 'from %(project.vcs)s on %(host.ssh-target)s') jc.add_shell_command(prelude + ''' find . -delete @@ -443,6 +465,10 @@ rm -rf "$temp" def create_job_config(self, host, project, suffix): jc = simplejenkinsapi.JobConfig() jc.set_job_suffix(suffix) + if 'bzr' in project: + project['vcs'] = project['bzr'] + elif 'git' in project: + project['vcs'] = project['git'] jc.add_param_dict('project', project) jc.add_param_dict('host', host) jc.add_param_dict('global', { @@ -535,6 +561,8 @@ class JenkinsTool(cliapp.Application): except ValueError, e: raise cliapp.AppException('%s: %s' % (filename, str(e))) for job_id, config_xml in job_generator.generate(config): + logging.debug('job_id = %s' % job_id) + logging.debug('config_xml:\n%s' % config_xml) if job_id in jenkins.list_jobs(): jenkins.update_job(job_id, config_xml) else: |