[Scummvm-git-logs] scummvm-sites director-buildbot -> 0073195c9e3e524f024cef2ec8da04a3bd7ead62
rvanlaar
noreply at scummvm.org
Tue Apr 5 14:19:46 UTC 2022
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm-sites' repo located at https://github.com/scummvm/scummvm-sites .
Summary:
0073195c9e Import code changes made directly on server
Commit: 0073195c9e3e524f024cef2ec8da04a3bd7ead62
https://github.com/scummvm/scummvm-sites/commit/0073195c9e3e524f024cef2ec8da04a3bd7ead62
Author: Roland van Laar (roland at rolandvanlaar.nl)
Date: 2022-04-05T16:18:16+02:00
Commit Message:
Import code changes made directly on server
- deletes deploy files needed by dokku/docker
- make it multi master
- specify cache parameters tuned for scummvm
Changed paths:
R CHECKS
R Procfile
R apt-packages
R nginx.conf.sigil
R runtime.txt
R test-deploy/cloudinit.sh
R test-deploy/deploy.sh
buildbot.tac
director/build_factory.py
director/env.py
director/scummvm_reporter.py
director/targets.py
director/vendor/reporter_utils.py
master.py
poetry.lock
pyproject.toml
diff --git a/CHECKS b/CHECKS
deleted file mode 100644
index 0320a66..0000000
--- a/CHECKS
+++ /dev/null
@@ -1 +0,0 @@
-/ buildbot
diff --git a/Procfile b/Procfile
deleted file mode 100644
index a518108..0000000
--- a/Procfile
+++ /dev/null
@@ -1,2 +0,0 @@
-release: buildbot upgrade-master
-web: buildbot start --nodaemon .
diff --git a/apt-packages b/apt-packages
deleted file mode 100644
index ab70787..0000000
--- a/apt-packages
+++ /dev/null
@@ -1,2 +0,0 @@
-libsdl2-dev
-ccache
diff --git a/buildbot.tac b/buildbot.tac
index ca7e8c4..b25a1c6 100644
--- a/buildbot.tac
+++ b/buildbot.tac
@@ -1,7 +1,10 @@
-import os
+import os, sys
from twisted.application import service
-from buildbot.master import BuildMaster
+from director.vendor.buildmaster import BuildMaster
+#from buildbot.master import BuildMaster
+
+master_name = os.environ["MASTER_NAME"]
basedir = '.'
rotateLength = 10000000
@@ -18,13 +21,11 @@ if basedir == '.':
# note: this line is matched against to check that this is a buildmaster
# directory; do not edit it.
application = service.Application('buildmaster')
-from twisted.python.logfile import LogFile
from twisted.python.log import ILogObserver, FileLogObserver
-logfile = LogFile.fromFullPath(os.path.join(basedir, "twistd.log"), rotateLength=rotateLength,
- maxRotatedFiles=maxRotatedFiles)
-application.setComponent(ILogObserver, FileLogObserver(logfile).emit)
+application.setComponent(ILogObserver, FileLogObserver(sys.stdout).emit)
-m = BuildMaster(basedir, configfile, umask)
+#m = BuildMaster(basedir, configfile, umask)
+m = BuildMaster(basedir, configfile, umask, master_name=master_name)
m.setServiceParent(application)
m.log_rotation.rotateLength = rotateLength
m.log_rotation.maxRotatedFiles = maxRotatedFiles
diff --git a/director/build_factory.py b/director/build_factory.py
index 95d0a7d..a6071d5 100644
--- a/director/build_factory.py
+++ b/director/build_factory.py
@@ -1,18 +1,16 @@
"""Build Factory to configure, compile and build the scummvm binary."""
-from typing import Dict, Any
-
import os.path
+from typing import Any, Dict
from buildbot.plugins import steps, util
-from .env import env
default_step_kwargs: Dict[str, Any] = {"logEnviron": False}
default_env: Dict[str, str] = {
"SDL_VIDEODRIVER": "dummy",
"SDL_AUDIODRIVER": "dummy",
- "ASAN_OPTIONS": "detect_leaks=0:abort_on_error=1:disable_coredump=0:unmap_shadow_on_exit=1"
+ "ASAN_OPTIONS": "detect_leaks=0:abort_on_error=1:disable_coredump=0:unmap_shadow_on_exit=1",
}
@@ -31,7 +29,7 @@ def configure_has_not_been_run(step):
build_factory = util.BuildFactory()
# check out the source
checkout_step = steps.GitHub(
- repourl=env["REPOSITORY"], mode="incremental", **default_step_kwargs,
+ repourl="https://github.com/scummvm/scummvm", mode="incremental", **default_step_kwargs,
)
build_factory.addStep(checkout_step)
@@ -58,7 +56,12 @@ build_factory.addStep(
build_factory.addStep(
steps.Configure(
- command=["./configure", "--disable-all-engines", "--enable-engine=director", "--enable-asan"],
+ command=[
+ "./configure",
+ "--disable-all-engines",
+ "--enable-engine=director",
+ "--enable-asan",
+ ],
env={"CXX": "ccache g++"},
doStepIf=configure_has_not_been_run,
**default_step_kwargs,
diff --git a/director/env.py b/director/env.py
index 8551a4a..dc437b8 100644
--- a/director/env.py
+++ b/director/env.py
@@ -2,14 +2,13 @@
import os
-from dotenv import dotenv_values
+from environs import Env
-dotenv = dotenv_values()
-
-env = {}
+env = Env()
+env.read_env()
+ENABLE_FORCE_SCHEDULER = False
default_vars = {
- "ENABLE_FORCE_SCHEDULER": False,
"DATABASE_URL": "sqlite:///state.sqlite",
"BUILDBOT_URL": "http://localhost:5000/",
"DISCORD_WEBHOOK": False,
@@ -21,7 +20,7 @@ default_vars = {
"REPOSITORY": "https://github.com/scummvm/scummvm",
# base directory which contains all the targets
"TARGETS_BASEDIR": "~/wb1/",
- "PRODUCTION": False
+ "UI": False
}
diff --git a/director/scummvm_reporter.py b/director/scummvm_reporter.py
index 5198116..33af197 100644
--- a/director/scummvm_reporter.py
+++ b/director/scummvm_reporter.py
@@ -231,6 +231,8 @@ class JSONMessageFormatter:
url = ctx["build_url"]
+ # TODO: Convert title from interger to it's name
+ title = ctx["build"]["results"]
if ctx["build"]["results"] == SUCCESS:
color = 0x36A64F # green
title = f"Success {ctx['buildername']}"
diff --git a/director/targets.py b/director/targets.py
index 3f226f0..4d1fac5 100644
--- a/director/targets.py
+++ b/director/targets.py
@@ -1,13 +1,12 @@
import json
import os.path
from dataclasses import dataclass, fields
-from typing import List, Union
+from typing import List
from buildbot.config import BuilderConfig
from buildbot.plugins import steps, util
-from .build_factory import default_env, default_step_kwargs
-from .env import env
+from .build_factory import default_env
from .steps import ScummVMTest, download_step
@@ -46,7 +45,7 @@ target_fields = [f.name for f in fields(TestTarget)]
"""
test_targets = []
-with open(os.path.join(env["TARGETS_BASEDIR"], "targets.json"), "r") as data:
+with open(os.path.join("/storage", "targets.json"), "r") as data:
targets = json.loads(data.read())
for target in targets:
test_targets.append(
@@ -54,7 +53,7 @@ with open(os.path.join(env["TARGETS_BASEDIR"], "targets.json"), "r") as data:
)
-def generate_command(target: TestTarget, moviename: str):
+def generate_command(target: TestTarget, moviename: str) -> List[str]:
command = [
"../scummvm",
"-c",
@@ -70,7 +69,7 @@ def generate_command(target: TestTarget, moviename: str):
def generate_builder(target: TestTarget, workernames: List[str]) -> BuilderConfig:
factory = util.BuildFactory()
factory.addStep(download_step)
- base_dir = env["TARGETS_BASEDIR"]
+ base_dir = "/storage/"
to_directory = target.directory
if not to_directory.endswith("/"):
to_directory += "/"
diff --git a/director/vendor/reporter_utils.py b/director/vendor/reporter_utils.py
index 17a386d..1a06ce3 100644
--- a/director/vendor/reporter_utils.py
+++ b/director/vendor/reporter_utils.py
@@ -85,7 +85,7 @@ def getDetailsForBuilds(master, buildset, builds, wantProperties=False, wantStep
if wantPreviousBuild:
prev_builds = yield defer.gatherResults(
- [getPreviousBuild(master, build) for build in builds])
+ [getPreviousBuild(master, build) for build in builds if build is not None])
else: # we still need a list for the big zip
prev_builds = list(range(len(builds)))
@@ -117,4 +117,4 @@ def getDetailsForBuilds(master, buildset, builds, wantProperties=False, wantStep
build['steps'] = list(steps)
if wantPreviousBuild:
- build['prev_build'] = prev
\ No newline at end of file
+ build['prev_build'] = prev
diff --git a/master.py b/master.py
index efe797f..febfaa6 100644
--- a/master.py
+++ b/master.py
@@ -1,17 +1,15 @@
# -*- python -*-
# ex: set filetype=python:
-import os.path
from typing import Any
from datetime import timedelta
from buildbot.changes.changes import Change
from buildbot.plugins import reporters, schedulers, util, worker
-from buildbot.reporters.message import MessageFormatter
from twisted.python import log
+from environs import Env
from director.build_factory import build_factory
-from director.env import env, get_env
from director.lingo_factory import lingo_factory
from director.scummvm_reporter import JSONMessageFormatter, WebHookReporter
from director.targets import generate_builder, test_targets
@@ -25,28 +23,40 @@ c: Any
BuildmasterConfig: Any
c = BuildmasterConfig = {}
-PRODUCTION = get_env("PRODUCTION")
+env = Env()
+env.read_env()
####### SECRETS
# We don't use a secretsProvider. It wouldn't work together with
# the reporters.
+####### MultiMaster
+
+c["multiMaster"] = env.bool("MULTI_MASTER", False)
+
+WORKER_NAMES = env.list("WORKER_NAMES")
+
####### WORKERS
# The 'workers' list defines the set of recognized workers. Each element is
# a Worker object, specifying a unique worker name and password. The same
# worker name and password must be configured on the worker.
-c["workers"] = []
-scummvm_builbot_password = get_env("SCUMMVM_BUILDBOT_PASSWORD")
-if scummvm_builbot_password:
- worker_name = "john-scummvm-net"
- c["workers"].append(
- worker.Worker(worker_name, scummvm_builbot_password, max_builds=12)
- )
-else:
+HAS_WORKER = env.bool("HAS_WORKER", False)
+IS_LOCAL_WORKER = env.bool("IS_LOCAL_WORKER", False)
+if HAS_WORKER:
+ c["workers"] = []
+ scummvm_builbot_password = env("SCUMMVM_BUILDBOT_PASSWORD")
+ for worker_name in WORKER_NAMES:
+ c["workers"].append(
+ worker.Worker(
+ worker_name, scummvm_builbot_password, max_builds=env.int("MAX_BUILDS", 12)
+ )
+ )
+elif IS_LOCAL_WORKER:
+ c["workers"] = []
worker_name = "director-worker"
c["workers"].append(
- worker.LocalWorker(worker_name, max_builds=int(env["MAX_BUILDS"]))
+ worker.LocalWorker(worker_name, max_builds=env.int("MAX_BUILDS", 3))
)
# 'protocols' contains information about protocols which master will use for
@@ -54,15 +64,13 @@ else:
# could connect to your master with this protocol.
# 'port' must match the value configured into the workers (with their
# --master option)
-c["protocols"] = {"pb": {"port": 9989}}
-####### CHANGESOURCES
+c["protocols"] = {"pb": {"port": env.int("PROTOCOLS_PORT", 9989)}}
-# the 'change_source' setting tells the buildmaster how it should find out
-# about source code changes. Here we point to the buildbot version of a python hello-world project.
+####### SCHEDULERS
-# leave empty, the github hook should take care of it.
-c["change_source"] = []
+# Configure the Schedulers, which decide how to react to incoming changes. In this
+# case, just kick off a 'runtests' build
def file_is_director_related(change: Change) -> bool:
@@ -77,22 +85,20 @@ def file_is_director_related(change: Change) -> bool:
return True
return False
-
+REPOSITORY = env("REPOSITORY", "https://github.com/scummvm/scummvm")
####### BUILDER NAMES
lingo_builder = "lingotests (D4)"
builder_names = [lingo_builder]
-if PRODUCTION:
+if env.bool(
+ "FULL_BUILD", True
+): # Set FULL_BUILD to false to get a quicker lingo only build
builder_names.extend(target.builder_name for target in test_targets)
force_builder_names = ["build", *builder_names]
-####### SCHEDULERS
-
-# Configure the Schedulers, which decide how to react to incoming changes. In this
-# case, just kick off a 'runtests' build
build_scheduler = schedulers.SingleBranchScheduler(
name="all",
- change_filter=util.ChangeFilter(repository=env["REPOSITORY"]),
+ change_filter=util.ChangeFilter(repository=REPOSITORY),
treeStableTimer=5,
fileIsImportant=file_is_director_related,
builderNames=["build"],
@@ -117,26 +123,39 @@ c["schedulers"].append(force_scheduler)
# what steps, and which workers can execute them. Note that any particular build will
# only take place on one worker.
-build_lock = util.MasterLock("Build")
-
-
-c["builders"] = []
-if PRODUCTION:
- c["builders"].extend(generate_builder(target, [worker_name]) for target in test_targets)
-c["builders"].append(
- util.BuilderConfig(
- name="build",
- workernames=[worker_name],
- factory=build_factory,
- locks=[build_lock.access("exclusive")],
+if HAS_WORKER or IS_LOCAL_WORKER:
+ build_lock = util.MasterLock("Build")
+
+ c["builders"] = []
+ c["builders"].append(
+ util.BuilderConfig(
+ name="build",
+ workernames=[WORKER_NAMES[0]],
+ factory=build_factory,
+ locks=[build_lock.access("exclusive")],
+ )
)
-)
-c["builders"].append(
- util.BuilderConfig(
- name=lingo_builder, workernames=[worker_name], factory=lingo_factory
+ c["builders"].append(
+ util.BuilderConfig(
+ name=lingo_builder, workernames=WORKER_NAMES, factory=lingo_factory
+ )
)
-)
+
+ if env.bool(
+ "FULL_BUILD", True
+ ):
+ c["builders"].extend(
+ generate_builder(target, WORKER_NAMES) for target in test_targets
+ )
+
+####### CHANGESOURCES
+
+# the 'change_source' setting tells the buildmaster how it should find out
+# about source code changes. Here we point to the buildbot version of a python hello-world project.
+
+# leave empty, the github hook should take care of it.
+c["change_source"] = []
####### BUILDBOT SERVICES
@@ -146,57 +165,60 @@ c["builders"].append(
c["services"] = []
-if env["DISCORD_WEBHOOK"]:
+c["buildbotURL"] = env("BUILDBOT_URL")
+WEB_UI = env.bool("WEB_UI", True)
+if WEB_UI:
+ DISCORD_WEBHOOK = env("DISCORD_WEBHOOK")
scummvm_reporter = WebHookReporter(
- env["DISCORD_WEBHOOK"],
+ DISCORD_WEBHOOK,
mode="changesteps",
messageFormatter=JSONMessageFormatter(),
)
c["services"].append(scummvm_reporter)
-# RTS: Roland Test Server
-if get_env("RTS_DISCORD_WEBHOOK"):
- slack_webhook = reporters.SlackStatusPush(endpoint=get_env("RTS_DISCORD_WEBHOOK"))
- c["services"].append(slack_webhook)
+ # RTS: Roland Test Server
+ RTS_DISCORD_WEBHOOK = env("RTS_DISCORD_WEBHOOK", "")
+ if RTS_DISCORD_WEBHOOK:
+ slack_webhook = reporters.SlackStatusPush(endpoint=RTS_DISCORD_WEBHOOK)
+ c["services"].append(slack_webhook)
-####### PROJECT IDENTITY
+ github_hook = {
+ "secret": env("GITHUB_WEBHOOK_SECRET"),
+ "strict": True,
+ "pullrequest_ref": "head",
+ }
-# the 'title' string will appear at the top of this buildbot installation's
-# home pages (linked to the 'titleURL').
-c["title"] = "Director builds"
-c["titleURL"] = env["REPOSITORY"]
+ github_token = env("GITHUB_TOKEN")
+ if github_token:
+ github_hook["token"] = github_token
-# the 'buildbotURL' string should point to the location where the buildbot's
-# internal web server is visible. This typically uses the port number set in
-# the 'www' entry below, but with an externally-visible host name which the
-# buildbot cannot figure out without some help.
+ ####### PROJECT IDENTITY
-c["buildbotURL"] = env["BUILDBOT_URL"]
+ # the 'title' string will appear at the top of this buildbot installation's
+ # home pages (linked to the 'titleURL').
-github_hook = {
- "secret": env["GITHUB_WEBHOOK_SECRET"],
- "strict": True,
- "pullrequest_ref": "head",
-}
+ c["title"] = "Director builds"
+ c["titleURL"] = REPOSITORY
+ # the 'buildbotURL' string should point to the location where the buildbot's
+ # internal web server is visible. This typically uses the port number set in
+ # the 'www' entry below, but with an externally-visible host name which the
+ # buildbot cannot figure out without some help.
-github_token = get_env("GITHUB_TOKEN")
-if github_token:
- github_hook["token"] = github_token
+ #c["buildbotURL"] = "https://john-test.scummvm.org/"
-# minimalistic config to activate new web UI
-c["www"] = dict(
- port="tcp:5000:interface=127.0.0.1",
- plugins=dict(console_view={}, grid_view={},),
- change_hook_dialects={"github": github_hook},
- allowed_origins=["*"],
-)
+ # minimalistic config to activate new web UI
+ c["www"] = dict(
+ port=env("WEB_UI_CONNECTION", "tcp:5000:interface=127.0.0.1"),
+ plugins=dict(console_view={}, grid_view={},),
+ change_hook_dialects={"github": github_hook},
+ allowed_origins=["*"],
+ )
-if PRODUCTION:
c["www"]["auth"] = util.GitHubAuth(
- env["GITHUB_CLIENT_ID"],
- env["GITHUB_CLIENT_SECRET"],
+ env("GITHUB_CLIENT_ID"),
+ env("GITHUB_CLIENT_SECRET"),
apiVersion=4,
getTeamsMembership=True,
)
@@ -205,6 +227,22 @@ if PRODUCTION:
allowRules=[util.AnyControlEndpointMatcher(role="developers"),],
roleMatchers=[util.RolesFromGroups(groupPrefix="scummvm/")],
)
+ c['www']['ui_default_config'] = {
+ 'Grid.buildFetchLimit': 200,
+ }
+ c["configurators"] = [
+ util.JanitorConfigurator(logHorizon=timedelta(weeks=5), hour=23, dayOfWeek=0)
+ ]
+
+if env.bool("WAMP", False):
+ c['mq'] = {
+ 'type' : 'wamp',
+ 'router_url': env("WAMP_URL", 'ws://localhost:8080/ws'),
+ 'realm': 'realm1',
+ # valid are: none, critical, error, warn, info, debug, trace
+ #'wamp_debug_level' : 'error'
+ 'wamp_debug_level' : 'warn'
+}
####### DB URL
@@ -213,13 +251,23 @@ c["db"] = {
# It's easy to start with sqlite, but it's recommended to switch to a dedicated
# database, such as PostgreSQL or MySQL, for use in production environments.
# http://docs.buildbot.net/current/manual/configuration/global.html#database-specification
- "db_url": env["DATABASE_URL"],
+ "db_url": env("DATABASE_URL", default="sqlite:///state.sqlite"),
}
-c['configurators'] = [util.JanitorConfigurator(
- logHorizon=timedelta(weeks=5),
- hour=23,
- dayOfWeek=0
-)]
### disable sending usage data to buildbot. Their usage data receiver is down.
-c['buildbotNetUsageData'] = None
+c["buildbotNetUsageData"] = None
+
+### Use internal caching
+# https://docs.buildbot.net/2.8.4/manual/configuration/global.html#horizons
+
+c['caches'] = { # defaults
+ 'Changes' : 30000, # 10 Have seen up to 17K changes be requested in one request.
+ 'Builds' : 5000, # 15
+ 'chdicts' : 30000, # 1
+ 'BuildRequests' : 20, # 1
+ 'SourceStamps' : 20, # 1
+ 'ssdicts' : 20, # 20
+ 'objectids' : 100, # 1
+ 'usdicts' : 10, # 1
+}
+
diff --git a/nginx.conf.sigil b/nginx.conf.sigil
deleted file mode 100644
index 8576d81..0000000
--- a/nginx.conf.sigil
+++ /dev/null
@@ -1,182 +0,0 @@
-{{ range $port_map := .PROXY_PORT_MAP | split " " }}
-{{ $port_map_list := $port_map | split ":" }}
-{{ $scheme := index $port_map_list 0 }}
-{{ $listen_port := index $port_map_list 1 }}
-{{ $upstream_port := index $port_map_list 2 }}
-
-{{ if eq $scheme "http" }}
-server {
- listen [{{ $.NGINX_BIND_ADDRESS_IP6 }}]:{{ $listen_port }};
- listen {{ if $.NGINX_BIND_ADDRESS_IP4 }}{{ $.NGINX_BIND_ADDRESS_IP4 }}:{{end}}{{ $listen_port }};
- {{ if $.NOSSL_SERVER_NAME }}server_name {{ $.NOSSL_SERVER_NAME }}; {{ end }}
- access_log {{ $.NGINX_ACCESS_LOG_PATH }};
- error_log {{ $.NGINX_ERROR_LOG_PATH }};
-{{ if (and (eq $listen_port "80") ($.SSL_INUSE)) }}
- return 301 https://$host:{{ $.PROXY_SSL_PORT }}$request_uri;
-{{ else }}
- location / {
-
- gzip on;
- gzip_min_length 1100;
- gzip_buffers 4 32k;
- gzip_types text/css text/javascript text/xml text/plain text/x-component application/javascript application/x-javascript application/json application/xml application/rss+xml font/truetype application/x-font-ttf font/opentype application/vnd.ms-fontobject image/svg+xml;
- gzip_vary on;
- gzip_comp_level 6;
-
- proxy_pass http://{{ $.APP }}-{{ $upstream_port }};
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection $http_connection;
- proxy_set_header Host $http_host;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_set_header X-Forwarded-For $remote_addr;
- proxy_set_header X-Forwarded-Port $server_port;
- proxy_set_header X-Request-Start $msec;
- }
- include {{ $.DOKKU_ROOT }}/{{ $.APP }}/nginx.conf.d/*.conf;
-
- error_page 400 401 402 403 405 406 407 408 409 410 411 412 413 414 415 416 417 418 420 422 423 424 426 428 429 431 444 449 450 451 /400-error.html;
- location /400-error.html {
- root {{ $.DOKKU_LIB_ROOT }}/data/nginx-vhosts/dokku-errors;
- internal;
- }
-
- error_page 404 /404-error.html;
- location /404-error.html {
- root {{ $.DOKKU_LIB_ROOT }}/data/nginx-vhosts/dokku-errors;
- internal;
- }
-
- error_page 500 501 502 503 504 505 506 507 508 509 510 511 /500-error.html;
- location /500-error.html {
- root {{ $.DOKKU_LIB_ROOT }}/data/nginx-vhosts/dokku-errors;
- internal;
- }
-{{ end }}
-}
-{{ else if eq $scheme "https"}}
-server {
- listen [{{ $.NGINX_BIND_ADDRESS_IP6 }}]:{{ $listen_port }} ssl {{ if eq $.HTTP2_SUPPORTED "true" }}http2{{ else if eq $.SPDY_SUPPORTED "true" }}spdy{{ end }};
- listen {{ if $.NGINX_BIND_ADDRESS_IP4 }}{{ $.NGINX_BIND_ADDRESS_IP4 }}:{{end}}{{ $listen_port }} ssl {{ if eq $.HTTP2_SUPPORTED "true" }}http2{{ else if eq $.SPDY_SUPPORTED "true" }}spdy{{ end }};
- {{ if $.SSL_SERVER_NAME }}server_name {{ $.SSL_SERVER_NAME }}; {{ end }}
- {{ if $.NOSSL_SERVER_NAME }}server_name {{ $.NOSSL_SERVER_NAME }}; {{ end }}
- access_log {{ $.NGINX_ACCESS_LOG_PATH }};
- error_log {{ $.NGINX_ERROR_LOG_PATH }};
-
- ssl_certificate {{ $.APP_SSL_PATH }}/server.crt;
- ssl_certificate_key {{ $.APP_SSL_PATH }}/server.key;
- ssl_protocols TLSv1.2 {{ if eq $.TLS13_SUPPORTED "true" }}TLSv1.3{{ end }};
- ssl_prefer_server_ciphers off;
-
- keepalive_timeout 70;
- {{ if and (eq $.SPDY_SUPPORTED "true") (ne $.HTTP2_SUPPORTED "true") }}add_header Alternate-Protocol {{ $.PROXY_SSL_PORT }}:npn-spdy/2;{{ end }}
-
- proxy_set_header Host $http_host;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_set_header X-Forwarded-For $remote_addr;
- proxy_set_header X-Forwarded-Port $server_port;
- proxy_set_header X-Request-Start $msec;
-
- location / {
-
- gzip on;
- gzip_min_length 1100;
- gzip_buffers 4 32k;
- gzip_types text/css text/javascript text/xml text/plain text/x-component application/javascript application/x-javascript application/json application/xml application/rss+xml font/truetype application/x-font-ttf font/opentype application/vnd.ms-fontobject image/svg+xml;
- gzip_vary on;
- gzip_comp_level 6;
-
- proxy_pass http://{{ $.APP }}-{{ $upstream_port }};
- {{ if eq $.HTTP2_PUSH_SUPPORTED "true" }}http2_push_preload on; {{ end }}
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection $http_connection;
-
- }
-
- location /sse/ {
- # proxy buffering will prevent sse to work
- proxy_buffering off;
- proxy_pass http://{{ $.APP }}-{{ $upstream_port }}/sse/;
- }
-
- location /ws {
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "upgrade";
- proxy_pass http://{{ $.APP }}-{{ $upstream_port }}/ws;
- # raise the proxy timeout for the websocket
- proxy_read_timeout 6000s;
- }
- include {{ $.DOKKU_ROOT }}/{{ $.APP }}/nginx.conf.d/*.conf;
-
- error_page 400 401 402 403 405 406 407 408 409 410 411 412 413 414 415 416 417 418 420 422 423 424 426 428 429 431 444 449 450 451 /400-error.html;
- location /400-error.html {
- root {{ $.DOKKU_LIB_ROOT }}/data/nginx-vhosts/dokku-errors;
- internal;
- }
-
- error_page 404 /404-error.html;
- location /404-error.html {
- root {{ $.DOKKU_LIB_ROOT }}/data/nginx-vhosts/dokku-errors;
- internal;
- }
-
- error_page 500 501 503 504 505 506 507 508 509 510 511 /500-error.html;
- location /500-error.html {
- root {{ $.DOKKU_LIB_ROOT }}/data/nginx-vhosts/dokku-errors;
- internal;
- }
-
- error_page 502 /502-error.html;
- location /502-error.html {
- root {{ $.DOKKU_LIB_ROOT }}/data/nginx-vhosts/dokku-errors;
- internal;
- }
-}
-{{ else if eq $scheme "grpc"}}
-{{ if eq $.GRPC_SUPPORTED "true"}}{{ if eq $.HTTP2_SUPPORTED "true"}}
-server {
- listen [{{ $.NGINX_BIND_ADDRESS_IP6 }}]:{{ $listen_port }} http2;
- listen {{ if $.NGINX_BIND_ADDRESS_IP4 }}{{ $.NGINX_BIND_ADDRESS_IP4 }}:{{end}}{{ $listen_port }} http2;
- {{ if $.NOSSL_SERVER_NAME }}server_name {{ $.NOSSL_SERVER_NAME }}; {{ end }}
- access_log {{ $.NGINX_ACCESS_LOG_PATH }};
- error_log {{ $.NGINX_ERROR_LOG_PATH }};
- location / {
- grpc_pass grpc://{{ $.APP }}-{{ $upstream_port }};
- }
- include {{ $.DOKKU_ROOT }}/{{ $.APP }}/nginx.conf.d/*.conf;
-}
-{{ end }}{{ end }}
-{{ else if eq $scheme "grpcs"}}
-{{ if eq $.GRPC_SUPPORTED "true"}}{{ if eq $.HTTP2_SUPPORTED "true"}}
-server {
- listen [{{ $.NGINX_BIND_ADDRESS_IP6 }}]:{{ $listen_port }} ssl http2;
- listen {{ if $.NGINX_BIND_ADDRESS_IP4 }}{{ $.NGINX_BIND_ADDRESS_IP4 }}:{{end}}{{ $listen_port }} ssl http2;
- {{ if $.NOSSL_SERVER_NAME }}server_name {{ $.NOSSL_SERVER_NAME }}; {{ end }}
- access_log {{ $.NGINX_ACCESS_LOG_PATH }};
- error_log {{ $.NGINX_ERROR_LOG_PATH }};
-
- ssl_certificate {{ $.APP_SSL_PATH }}/server.crt;
- ssl_certificate_key {{ $.APP_SSL_PATH }}/server.key;
- ssl_protocols TLSv1.2 {{ if eq $.TLS13_SUPPORTED "true" }}TLSv1.3{{ end }};
- ssl_prefer_server_ciphers off;
-
- location / {
- grpc_pass grpc://{{ $.APP }}-{{ $upstream_port }};
- }
- include {{ $.DOKKU_ROOT }}/{{ $.APP }}/nginx.conf.d/*.conf;
-}
-{{ end }}{{ end }}
-{{ end }}
-{{ end }}
-
-{{ if $.DOKKU_APP_WEB_LISTENERS }}
-{{ range $upstream_port := $.PROXY_UPSTREAM_PORTS | split " " }}
-upstream {{ $.APP }}-{{ $upstream_port }} {
-{{ range $listeners := $.DOKKU_APP_WEB_LISTENERS | split " " }}
-{{ $listener_list := $listeners | split ":" }}
-{{ $listener_ip := index $listener_list 0 }}
- server {{ $listener_ip }}:{{ $upstream_port }};{{ end }}
-}
-{{ end }}{{ end }}
diff --git a/poetry.lock b/poetry.lock
index 9d65551..2b0b99c 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -415,6 +415,24 @@ category = "main"
optional = false
python-versions = ">=3.5"
+[[package]]
+name = "environs"
+version = "9.3.2"
+description = "simplified environment variable parsing"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[package.dependencies]
+marshmallow = ">=2.7.0"
+python-dotenv = "*"
+
+[package.extras]
+dev = ["pytest", "dj-database-url", "dj-email-url", "django-cache-url", "flake8 (==3.9.0)", "flake8-bugbear (==21.3.2)", "mypy (==0.812)", "pre-commit (>=2.4,<3.0)", "tox"]
+django = ["dj-database-url", "dj-email-url", "django-cache-url"]
+lint = ["flake8 (==3.9.0)", "flake8-bugbear (==21.3.2)", "mypy (==0.812)", "pre-commit (>=2.4,<3.0)"]
+tests = ["pytest", "dj-database-url", "dj-email-url", "django-cache-url"]
+
[[package]]
name = "flatbuffers"
version = "2.0"
@@ -627,6 +645,20 @@ category = "main"
optional = false
python-versions = ">=3.6"
+[[package]]
+name = "marshmallow"
+version = "3.12.2"
+description = "A lightweight library for converting complex datatypes to and from native Python datatypes."
+category = "main"
+optional = false
+python-versions = ">=3.5"
+
+[package.extras]
+dev = ["pytest", "pytz", "simplejson", "mypy (==0.910)", "flake8 (==3.9.2)", "flake8-bugbear (==21.4.3)", "pre-commit (>=2.4,<3.0)", "tox"]
+docs = ["sphinx (==4.0.3)", "sphinx-issues (==1.2.0)", "alabaster (==0.7.12)", "sphinx-version-warning (==1.1.2)", "autodocsumm (==0.2.6)"]
+lint = ["mypy (==0.910)", "flake8 (==3.9.2)", "flake8-bugbear (==21.4.3)", "pre-commit (>=2.4,<3.0)"]
+tests = ["pytest", "pytz", "simplejson"]
+
[[package]]
name = "matplotlib-inline"
version = "0.1.2"
@@ -940,8 +972,8 @@ six = ">=1.5"
[[package]]
name = "python-dotenv"
-version = "0.13.0"
-description = "Add .env support to your django/flask apps in development and deployments"
+version = "0.18.0"
+description = "Read key-value pairs from a .env file and set them as environment variables"
category = "main"
optional = false
python-versions = "*"
@@ -1351,8 +1383,8 @@ testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"]
[metadata]
lock-version = "1.1"
-python-versions = "3.8.6"
-content-hash = "098ef85d3c1986febc260aed568d83ab39af79c40b094d87e845d69f859b2f71"
+python-versions = "^3.8.4"
+content-hash = "0e5fa1e4b1c6b55649660664a15fc324079df9062e3d1cc3c9f66be7ff437db0"
[metadata.files]
appdirs = [
@@ -1561,6 +1593,10 @@ decorator = [
{file = "decorator-5.0.9-py3-none-any.whl", hash = "sha256:6e5c199c16f7a9f0e3a61a4a54b3d27e7dad0dbdde92b944426cb20914376323"},
{file = "decorator-5.0.9.tar.gz", hash = "sha256:72ecfba4320a893c53f9706bebb2d55c270c1e51a28789361aa93e4a21319ed5"},
]
+environs = [
+ {file = "environs-9.3.2-py2.py3-none-any.whl", hash = "sha256:6bef733b88cc901e787cf24fb2eaa72621b0656226ea4e332ab24ed0cba36fcf"},
+ {file = "environs-9.3.2.tar.gz", hash = "sha256:2eb671afd37e6e9820131b918bbbcaa6658d0fb420ebf35bdfb750ae39c51a66"},
+]
flatbuffers = [
{file = "flatbuffers-2.0-py2.py3-none-any.whl", hash = "sha256:3751954f0604580d3219ae49a85fafec9d85eec599c0b96226e1bc0b48e57474"},
{file = "flatbuffers-2.0.tar.gz", hash = "sha256:12158ab0272375eab8db2d663ae97370c33f152b27801fa6024e1d6105fd4dd2"},
@@ -1703,6 +1739,10 @@ markupsafe = [
{file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"},
{file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"},
]
+marshmallow = [
+ {file = "marshmallow-3.12.2-py2.py3-none-any.whl", hash = "sha256:d4090ca9a36cd129126ad8b10c3982c47d4644a6e3ccb20534b512badce95f35"},
+ {file = "marshmallow-3.12.2.tar.gz", hash = "sha256:77368dfedad93c3a041cbbdbce0b33fac1d8608c9e2e2288408a43ce3493d2ff"},
+]
matplotlib-inline = [
{file = "matplotlib-inline-0.1.2.tar.gz", hash = "sha256:f41d5ff73c9f5385775d5c0bc13b424535c8402fe70ea8210f93e11f3683993e"},
{file = "matplotlib_inline-0.1.2-py3-none-any.whl", hash = "sha256:5cf1176f554abb4fa98cb362aa2b55c500147e4bdbb07e3fda359143e1da0811"},
@@ -1958,8 +1998,8 @@ python-dateutil = [
{file = "python_dateutil-2.8.1-py2.py3-none-any.whl", hash = "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"},
]
python-dotenv = [
- {file = "python-dotenv-0.13.0.tar.gz", hash = "sha256:3b9909bc96b0edc6b01586e1eed05e71174ef4e04c71da5786370cebea53ad74"},
- {file = "python_dotenv-0.13.0-py2.py3-none-any.whl", hash = "sha256:25c0ff1a3e12f4bde8d592cc254ab075cfe734fc5dd989036716fd17ee7e5ec7"},
+ {file = "python-dotenv-0.18.0.tar.gz", hash = "sha256:effaac3c1e58d89b3ccb4d04a40dc7ad6e0275fda25fd75ae9d323e2465e202d"},
+ {file = "python_dotenv-0.18.0-py2.py3-none-any.whl", hash = "sha256:dd8fe852847f4fbfadabf6183ddd4c824a9651f02d51714fa075c95561959c7d"},
]
python-snappy = [
{file = "python-snappy-0.6.0.tar.gz", hash = "sha256:168a98d3f597b633cfeeae7fe1c78a8dfd81f018b866cf7ce9e4c56086af891a"},
diff --git a/pyproject.toml b/pyproject.toml
index 0f118b7..11c9d5b 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -5,8 +5,7 @@ description = "Buildbot for scummvms director tests"
authors = ["Roland van Laar <roland at rolandvanlaar.nl>"]
[tool.poetry.dependencies]
-python = "3.8.6"
-python-dotenv = "^0.13.0"
+python = "^3.8.4"
buildbot = {extras = ["bundle"], version = "==2.8.4"}
buildbot_slack = "^0.2.3"
service_identity = "^18.1.0"
@@ -15,6 +14,8 @@ wheel = "^0.34.2"
psycopg2 = "^2.8.5"
sqlalchemy = "==1.3.24" # 1.4 breaks due to a missing strategy engine
crossbar = "^21.3.1"
+environs = "^9.3.2"
+buildbot-worker = "2.8.4"
[tool.poetry.dev-dependencies]
pylint = "^2.4.4"
diff --git a/runtime.txt b/runtime.txt
deleted file mode 100644
index 0fd6938..0000000
--- a/runtime.txt
+++ /dev/null
@@ -1 +0,0 @@
-python-3.8.6
diff --git a/test-deploy/cloudinit.sh b/test-deploy/cloudinit.sh
deleted file mode 100644
index d42fbff..0000000
--- a/test-deploy/cloudinit.sh
+++ /dev/null
@@ -1,158 +0,0 @@
-#cloud-config
-
-apt:
- sources:
- source_dokku:
- source: 'deb https://packagecloud.io/dokku/dokku/ubuntu/ $RELEASE main'
- key: |
- -----BEGIN PGP PUBLIC KEY BLOCK-----
- Version: GnuPG v1.4.11 (GNU/Linux)
-
- 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
- =laU4
- -----END PGP PUBLIC KEY BLOCK-----
- source_docker:
- source: 'deb [arch=amd64] https://download.docker.com/linux/ubuntu $RELEASE stable'
- key: |
- -----BEGIN PGP PUBLIC KEY BLOCK-----
-
- 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
- YT90qFF93M3v01BbxP+EIY2/9tiIPbrd
- =0YYh
- -----END PGP PUBLIC KEY BLOCK-----
-
- debconf_selections:
- web: dokku dokku/web_config boolean false
- vhost: dokku dokku/vhost_enable boolean true
- # set the domain name of the new Dokku server
- hostname: dokku dokku/hostname string projecttycho.nl
- # this copies over the public SSH key assigned to the server
- key: dokku dokku/key_file string /root/.ssh/authorized_keys
-
-packages:
- - dokku
- # packages needed for local workers
- - ccache
- - libsdl2-dev
-package_update: true
-package_upgrade: true
-# TODO: back to true when it works.
-package_reboot_if_required: false
-
-runcmd:
- - [ 'dokku', 'plugin:install', 'https://github.com/dokku/dokku-postgres.git' ]
- - [ 'dokku', 'plugin:install', 'https://github.com/dokku/dokku-letsencrypt.git' ]
\ No newline at end of file
diff --git a/test-deploy/deploy.sh b/test-deploy/deploy.sh
deleted file mode 100755
index 46f104f..0000000
--- a/test-deploy/deploy.sh
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/usr/bin/env bash
-
-# settings exit on:
-# -e: non zero exit code,
-# -u: an undefined variable
-# pipefile: return exit code of last command in the pipe
-set -euo pipefail
-
-LOGFILE=run.txt
-HOST=test-buildbot
-DOMAIN=projecttycho.nl
-
-# create and wait for droplet to come up
-doctl compute droplet create test-deploy \
- --enable-monitoring \
- --image ubuntu-20-04-x64 \
- --size s-1vcpu-1gb \
- --region ams3 \
- --user-data-file cloudinit.sh \
- --ssh-keys 27:98:ce:25:93:79:5a:9e:d6:46:94:10:07:5f:a6:fd \
- --format ID \
- --wait \
- > $LOGFILE
-
-# get droplet ID
-DO_ID=`tail -1 $LOGFILE`
-
-# get droplet IP address
-doctl compute droplet get $DO_ID \
- --format PublicIPv4 \
- >> $LOGFILE
-DO_IP=`tail -1 $LOGFILE`
-
-# create POST body for Transip via jq.
-# In bash it's not possible to use $VARs in single quoted strings
-POST_JSON=`jq -n --arg host "$HOST" --arg ip "$DO_IP" \
-'{
- "dnsEntry": {
- "name": $host,
- "expire": 60,
- "type": "A",
- "content": $ip
- }
-}'`
-
-curl -X PATCH \
- -H "Content-Type: application/json" \
- -H "Authorization: Bearer $BEARER" \
- -d "$POST_JSON" \
- "https://api.transip.nl/v6/domains/$DOMAIN/dns" \
- >> $LOGFILE
-
-# Be able to login without SSH complaining
-ssh-keygen -f ~/.ssh/known_hosts -R "$HOST.$DOMAIN"
More information about the Scummvm-git-logs
mailing list