Use jenkins-cli.jar instead of the web.

This commit is contained in:
parazyd 2018-09-26 18:40:52 +02:00
parent 0cf7f9e978
commit b7ac8bf061
No known key found for this signature in database
GPG Key ID: F0CB28FCF78637DE
2 changed files with 20 additions and 9 deletions

View File

@ -1,4 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# Path to jenkins-cli.jar
jarpath = '/var/cache/jenkins/war/WEB-INF/jenkins-cli.jar'
# Physical path to where jobs are held # Physical path to where jobs are held
jobpath = '/srv/toaster' jobpath = '/srv/toaster'

View File

@ -4,9 +4,9 @@ Module for backend talk with Jenkins executed by the web/CGI
""" """
from argparse import ArgumentParser from argparse import ArgumentParser
from jenkins import Jenkins from subprocess import run
from config import jobpath from config import jarpath, jobpath
from jenkins_creds import (jenkins_host, jenkins_user, jenkins_pass) from jenkins_creds import (jenkins_host, jenkins_user, jenkins_pass)
@ -22,7 +22,7 @@ def html_escape(string):
return string return string
def add_job(japi, jobname): def add_job(jobname):
""" """
Function for adding a job to Jenkins. Function for adding a job to Jenkins.
""" """
@ -53,14 +53,23 @@ def add_job(japi, jobname):
for i in replacements: for i in replacements:
sdk_job = sdk_job.replace('{{{%s}}}' % i[0], i[1]) sdk_job = sdk_job.replace('{{{%s}}}' % i[0], i[1])
return japi.create_job(jobname, sdk_job) creds = '%s:%s' % (jenkins_user, jenkins_pass)
clijob = run(['java', '-jar', jarpath, '-s', jenkins_host, '-auth', creds,
'create-job', jobname.replace('@', 'AT')],
input=sdk_job.encode())
return clijob
def del_job(japi, jobname): def del_job(jobname):
""" """
Function for deleting a Jenkins job. Function for deleting a Jenkins job.
""" """
return japi.delete_job(jobname) creds = '%s:%s' % (jenkins_user, jenkins_pass)
clijob = run(['java', '-jar', jarpath, '-s', jenkins_host, '-auth', creds,
'delete-job', jobname.replace('@', 'AT')])
return clijob
def main(): def main():
@ -79,20 +88,19 @@ def main():
args = parser.parse_args() args = parser.parse_args()
japi = Jenkins(jenkins_host, username=jenkins_user, password=jenkins_pass)
if args.add: if args.add:
if args.dryrun: if args.dryrun:
print('Would add:', args.jobname) print('Would add:', args.jobname)
return return
print('Adding job:', args.jobname) print('Adding job:', args.jobname)
add_job(japi, args.jobname) add_job(args.jobname)
elif args.delete: elif args.delete:
if args.dryrun: if args.dryrun:
print('Would remove:', args.jobname) print('Would remove:', args.jobname)
return return
print('Removing job:', args.jobname) print('Removing job:', args.jobname)
del_job(japi, args.jobname) del_job(args.jobname)
if __name__ == '__main__': if __name__ == '__main__':