Added parent hook and some renderer #1
|
@ -13,6 +13,7 @@ Requires docker
|
|||
from os import walk
|
||||
from os.path import exists, isfile, join, listdir
|
||||
import requests
|
||||
import re
|
||||
|
||||
ty = '/change_hook/base'
|
||||
request_headers = {
|
||||
|
@ -24,6 +25,39 @@ request_data = {
|
|||
'comments': 'testcomment',
|
||||
}
|
||||
|
||||
dockerfile_extra_contents_focal = '''
|
||||
|
||||
# Buildbot
|
||||
RUN apt-get install -yq --no-install-suggests --no-install-recommends \
|
||||
buildbot-worker git subversion python3-dev libffi-dev python3-setuptools \
|
||||
python3-pip dumb-init curl openssh-client wget
|
||||
|
||||
RUN echo 'buildbot ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
|
||||
|
||||
USER buildbot
|
||||
|
||||
ENTRYPOINT /entrypoint.sh "$BUILDMASTER" "$WORKERNAME" "$WORKERPASS"
|
||||
|
||||
'''
|
||||
|
||||
dockerfile_extra_contents_bionic = '''
|
||||
|
||||
# Buildbot
|
||||
RUN apt-get install -yq --no-install-suggests --no-install-recommends \
|
||||
buildbot-slave git subversion python3-dev libffi-dev python3-setuptools \
|
||||
python3-pip dumb-init curl openssh-client
|
||||
|
||||
# buildbot entrypoint
|
||||
RUN wget -O /usr/local/bin/buildbot_entrypoint.sh https://git.bitmessage.org/Bitmessage/buildbot-scripts/raw/branch/master/docker/bionic/entrypoint.sh
|
||||
RUN chmod +x /usr/local/bin/buildbot_entrypoint.sh
|
||||
|
||||
RUN echo 'buildbot ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
|
||||
|
||||
USER buildbot
|
||||
|
||||
ENTRYPOINT /usr/local/bin/buildbot_entrypoint.sh "$BUILDMASTER" "$WORKERNAME" "$WORKERPASS"
|
||||
|
||||
'''
|
||||
|
||||
def list_jobs(directory=".buildbot"):
|
||||
"""
|
||||
|
@ -49,7 +83,19 @@ def find_artifacts(directory="out"):
|
|||
continue
|
||||
return join(directory, _)
|
||||
|
||||
def trigger_child_hooks(buildbotUrl:str, directory=".buildbot"):
|
||||
def get_dockerfile_contents(path, os_codename):
|
||||
'''
|
||||
Read contents of a Dockerfile and add extra contents for the given os_codename
|
||||
'''
|
||||
with open(path, 'r') as file:
|
||||
contents = file.read()
|
||||
# remove any line containing CMD or ENTRYFILE keywords
|
||||
contents = re.sub(r'(?m)^CMD.*$', '', contents)
|
||||
contents = re.sub(r'(?m)^ENTRYFILE.*$', '', contents)
|
||||
|
||||
return contents + eval("dockerfile_extra_contents_" + os_codename)
|
||||
Ss_singh marked this conversation as resolved
|
||||
|
||||
def trigger_child_hooks(buildbotUrl:str, os_codename:str, directory=".buildbot"):
|
||||
request_url = buildbotUrl + ty
|
||||
|
||||
# List all jobs in the directory
|
||||
|
@ -65,25 +111,26 @@ def trigger_child_hooks(buildbotUrl:str, directory=".buildbot"):
|
|||
test_script_exists = True
|
||||
|
||||
# make a post request
|
||||
request_data['dockerfile'] = open(join(directory, job, "Dockerfile"), "r").read()
|
||||
request_data['dockerfile'] = get_dockerfile_contents(join(directory, job, "Dockerfile"), os_codename)
|
||||
request_data['build_script_available'] = str(build_script_exists)
|
||||
request_data['test_script_available'] = str(test_script_exists)
|
||||
requests.post(request_url, headers=request_headers, data=request_data)
|
||||
|
||||
if __name__ == "__main__":
|
||||
# expect jobname, repository, branch from command line args
|
||||
# expect jobname, repository, branch, buildbotUrl, os_codename from command line args
|
||||
import sys
|
||||
if len(sys.argv) == 5:
|
||||
if len(sys.argv) == 6:
|
||||
jobname = sys.argv[1]
|
||||
Ss_singh marked this conversation as resolved
PeterSurda
commented
proxied properties are missing proxied properties are missing
PeterSurda
commented
I think they are still missing. Like I think they are still missing. Like `repository` and `branch`.
Ss_singh
commented
Well, they were already being added before the hook function was getting triggered but anyways, now I've them placed altogether. Well, they were already being added before the hook function was getting triggered but anyways, now I've them placed altogether.
|
||||
repository = sys.argv[2]
|
||||
branch = sys.argv[3]
|
||||
buildbotUrl = sys.argv[4]
|
||||
os_codename = sys.argv[5]
|
||||
|
||||
# add these into the request_data
|
||||
request_data['jobname'] = jobname
|
||||
request_data['repository'] = repository
|
||||
request_data['branch'] = branch
|
||||
PeterSurda
commented
I think I think `repository` and `branch` are a level higher.
|
||||
|
||||
trigger_child_hooks(buildbotUrl)
|
||||
trigger_child_hooks(buildbotUrl, os_codename)
|
||||
else:
|
||||
print("Usage: python3 multibuild.py <jobname> <repository> <branch> <buildbotUrl>")
|
||||
print("Usage: python3 multibuild.py <jobname> <repository> <branch> <buildbotUrl> <os_codename>")
|
|
@ -61,6 +61,11 @@ travis_bash.addStep(
|
|||
)
|
||||
)
|
||||
|
||||
travis_bash.addStep(steps.SetPropertyFromCommand(
|
||||
command="grep ^VERSION_CODENAME= /etc/os-release | cut -d= -f2",
|
||||
property="os_codename"
|
||||
))
|
||||
|
||||
# execute multibuild.py
|
||||
travis_bash.addStep(
|
||||
steps.ShellCommand(
|
||||
|
@ -72,6 +77,7 @@ travis_bash.addStep(
|
|||
util.Property("repository"),
|
||||
util.Property("branch"),
|
||||
"https://buildbot.bitmessage.org",
|
||||
util.Interpolate("%(prop:os_codename)s"),
|
||||
],
|
||||
)
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue
Block a user
How about just