Add extra content in dockerfile based on OS

This commit is contained in:
Shashi 2021-12-24 09:36:25 +05:30
parent f38fd1c826
commit 1432e510a1
Signed by untrusted user: Ss_singh
GPG Key ID: C1A296E379639C12
2 changed files with 59 additions and 6 deletions

View File

@ -13,6 +13,7 @@ Requires docker
from os import walk from os import walk
from os.path import exists, isfile, join, listdir from os.path import exists, isfile, join, listdir
import requests import requests
import re
ty = '/change_hook/base' ty = '/change_hook/base'
request_headers = { request_headers = {
@ -24,6 +25,39 @@ request_data = {
'comments': 'testcomment', '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"): def list_jobs(directory=".buildbot"):
""" """
@ -49,7 +83,19 @@ def find_artifacts(directory="out"):
continue continue
return join(directory, _) 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)
def trigger_child_hooks(buildbotUrl:str, os_codename:str, directory=".buildbot"):
request_url = buildbotUrl + ty request_url = buildbotUrl + ty
# List all jobs in the directory # List all jobs in the directory
@ -65,25 +111,26 @@ def trigger_child_hooks(buildbotUrl:str, directory=".buildbot"):
test_script_exists = True test_script_exists = True
# make a post request # 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['build_script_available'] = str(build_script_exists)
request_data['test_script_available'] = str(test_script_exists) request_data['test_script_available'] = str(test_script_exists)
requests.post(request_url, headers=request_headers, data=request_data) requests.post(request_url, headers=request_headers, data=request_data)
if __name__ == "__main__": if __name__ == "__main__":
# expect jobname, repository, branch from command line args # expect jobname, repository, branch, buildbotUrl, os_codename from command line args
import sys import sys
if len(sys.argv) == 5: if len(sys.argv) == 6:
jobname = sys.argv[1] jobname = sys.argv[1]
repository = sys.argv[2] repository = sys.argv[2]
branch = sys.argv[3] branch = sys.argv[3]
buildbotUrl = sys.argv[4] buildbotUrl = sys.argv[4]
os_codename = sys.argv[5]
# add these into the request_data # add these into the request_data
request_data['jobname'] = jobname request_data['jobname'] = jobname
request_data['repository'] = repository request_data['repository'] = repository
request_data['branch'] = branch request_data['branch'] = branch
trigger_child_hooks(buildbotUrl) trigger_child_hooks(buildbotUrl, os_codename)
else: else:
print("Usage: python3 multibuild.py <jobname> <repository> <branch> <buildbotUrl>") print("Usage: python3 multibuild.py <jobname> <repository> <branch> <buildbotUrl> <os_codename>")

View File

@ -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 # execute multibuild.py
travis_bash.addStep( travis_bash.addStep(
steps.ShellCommand( steps.ShellCommand(
@ -72,6 +77,7 @@ travis_bash.addStep(
util.Property("repository"), util.Property("repository"),
util.Property("branch"), util.Property("branch"),
"https://buildbot.bitmessage.org", "https://buildbot.bitmessage.org",
util.Interpolate("%(prop:os_codename)s"),
], ],
) )
) )