2021-12-17 04:03:20 +01:00
|
|
|
#!/usr/bin/python3
|
2021-12-17 04:22:09 +01:00
|
|
|
"""
|
|
|
|
Allow buildbot to run jobs dynamically defined a a project repo
|
|
|
|
Requires docker
|
|
|
|
"""
|
2021-12-17 04:03:20 +01:00
|
|
|
|
|
|
|
# TODO: change "ghcontext" in master.cfg to interpolate the job name
|
|
|
|
# TODO: write upload script
|
|
|
|
# TODO: write hook (perhaps the default hook is ok), authentication for hook
|
|
|
|
# TODO: write hook job, maybe also a dockerfile?
|
|
|
|
# TODO: what to do about non-docker jobs
|
|
|
|
|
|
|
|
from os import walk
|
2021-12-17 04:22:09 +01:00
|
|
|
from os.path import exists, isfile, join, listdir
|
2021-12-17 04:03:20 +01:00
|
|
|
|
|
|
|
|
2021-12-17 04:22:09 +01:00
|
|
|
def list_jobs(directory=".buildbot"):
|
|
|
|
"""
|
|
|
|
list jobs found in a directory
|
|
|
|
"""
|
2021-12-17 04:03:20 +01:00
|
|
|
results = []
|
2021-12-17 04:22:09 +01:00
|
|
|
for _ in next(walk(directory))[1]:
|
|
|
|
if exists(join(directory, _, "Dockerfile")) \
|
|
|
|
and (exists(join(directory, _, "build.sh"))
|
|
|
|
or exists(join(directory, _, "test.sh"))
|
2021-12-17 04:03:20 +01:00
|
|
|
):
|
2021-12-17 04:22:09 +01:00
|
|
|
results.append(_)
|
2021-12-17 04:03:20 +01:00
|
|
|
|
|
|
|
return results
|
|
|
|
|
|
|
|
|
2021-12-17 04:22:09 +01:00
|
|
|
def find_artifacts(directory="out"):
|
|
|
|
"""
|
|
|
|
find artifacts (any file) in a directory
|
|
|
|
"""
|
|
|
|
for _ in listdir(directory):
|
|
|
|
if not isfile(join(directory, _)):
|
|
|
|
continue
|
|
|
|
return join(directory, _)
|