Added parent hook and some renderer #1
|
@ -1,38 +1,24 @@
|
|||
from buildbot.plugins import util
|
||||
import re
|
||||
|
||||
def _is_github(props):
|
||||
if re.search(r'[/@]github.com', props.getProperty('repository')):
|
||||
return True
|
||||
return False
|
||||
|
||||
@util.renderer
|
||||
def is_github(props):
|
||||
return _is_github(props)
|
||||
|
||||
@util.renderer
|
||||
def isnt_github(props):
|
||||
return not _is_github(props)
|
||||
|
||||
def _is_gitea(props):
|
||||
if re.search(r'[/@]git.bitmessage.org', props.getProperty('repository'), re.I):
|
||||
return True
|
||||
return False
|
||||
|
||||
@util.renderer
|
||||
def is_gitea(props):
|
||||
return _is_gitea(props)
|
||||
|
||||
@util.renderer
|
||||
def isnt_gitea(props):
|
||||
return not _is_gitea(props)
|
||||
|
||||
@util.renderer
|
||||
def is_build_script_available(props):
|
||||
# Actual check will got here
|
||||
return props.getProperty('jobname', default='') != ''
|
||||
return props.getProperty("jobname", default="") != ""
|
||||
|
||||
|
||||
@util.renderer
|
||||
def isnt_build_script_available(props):
|
||||
return not is_build_script_available(props)
|
||||
|
||||
|
||||
@util.renderer
|
||||
def is_test_script_available(props):
|
||||
# Actual check will got here
|
||||
return props.getProperty('jobname', default='') != ''
|
||||
return props.getProperty("jobname", default="") != ""
|
||||
|
||||
|
||||
@util.renderer
|
||||
def isnt_test_script_available(props):
|
||||
return not is_test_script_available(props)
|
||||
|
|
|
@ -16,6 +16,8 @@ import requests
|
|||
import re
|
||||
from buildbot.plugins import steps, util
|
||||
|
||||
from .lib.renderers import *
|
||||
|
||||
ty = "/change_hook/base"
|
||||
request_headers = {
|
||||
"Content-Type": "application/x-www-form-urlencoded",
|
||||
|
@ -33,11 +35,15 @@ 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
|
||||
|
||||
# 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 /entrypoint.sh "$BUILDMASTER" "$WORKERNAME" "$WORKERPASS"
|
||||
ENTRYPOINT /usr/local/bin/buildbot_entrypoint.sh "$BUILDMASTER" "$WORKERNAME" "$WORKERPASS"
|
||||
|
||||
"""
|
||||
|
||||
|
@ -46,7 +52,7 @@ 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
|
||||
python3-pip dumb-init curl openssh-client wget
|
||||
|
||||
# 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
|
||||
|
@ -93,10 +99,12 @@ def get_dockerfile_contents(path, 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)
|
||||
re.sub(r"(?m)^(CMD|ENTRYFILE).*$", "", contents)
|
||||
|
||||
return contents + eval("dockerfile_extra_contents_" + os_codename)
|
||||
return contents + {
|
||||
"focal": dockerfile_extra_contents_focal,
|
||||
"bionic": dockerfile_extra_contents_bionic,
|
||||
}[os_codename]
|
||||
|
||||
|
||||
def trigger_child_hooks(buildbotUrl: str, os_codename: str, directory=".buildbot"):
|
||||
|
@ -115,11 +123,13 @@ def trigger_child_hooks(buildbotUrl: str, os_codename: str, directory=".buildbot
|
|||
test_script_exists = True
|
||||
Ss_singh marked this conversation as resolved
|
||||
|
||||
# make a post request
|
||||
request_data["dockerfile"] = get_dockerfile_contents(
|
||||
request_data["properties"] = {
|
||||
"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)
|
||||
),
|
||||
"build_script_available": is_build_script_available(build_script_exists),
|
||||
"test_script_available": is_test_script_available(test_script_exists),
|
||||
}
|
||||
PeterSurda
commented
I think I think `repository` and `branch` are a level higher.
|
||||
requests.post(request_url, headers=request_headers, data=request_data)
|
||||
|
||||
|
||||
|
@ -158,7 +168,9 @@ def add_child_build_sh_step(build_factory, job, directory=".buildbot"):
|
|||
build_factory.addStep(
|
||||
steps.ShellCommand(
|
||||
name="build_" + job,
|
||||
command=["bash", "-c", "cd " + join(directory, job) + " && ./build.sh"],
|
||||
command=["bash", "-c", join(directory, job, "build.sh")],
|
||||
doStepIf=is_build_script_available,
|
||||
hideStepIf=isnt_build_script_available,
|
||||
)
|
||||
)
|
||||
|
||||
|
@ -170,7 +182,9 @@ def add_child_test_sh_step(build_factory, job, directory=".buildbot"):
|
|||
build_factory.addStep(
|
||||
steps.ShellCommand(
|
||||
name="test_" + job,
|
||||
command=["bash", "-c", "cd " + join(directory, job) + " && ./test.sh"],
|
||||
command=["bash", "-c", join(directory, job, "test.sh")],
|
||||
doStepIf=is_test_script_available,
|
||||
hideStepIf=isnt_test_script_available,
|
||||
)
|
||||
)
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user
proxied properties are missing
I think they are still missing. Like
repository
andbranch
.Well, they were already being added before the hook function was getting triggered but anyways, now I've them placed altogether.