summaryrefslogtreecommitdiff
path: root/jenkinstool
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2012-08-30 21:09:38 +0100
committerLars Wirzenius <liw@liw.fi>2012-08-30 21:09:38 +0100
commitca5f23026704ef259fd5423154b17d5a85127867 (patch)
tree18214be78fda7b20c3c36a36d255901ba479e369 /jenkinstool
parente93ac05813a438c64ad4e656e05ec6ffd724b904 (diff)
downloadjenkinstool-ca5f23026704ef259fd5423154b17d5a85127867.tar.gz
Setup dput config
Diffstat (limited to 'jenkinstool')
-rwxr-xr-xjenkinstool35
1 files changed, 26 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: