summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xjenkinstool35
-rw-r--r--jenkinstool.conf1
2 files changed, 27 insertions, 9 deletions
diff --git a/jenkinstool b/jenkinstool
index fe2f2b1..095c817 100755
--- a/jenkinstool
+++ b/jenkinstool
@@ -130,10 +130,11 @@ class JobGenerator(object):
'''Generate Jenkins jobs from a JSON specification file.'''
- def __init__(self, pretend, pbuilder_max_age, artifacts_url):
+ def __init__(self, pretend, pbuilder_max_age, artifacts_url, jenkins_host):
self.pretend = pretend
self.pbuilder_max_age = pbuilder_max_age
self.artifacts_url = artifacts_url
+ self.jenkins_host = jenkins_host
def generate(self, config):
'''Generate all the jobs for a given config.
@@ -324,7 +325,7 @@ fi
jobs.append(self.vcs_watch_job(localhost, project))
for host in config['hosts']:
- jobs.append(self.apt_upgrade_job(host, project))
+ jobs.append(self.prepare_worker_job(host, project))
jobs.append(self.build_job(host, project))
jobs.append(self.tarball_job(main_host, project))
@@ -361,8 +362,12 @@ fi
raise cliapp.AppException('Unknown VCS')
return jc
- def apt_upgrade_job(self, host, project):
- '''Create job to upgrade the build environment with apt.'''
+ def prepare_worker_job(self, host, project):
+ '''Create job to prepare worker for build.
+
+ Upgrades build environment, and configures dput.
+
+ '''
jc = self.create_job_config(host, project, 'apt-upgrade')
jc.set_description('Upgrade build environment on %(host.ssh-target)s '
@@ -371,6 +376,15 @@ fi
jc.add_ssh_command('''
sudo apt-get update
sudo apt-get --no-remove --allow-unauthenticated -y upgrade
+cat << EOF > /var/lib/jenkins/.dput.cf
+[jenkins]
+fqdn = %(global.dput-host)s
+method = scp
+incoming = /var/www/jenkins/debian/incoming
+allow_unsigned_uploads = 1
+check_version = 0
+run_dinstall = 0
+EOF
''')
return jc
@@ -469,7 +483,7 @@ else
dch -v "$debianversion" --distribution "%(host.debian-dist)s" "CI build"
dch -r ''
debuild -S -us -uc -i
- dput -f "%(global.dput-host)s" "../$changes"
+ dput -f jenkins "../$changes"
fi
''')
self.add_rsync_workspace_from_target(jc)
@@ -536,8 +550,7 @@ dget -u "$dsc_url"
mkdir result
sudo pbuilder --build --buildresult result --allow-untrusted \
--debbuildopts $binopt *.dsc
-dput "%(global.dput-host)s" \
- "result/${sourcepkg}_${version}-1_%(host.arch)s.changes"
+dput jenkins "result/${sourcepkg}_${version}-1_%(host.arch)s.changes"
cd "$curdir"
rm -rf "$temp"
''')
@@ -557,7 +570,7 @@ rm -rf "$temp"
jc.add_param_dict('global', {
'artifacts': '/var/www/jenkins',
'artifacts-url': self.artifacts_url,
- 'dput-host': 'liw-jenkins',
+ 'dput-host': self.jenkins_host,
'repreprobase': '/var/www/jenkins/debian',
'debian-mirror': 'http://cdn.debian.net/debian',
'pretend': 'true' if self.pretend else 'false',
@@ -601,6 +614,9 @@ class JenkinsTool(cliapp.Application):
self.settings.string(
['artifacts-url'],
'URL to artifact repository')
+ self.settings.string(
+ ['jenkins-host'],
+ 'address of host running jenkins')
def cmd_list_jobs(self, args):
'''List all jobs on the server.'''
@@ -648,7 +664,8 @@ class JenkinsTool(cliapp.Application):
jenkins = simplejenkinsapi.Jenkins(self.settings['url'])
job_generator = JobGenerator(self.settings['pretend-jobs'],
self.settings['pbuilder-max-age'],
- self.settings['artifacts-url'])
+ self.settings['artifacts-url'],
+ self.settings['jenkins-host'])
created_job_ids = set()
for filename in args:
with open(filename) as f:
diff --git a/jenkinstool.conf b/jenkinstool.conf
index faab97b..e0616ba 100644
--- a/jenkinstool.conf
+++ b/jenkinstool.conf
@@ -2,3 +2,4 @@
url = http://192.168.122.113:8080/
log = foo.log
artifacts-url = http://192.168.122.113/jenkins/
+jenkins-host = 192.168.122.113