]>
git.immae.eu Git - perso/Immae/Config/Nix.git/blob - modules/private/buildbot/projects/denise/__init__.py
20ba913002195e38bd9fd9f285b101a82d20066e
1 from buildbot
.plugins
import *
2 from buildbot_common
.build_helpers
import *
4 from buildbot
.util
import bytes2unicode
7 __all__
= [ "configure", "E" ]
11 BUILDBOT_URL
= "https://git.immae.eu/buildbot/{}/".format(PROJECT
)
12 SOCKET
= "unix:/run/buildbot/{}.sock".format(PROJECT
)
13 PB_SOCKET
= "unix:address=/run/buildbot/{}_pb.sock".format(PROJECT
)
14 SSH_KEY_PATH
= "/var/lib/buildbot/buildbot_key"
15 SSH_HOST_KEY
= "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIFbhFTl2A2RJn5L51yxJM4XfCS2ZaiSX/jo9jFSdghF"
17 OMS_RELEASE_PATH
= "/var/lib/buildbot/outputs/denise/oms"
18 OMS_BETA_PATH
= "/var/lib/buildbot/outputs/denise/oms_beta"
19 OMS_GIT_URL
= "gitolite@git.immae.eu:perso/Denise/oms"
21 AVENTURIERS_RELEASE_PATH
= "/var/lib/buildbot/outputs/denise/aventuriers"
22 AVENTURIERS_GIT_URL
= "https://git.immae.eu/perso/Denise/aventuriers.git"
25 SECRETS_FILE
= os
.getcwd() + "/secrets"
26 LDAP_URL
= "ldaps://ldap.immae.eu:636"
27 LDAP_ADMIN_USER
= "cn=buildbot,ou=services,dc=immae,dc=eu"
28 LDAP_BASE
= "dc=immae,dc=eu"
29 LDAP_PATTERN
= "(uid=%(username)s)"
30 LDAP_GROUP_PATTERN
= "(&(memberOf=cn=groups,ou=denise,cn=buildbot,ou=services,dc=immae,dc=eu)(member=%(dn)s))"
31 TITLE_URL
= "https://oms.syanni.eu"
32 TITLE
= "Syanni website"
34 class CustomBase(webhooks
.base
):
35 def getChanges(self
, request
):
37 content
= request
.content
.read()
38 args
= json
.loads(bytes2unicode(content
))
39 except Exception as e
:
40 raise ValueError("Error loading JSON: " + str(e
))
42 args
.setdefault("comments", "")
43 args
.setdefault("repository", "")
44 args
.setdefault("author", args
.get("who", "unknown"))
49 c
["buildbotURL"] = E
.BUILDBOT_URL
50 c
["www"]["port"] = E
.SOCKET
52 c
["www"]["change_hook_dialects"]["base"] = {
53 "custom_class": CustomBase
55 c
['workers'].append(worker
.LocalWorker("generic-worker-denise"))
57 c
['schedulers'].append(hook_scheduler("DeniseOMS", timer
=1))
58 c
['schedulers'].append(hook_scheduler("DeniseAventuriers", timer
=1))
59 c
['schedulers'].append(force_scheduler("force_denise", [
60 "DeniseOMS_build", "DeniseAventuriers_build"
63 c
['builders'].append(denise_oms_factory())
64 c
['builders'].append(denise_aventuriers_factory())
66 def denise_oms_factory():
68 def oms_run_path(props
):
69 if props
.hasProperty("branch") and len(props
["branch"]) > 0 and props
["branch"] == "master":
70 return "/run/denise_oms/gunicorn.pid"
72 return "/run/denise_oms_beta/gunicorn.pid"
76 if props
.hasProperty("branch") and len(props
["branch"]) > 0 and props
["branch"] == "master":
77 return "https://oms.syanni.eu"
79 return "https://beta.oms.syanni.eu"
83 if props
.hasProperty("branch") and len(props
["branch"]) > 0 and props
["branch"] == "master":
84 return E
.OMS_RELEASE_PATH
86 return E
.OMS_BETA_PATH
88 factory
= util
.BuildFactory()
89 factory
.addStep(steps
.Git(logEnviron
=False, repourl
=E
.OMS_GIT_URL
,
90 submodules
=True, sshPrivateKey
=open(E
.SSH_KEY_PATH
).read().rstrip(),
91 sshHostKey
=E
.SSH_HOST_KEY
, mode
="full", method
="copy"))
92 factory
.addStep(steps
.MasterShellCommand(command
=util
.Interpolate("rm -rf %(kw:oms_path)s", oms_path
=oms_path
)))
93 factory
.addStep(steps
.DirectoryUpload(workersrc
="../source",
96 factory
.addStep(steps
.MasterShellCommand(command
=util
.Interpolate("chmod -R a+rX %(kw:oms_path)s", oms_path
=oms_path
)))
97 factory
.addStep(steps
.MasterShellCommand(command
=util
.Interpolate("kill $(cat %(kw:oms_run_path)s)", oms_run_path
=oms_run_path
)))
99 return util
.BuilderConfig(name
="DeniseOMS_build", workernames
=["generic-worker-denise"], factory
=factory
)
101 def denise_aventuriers_factory():
103 "PATH": os
.environ
["BUILDBOT_PATH_Aventuriers"] + ":${PATH}",
104 "TZ": "Europe/Paris",
107 factory
= util
.BuildFactory()
108 factory
.addStep(steps
.Git(logEnviron
=False, repourl
=E
.AVENTURIERS_GIT_URL
,
109 submodules
=True, mode
="full", method
="fresh"))
110 factory
.addStep(steps
.ShellCommand(name
="build files",
111 logEnviron
=False, haltOnFailure
=True, workdir
="build",
112 env
=path_env
, command
=["make", "tout", "encyclo"]))
113 factory
.addStep(steps
.MasterShellCommand(command
="rm -rf {}".format(E
.AVENTURIERS_RELEASE_PATH
)))
114 factory
.addStep(steps
.DirectoryUpload(workersrc
="../build/html",
115 masterdest
=E
.AVENTURIERS_RELEASE_PATH
,
116 url
="https://aventuriers.syanni.eu"))
117 factory
.addStep(steps
.FileUpload(name
="upload epub file", workersrc
="aventuriers.epub",
118 workdir
="build", masterdest
=E
.AVENTURIERS_RELEASE_PATH
+ "/aventuriers.epub",
119 url
="https://aventuriers.syanni.eu/aventuriers.epub", mode
=0o644))
120 factory
.addStep(steps
.FileUpload(name
="upload mobi file", workersrc
="aventuriers.mobi",
121 workdir
="build", masterdest
=E
.AVENTURIERS_RELEASE_PATH
+ "/aventuriers.mobi",
122 url
="https://aventuriers.syanni.eu/aventuriers.mobi", mode
=0o644))
123 factory
.addStep(steps
.FileUpload(name
="upload pdf file", workersrc
="aventuriers.pdf",
124 workdir
="build", masterdest
=E
.AVENTURIERS_RELEASE_PATH
+ "/aventuriers.pdf",
125 url
="https://aventuriers.syanni.eu/aventuriers.pdf", mode
=0o644))
126 factory
.addStep(steps
.FileUpload(name
="upload encyclo pdf file", workersrc
="encyclo.pdf",
127 workdir
="build", masterdest
=E
.AVENTURIERS_RELEASE_PATH
+ "/encyclo.pdf",
128 url
="https://aventuriers.syanni.eu/encyclo.pdf", mode
=0o644))
129 factory
.addStep(steps
.MasterShellCommand(command
="chmod -R a+rX {}".format(E
.AVENTURIERS_RELEASE_PATH
)))
131 return util
.BuilderConfig(name
="DeniseAventuriers_build", workernames
=["generic-worker-denise"], factory
=factory
)