Updated multibuild and renderers

This commit is contained in:
Shashi 2021-12-25 12:27:44 +05:30
parent 9a55687ec6
commit bea032dc78
Signed by untrusted user: Ss_singh
GPG Key ID: C1A296E379639C12
2 changed files with 39 additions and 39 deletions

View File

@ -1,38 +1,24 @@
from buildbot.plugins import util from buildbot.plugins import util
import re 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 @util.renderer
def is_build_script_available(props): def is_build_script_available(props):
# Actual check will got here # 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 @util.renderer
def is_test_script_available(props): def is_test_script_available(props):
# Actual check will got here # 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)

View File

@ -16,6 +16,8 @@ import requests
import re import re
from buildbot.plugins import steps, util from buildbot.plugins import steps, util
from .lib.renderers import *
ty = "/change_hook/base" ty = "/change_hook/base"
request_headers = { request_headers = {
"Content-Type": "application/x-www-form-urlencoded", "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 \ buildbot-worker git subversion python3-dev libffi-dev python3-setuptools \
python3-pip dumb-init curl openssh-client wget 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 RUN echo 'buildbot ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
USER buildbot 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 # Buildbot
RUN apt-get install -yq --no-install-suggests --no-install-recommends \ RUN apt-get install -yq --no-install-suggests --no-install-recommends \
buildbot-slave git subversion python3-dev libffi-dev python3-setuptools \ 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 # 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 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: with open(path, "r") as file:
contents = file.read() contents = file.read()
# remove any line containing CMD or ENTRYFILE keywords # remove any line containing CMD or ENTRYFILE keywords
contents = re.sub(r"(?m)^CMD.*$", "", contents) re.sub(r"(?m)^(CMD|ENTRYFILE).*$", "", contents)
contents = re.sub(r"(?m)^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"): 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 test_script_exists = True
# make a post request # make a post request
request_data["dockerfile"] = get_dockerfile_contents( request_data["properties"] = {
join(directory, job, "Dockerfile"), os_codename "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),
}
requests.post(request_url, headers=request_headers, data=request_data) 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( build_factory.addStep(
steps.ShellCommand( steps.ShellCommand(
name="build_" + job, 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( build_factory.addStep(
steps.ShellCommand( steps.ShellCommand(
name="test_" + job, 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,
) )
) )