Compare commits
2 Commits
93f61e5523
...
e64fda687b
Author | SHA1 | Date |
---|---|---|
|
e64fda687b | |
|
d9d1ff8dfe |
|
@ -18,8 +18,7 @@ important credentials which allow the backend to work with Jenkins' API.
|
||||||
The `jenkins_creds.py` file should look like the following:
|
The `jenkins_creds.py` file should look like the following:
|
||||||
```
|
```
|
||||||
jenkins_host = 'https://sdk.dyne.org:4443'
|
jenkins_host = 'https://sdk.dyne.org:4443'
|
||||||
jenkins_user = 'toaster'
|
jenkins_cred = 'toaster:thetoasterpassword'
|
||||||
jenkins_pass = 'thetoasterpassword'
|
|
||||||
```
|
```
|
||||||
|
|
||||||
These files will be read and imported by `sync_jobs.py` when ran.
|
These files will be read and imported by `sync_jobs.py` when ran.
|
||||||
|
|
|
@ -1,7 +1,12 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
from jenkins_creds import (jenkins_host, jenkins_cred)
|
||||||
|
|
||||||
# Path to jenkins-cli.jar
|
# Path to jenkins-cli.jar
|
||||||
jarpath = '/var/cache/jenkins/war/WEB-INF/jenkins-cli.jar'
|
jarpath = '/var/cache/jenkins/war/WEB-INF/jenkins-cli.jar'
|
||||||
|
|
||||||
|
# jar parameters
|
||||||
|
jarargs = ['java', '-jar', jarpath, '-s', jenkins_host, '-auth', jenkins_cred]
|
||||||
|
|
||||||
# Physical path to where jobs are held
|
# Physical path to where jobs are held
|
||||||
jobpath = '/srv/toaster'
|
jobpath = '/srv/toaster'
|
||||||
|
|
|
@ -6,8 +6,7 @@ Module for backend talk with Jenkins executed by the web/CGI
|
||||||
from argparse import ArgumentParser
|
from argparse import ArgumentParser
|
||||||
from subprocess import run
|
from subprocess import run
|
||||||
|
|
||||||
from config import jarpath, jobpath
|
from config import (jarargs, jobpath)
|
||||||
from jenkins_creds import (jenkins_host, jenkins_user, jenkins_pass)
|
|
||||||
|
|
||||||
|
|
||||||
def html_escape(string):
|
def html_escape(string):
|
||||||
|
@ -53,23 +52,30 @@ def add_job(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])
|
||||||
|
|
||||||
creds = '%s:%s' % (jenkins_user, jenkins_pass)
|
jarargs.append('create-job')
|
||||||
clijob = run(['java', '-jar', jarpath, '-s', jenkins_host, '-auth', creds,
|
jarargs.append(jobname.replace('@', 'AT'))
|
||||||
'create-job', jobname.replace('@', 'AT')],
|
|
||||||
input=sdk_job.encode())
|
|
||||||
|
|
||||||
return clijob
|
return run(jarargs, input=sdk_job.encode())
|
||||||
|
|
||||||
|
|
||||||
def del_job(jobname):
|
def del_job(jobname):
|
||||||
"""
|
"""
|
||||||
Function for deleting a Jenkins job.
|
Function for deleting a Jenkins job.
|
||||||
"""
|
"""
|
||||||
creds = '%s:%s' % (jenkins_user, jenkins_pass)
|
jarargs.append('delete-job')
|
||||||
clijob = run(['java', '-jar', jarpath, '-s', jenkins_host, '-auth', creds,
|
jarargs.append(jobname.replace('@', 'AT'))
|
||||||
'delete-job', jobname.replace('@', 'AT')])
|
|
||||||
|
|
||||||
return clijob
|
return run(jarargs)
|
||||||
|
|
||||||
|
|
||||||
|
def run_job(jobname):
|
||||||
|
"""
|
||||||
|
Function for running a Jenkins job.
|
||||||
|
"""
|
||||||
|
jarargs.append('build')
|
||||||
|
jarargs.append(jobname.replace('@', 'AT'))
|
||||||
|
|
||||||
|
return run(jarargs)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
@ -80,6 +86,7 @@ def main():
|
||||||
parser.add_argument('-a', '--add', action='store_true')
|
parser.add_argument('-a', '--add', action='store_true')
|
||||||
parser.add_argument('-d', '--delete', action='store_true')
|
parser.add_argument('-d', '--delete', action='store_true')
|
||||||
parser.add_argument('-n', '--dryrun', action='store_true')
|
parser.add_argument('-n', '--dryrun', action='store_true')
|
||||||
|
parser.add_argument('-r', '--run', action='store_true')
|
||||||
parser.add_argument('jobname')
|
parser.add_argument('jobname')
|
||||||
# NOTE: jobname should be email-arch-date, and a predefined directory
|
# NOTE: jobname should be email-arch-date, and a predefined directory
|
||||||
# somewhere on the filesystem. e.g.:
|
# somewhere on the filesystem. e.g.:
|
||||||
|
@ -88,7 +95,6 @@ def main():
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
if args.add:
|
if args.add:
|
||||||
if args.dryrun:
|
if args.dryrun:
|
||||||
print('Would add:', args.jobname)
|
print('Would add:', args.jobname)
|
||||||
|
@ -101,6 +107,12 @@ def main():
|
||||||
return
|
return
|
||||||
print('Removing job:', args.jobname)
|
print('Removing job:', args.jobname)
|
||||||
del_job(args.jobname)
|
del_job(args.jobname)
|
||||||
|
elif args.run:
|
||||||
|
if args.dryrun:
|
||||||
|
print('Would build:', args.jobname)
|
||||||
|
return
|
||||||
|
print('Building job:', args.jobname)
|
||||||
|
run_job(args.jobname)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
Loading…
Reference in New Issue