tbuild.py - devuan-releasebot - devuan's releasebot reimplemented (scorsh version)
HTML git clone git://parazyd.org/devuan-releasebot.git
DIR Log
DIR Files
DIR Refs
DIR LICENSE
---
tbuild.py (1608B)
---
1 #!/usr/bin/env python3
2 # See LICENSE file for copyright and license details.
3
4 """
5 Module to build Jenkins build jobs
6 """
7
8 import sys
9 from os import environ as env
10 from os.path import basename
11 import jenkins
12
13 from config import (dryrun, jobtypes, default_suites, supported_suites,
14 jenkins_host, jenkins_user, jenkins_pass)
15
16
17 def main():
18 """
19 Main function
20 """
21 print('* Requested job build')
22
23 print('- Connecting to Jenkins...')
24 jenk = jenkins.Jenkins(jenkins_host, jenkins_user, jenkins_pass)
25
26 try:
27 jenk.get_whoami()
28 except jenkins.JenkinsException:
29 print('Error in request. Possible authentication fail.')
30 sys.exit(1)
31
32 # the -4 cuts off '.git' from the path
33 pkgname = basename(env['SCORSH_REPO'])[:-4]
34
35 for jobt in jobtypes:
36 jobname = '-'.join([pkgname, jobt])
37 if not jenk.job_exists(jobname):
38 print('%s does not exist in Jenkins! Quitting.' % jobname)
39 sys.exit(1)
40
41 build_for = list(set(sys.argv[1:]).intersection(supported_suites))
42 if not build_for:
43 print('Error: no valid suites found in arguments. Exiting.')
44 sys.exit(1)
45 # in original releasebot it defaults to the declared suites if
46 # no valid ones were passed
47 # build_for = suites
48
49 for build in build_for:
50 print('- Building for %s' % build)
51 if not dryrun:
52 jenk.build_job(jobname, {'codename': build})
53
54
55 if __name__ == '__main__':
56 if len(sys.argv) > 1:
57 main()
58 else:
59 print('Error: not enough arguments')
60 sys.exit(1)