]>
git.immae.eu Git - perso/Immae/Config/Nix.git/blob - modules/private/buildbot/projects/denise/__init__.py
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 BINGO_RELEASE_PATH
= "/var/lib/buildbot/outputs/denise/bingo"
18 BINGO_BETA_PATH
= "/var/lib/buildbot/outputs/denise/bingo_beta"
19 BINGO_GIT_URL
= "gitolite@git.immae.eu:perso/Denise/bingo"
21 OMS_RELEASE_PATH
= "/var/lib/buildbot/outputs/denise/oms"
22 OMS_BETA_PATH
= "/var/lib/buildbot/outputs/denise/oms_beta"
23 OMS_GIT_URL
= "gitolite@git.immae.eu:perso/Denise/oms"
25 AVENTURIERS_RELEASE_PATH
= "/var/lib/buildbot/outputs/denise/aventuriers"
26 AVENTURIERS_GIT_URL
= "https://git.immae.eu/perso/Denise/aventuriers.git"
29 SECRETS_FILE
= os
.getcwd() + "/secrets"
30 LDAP_URL
= "ldaps://ldap.immae.eu:636"
31 LDAP_ADMIN_USER
= "cn=buildbot,ou=services,dc=immae,dc=eu"
32 LDAP_BASE
= "dc=immae,dc=eu"
33 LDAP_PATTERN
= "(uid=%(username)s)"
34 LDAP_GROUP_PATTERN
= "(&(memberOf=cn=groups,ou=denise,cn=buildbot,ou=services,dc=immae,dc=eu)(member=%(dn)s))"
35 TITLE_URL
= "https://oms.syanni.eu"
36 TITLE
= "Syanni website"
38 class CustomBase(webhooks
.base
):
39 def getChanges(self
, request
):
41 content
= request
.content
.read()
42 args
= json
.loads(bytes2unicode(content
))
43 except Exception as e
:
44 raise ValueError("Error loading JSON: " + str(e
))
46 args
.setdefault("comments", "")
47 args
.setdefault("repository", "")
48 args
.setdefault("author", args
.get("who", "unknown"))
53 c
["buildbotURL"] = E
.BUILDBOT_URL
54 c
["www"]["port"] = E
.SOCKET
56 c
["www"]["change_hook_dialects"]["base"] = {
57 "custom_class": CustomBase
59 c
['workers'].append(worker
.LocalWorker("generic-worker-denise"))
61 c
['schedulers'].append(hook_scheduler("DeniseBingo", timer
=1))
62 c
['schedulers'].append(hook_scheduler("DeniseOMS", timer
=1))
63 c
['schedulers'].append(hook_scheduler("DeniseAventuriers", timer
=1))
64 c
['schedulers'].append(force_scheduler("force_denise", [
65 "DeniseBingo_build", "DeniseOMS_build", "DeniseAventuriers_build"
68 c
['builders'].append(denise_oms_factory())
69 c
['builders'].append(denise_bingo_factory())
70 c
['builders'].append(denise_aventuriers_factory())
72 def denise_bingo_factory():
74 def bingo_run_path(props
):
75 if props
.hasProperty("branch") and len(props
["branch"]) > 0 and props
["branch"] == "master":
76 return "/run/denise_bingo/gunicorn.pid"
78 return "/run/denise_bingo_beta/gunicorn.pid"
81 def bingo_systemd_service(props
):
82 if props
.hasProperty("branch") and len(props
["branch"]) > 0 and props
["branch"] == "master":
85 return "denise-bingo-beta"
89 if props
.hasProperty("branch") and len(props
["branch"]) > 0 and props
["branch"] == "master":
90 return "https://bingo.syanni.eu"
92 return "https://beta.bingo.syanni.eu"
95 def bingo_path(props
):
96 if props
.hasProperty("branch") and len(props
["branch"]) > 0 and props
["branch"] == "master":
97 return E
.BINGO_RELEASE_PATH
99 return E
.BINGO_BETA_PATH
101 factory
= util
.BuildFactory()
102 factory
.addStep(steps
.Git(logEnviron
=False, repourl
=E
.BINGO_GIT_URL
,
103 submodules
=True, sshPrivateKey
=open(E
.SSH_KEY_PATH
).read().rstrip(),
104 sshHostKey
=E
.SSH_HOST_KEY
, mode
="full", method
="copy"))
105 factory
.addStep(steps
.MasterShellCommand(command
=util
.Interpolate("rm -rf %(kw:bingo_path)s", bingo_path
=bingo_path
)))
106 factory
.addStep(steps
.DirectoryUpload(workersrc
="../source",
107 masterdest
=bingo_path
,
109 factory
.addStep(steps
.MasterShellCommand(command
=util
.Interpolate("chmod -R a+rX %(kw:bingo_path)s", bingo_path
=bingo_path
)))
110 factory
.addStep(steps
.MasterShellCommand(command
=util
.Interpolate("/run/wrappers/bin/sudo systemctl restart %(kw:bingo_service)s.service", bingo_service
=bingo_systemd_service
)))
112 return util
.BuilderConfig(name
="DeniseBingo_build", workernames
=["generic-worker-denise"], factory
=factory
)
114 def denise_oms_factory():
116 def oms_run_path(props
):
117 if props
.hasProperty("branch") and len(props
["branch"]) > 0 and props
["branch"] == "master":
118 return "/run/denise_oms/gunicorn.pid"
120 return "/run/denise_oms_beta/gunicorn.pid"
123 def oms_systemd_service(props
):
124 if props
.hasProperty("branch") and len(props
["branch"]) > 0 and props
["branch"] == "master":
127 return "denise-oms-beta"
131 if props
.hasProperty("branch") and len(props
["branch"]) > 0 and props
["branch"] == "master":
132 return "https://oms.syanni.eu"
134 return "https://beta.oms.syanni.eu"
138 if props
.hasProperty("branch") and len(props
["branch"]) > 0 and props
["branch"] == "master":
139 return E
.OMS_RELEASE_PATH
141 return E
.OMS_BETA_PATH
143 factory
= util
.BuildFactory()
144 factory
.addStep(steps
.Git(logEnviron
=False, repourl
=E
.OMS_GIT_URL
,
145 submodules
=True, sshPrivateKey
=open(E
.SSH_KEY_PATH
).read().rstrip(),
146 sshHostKey
=E
.SSH_HOST_KEY
, mode
="full", method
="copy"))
147 factory
.addStep(steps
.MasterShellCommand(command
=util
.Interpolate("rm -rf %(kw:oms_path)s", oms_path
=oms_path
)))
148 factory
.addStep(steps
.DirectoryUpload(workersrc
="../source",
151 factory
.addStep(steps
.MasterShellCommand(command
=util
.Interpolate("chmod -R a+rX %(kw:oms_path)s", oms_path
=oms_path
)))
152 factory
.addStep(steps
.MasterShellCommand(command
=util
.Interpolate("/run/wrappers/bin/sudo systemctl restart %(kw:oms_service)s.service", oms_service
=oms_systemd_service
)))
154 return util
.BuilderConfig(name
="DeniseOMS_build", workernames
=["generic-worker-denise"], factory
=factory
)
156 def denise_aventuriers_factory():
158 "PATH": os
.environ
["BUILDBOT_PATH_Aventuriers"] + ":${PATH}",
159 "TZ": "Europe/Paris",
162 factory
= util
.BuildFactory()
163 factory
.addStep(steps
.Git(logEnviron
=False, repourl
=E
.AVENTURIERS_GIT_URL
,
164 submodules
=True, mode
="full", method
="fresh"))
165 factory
.addStep(steps
.ShellCommand(name
="build files",
166 logEnviron
=False, haltOnFailure
=True, workdir
="build",
167 env
=path_env
, command
=["make", "tout", "encyclo"]))
168 factory
.addStep(steps
.MasterShellCommand(command
="rm -rf {}".format(E
.AVENTURIERS_RELEASE_PATH
)))
169 factory
.addStep(steps
.DirectoryUpload(workersrc
="../build/html",
170 masterdest
=E
.AVENTURIERS_RELEASE_PATH
,
171 url
="https://aventuriers.syanni.eu"))
172 factory
.addStep(steps
.FileUpload(name
="upload epub file", workersrc
="aventuriers.epub",
173 workdir
="build", masterdest
=E
.AVENTURIERS_RELEASE_PATH
+ "/aventuriers.epub",
174 url
="https://aventuriers.syanni.eu/aventuriers.epub", mode
=0o644))
175 factory
.addStep(steps
.FileUpload(name
="upload mobi file", workersrc
="aventuriers.mobi",
176 workdir
="build", masterdest
=E
.AVENTURIERS_RELEASE_PATH
+ "/aventuriers.mobi",
177 url
="https://aventuriers.syanni.eu/aventuriers.mobi", mode
=0o644))
178 factory
.addStep(steps
.FileUpload(name
="upload pdf file", workersrc
="aventuriers.pdf",
179 workdir
="build", masterdest
=E
.AVENTURIERS_RELEASE_PATH
+ "/aventuriers.pdf",
180 url
="https://aventuriers.syanni.eu/aventuriers.pdf", mode
=0o644))
181 factory
.addStep(steps
.FileUpload(name
="upload encyclo pdf file", workersrc
="encyclo.pdf",
182 workdir
="build", masterdest
=E
.AVENTURIERS_RELEASE_PATH
+ "/encyclo.pdf",
183 url
="https://aventuriers.syanni.eu/encyclo.pdf", mode
=0o644))
184 factory
.addStep(steps
.MasterShellCommand(command
="chmod -R a+rX {}".format(E
.AVENTURIERS_RELEASE_PATH
)))
186 return util
.BuilderConfig(name
="DeniseAventuriers_build", workernames
=["generic-worker-denise"], factory
=factory
)