summaryrefslogtreecommitdiff
path: root/jenkinstool
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2012-08-24 18:13:05 +0100
committerLars Wirzenius <liw@liw.fi>2012-08-24 18:13:05 +0100
commitda2bdaef786328a18aa0b7565a93226257059fac (patch)
tree206cf4c26ad7055c8d573fc168f6dcf203cc1b7c /jenkinstool
parent3649459015cf3ad30c16eeebd43da43eac0ad408 (diff)
downloadjenkinstool-da2bdaef786328a18aa0b7565a93226257059fac.tar.gz
Add git support
Diffstat (limited to 'jenkinstool')
-rwxr-xr-xjenkinstool54
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: