]>
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"
39 c
["buildbotURL"] = E
.BUILDBOT_URL
40 c
["www"]["port"] = E
.SOCKET
42 worker_name
= "generic-worker-denise"
43 c
['workers'].append(worker
.LocalWorker(worker_name
))
45 configure_bingo(c
, worker_name
)
46 configure_oms(c
, worker_name
)
47 configure_aventuriers(c
, worker_name
)
49 c
['schedulers'].append(force_scheduler("force_denise", all_builder_names(c
)))
51 def configure_bingo(c
, worker_name
):
52 builder_name
= "DeniseBingo_build"
54 c
['schedulers'].append(git_hook_scheduler("DeniseBingo", [builder_name
]))
55 c
['builders'].append(util
.BuilderConfig(name
=builder_name
, workernames
=[worker_name
], factory
=bingo_build_factory()))
57 def configure_oms(c
, worker_name
):
58 builder_name
= "DeniseOMS_build"
60 c
['schedulers'].append(git_hook_scheduler("DeniseOMS", [builder_name
]))
61 c
['builders'].append(util
.BuilderConfig(name
=builder_name
, workernames
=[worker_name
], factory
=oms_build_factory()))
63 def configure_aventuriers(c
, worker_name
):
64 builder_name
= "DeniseAventuriers_build"
66 c
['schedulers'].append(git_hook_scheduler("DeniseAventuriers", [builder_name
]))
67 c
['builders'].append(util
.BuilderConfig(name
=builder_name
, workernames
=[worker_name
], factory
=aventuriers_build_factory()))
69 def bingo_build_factory():
71 def bingo_run_path(props
):
72 if props
.hasProperty("branch") and len(props
["branch"]) > 0 and props
["branch"] == "master":
73 return "/run/denise_bingo/gunicorn.pid"
75 return "/run/denise_bingo_beta/gunicorn.pid"
78 def bingo_systemd_service(props
):
79 if props
.hasProperty("branch") and len(props
["branch"]) > 0 and props
["branch"] == "master":
82 return "denise-bingo-beta"
86 if props
.hasProperty("branch") and len(props
["branch"]) > 0 and props
["branch"] == "master":
87 return "https://bingo.syanni.eu"
89 return "https://beta.bingo.syanni.eu"
92 def bingo_path(props
):
93 if props
.hasProperty("branch") and len(props
["branch"]) > 0 and props
["branch"] == "master":
94 return E
.BINGO_RELEASE_PATH
96 return E
.BINGO_BETA_PATH
98 factory
= util
.BuildFactory()
99 factory
.addStep(steps
.Git(logEnviron
=False, repourl
=E
.BINGO_GIT_URL
,
100 submodules
=True, sshPrivateKey
=open(E
.SSH_KEY_PATH
).read().rstrip(),
101 sshHostKey
=E
.SSH_HOST_KEY
, mode
="full", method
="fresh"))
102 factory
.addStep(steps
.MasterShellCommand(command
=util
.Interpolate("rm -rf %(kw:bingo_path)s", bingo_path
=bingo_path
)))
103 factory
.addStep(steps
.DirectoryUpload(workersrc
=".", masterdest
=bingo_path
, url
=bingo_url
))
104 factory
.addStep(steps
.MasterShellCommand(command
=util
.Interpolate("chmod -R a+rX %(kw:bingo_path)s", bingo_path
=bingo_path
)))
105 factory
.addStep(steps
.MasterShellCommand(command
=util
.Interpolate("/run/wrappers/bin/sudo systemctl restart %(kw:bingo_service)s.service", bingo_service
=bingo_systemd_service
)))
109 def oms_build_factory():
111 def oms_run_path(props
):
112 if props
.hasProperty("branch") and len(props
["branch"]) > 0 and props
["branch"] == "master":
113 return "/run/denise_oms/gunicorn.pid"
115 return "/run/denise_oms_beta/gunicorn.pid"
118 def oms_systemd_service(props
):
119 if props
.hasProperty("branch") and len(props
["branch"]) > 0 and props
["branch"] == "master":
122 return "denise-oms-beta"
126 if props
.hasProperty("branch") and len(props
["branch"]) > 0 and props
["branch"] == "master":
127 return "https://oms.syanni.eu"
129 return "https://beta.oms.syanni.eu"
133 if props
.hasProperty("branch") and len(props
["branch"]) > 0 and props
["branch"] == "master":
134 return E
.OMS_RELEASE_PATH
136 return E
.OMS_BETA_PATH
138 factory
= util
.BuildFactory()
139 factory
.addStep(steps
.Git(logEnviron
=False, repourl
=E
.OMS_GIT_URL
,
140 submodules
=True, sshPrivateKey
=open(E
.SSH_KEY_PATH
).read().rstrip(),
141 sshHostKey
=E
.SSH_HOST_KEY
, mode
="full", method
="fresh"))
142 factory
.addStep(steps
.MasterShellCommand(command
=util
.Interpolate("rm -rf %(kw:oms_path)s", oms_path
=oms_path
)))
143 factory
.addStep(steps
.DirectoryUpload(workersrc
=".", masterdest
=oms_path
, url
=oms_url
))
144 factory
.addStep(steps
.MasterShellCommand(command
=util
.Interpolate("chmod -R a+rX %(kw:oms_path)s", oms_path
=oms_path
)))
145 factory
.addStep(steps
.MasterShellCommand(command
=util
.Interpolate("/run/wrappers/bin/sudo systemctl restart %(kw:oms_service)s.service", oms_service
=oms_systemd_service
)))
149 def aventuriers_build_factory():
151 "PATH": "/run/current-system/sw/bin",
152 "TZ": "Europe/Paris",
155 factory
= util
.BuildFactory()
156 factory
.addStep(steps
.Git(logEnviron
=False, repourl
=E
.AVENTURIERS_GIT_URL
,
157 submodules
=True, mode
="full", method
="fresh"))
158 factory
.addStep(NixShellCommand(name
="build files",
159 logEnviron
=False, haltOnFailure
=True,
160 env
=path_env
, command
=["make tout encyclo"]))
161 factory
.addStep(steps
.MasterShellCommand(command
="rm -rf {}".format(E
.AVENTURIERS_RELEASE_PATH
)))
162 factory
.addStep(steps
.DirectoryUpload(workersrc
="html",
163 masterdest
=E
.AVENTURIERS_RELEASE_PATH
,
164 url
="https://aventuriers.syanni.eu"))
165 factory
.addStep(steps
.FileUpload(name
="upload epub file", workersrc
="aventuriers.epub",
166 masterdest
=E
.AVENTURIERS_RELEASE_PATH
+ "/aventuriers.epub",
167 url
="https://aventuriers.syanni.eu/aventuriers.epub", mode
=0o644))
168 factory
.addStep(steps
.FileUpload(name
="upload mobi file", workersrc
="aventuriers.mobi",
169 masterdest
=E
.AVENTURIERS_RELEASE_PATH
+ "/aventuriers.mobi",
170 url
="https://aventuriers.syanni.eu/aventuriers.mobi", mode
=0o644))
171 factory
.addStep(steps
.FileUpload(name
="upload pdf file", workersrc
="aventuriers.pdf",
172 masterdest
=E
.AVENTURIERS_RELEASE_PATH
+ "/aventuriers.pdf",
173 url
="https://aventuriers.syanni.eu/aventuriers.pdf", mode
=0o644))
174 factory
.addStep(steps
.FileUpload(name
="upload encyclo pdf file", workersrc
="encyclo.pdf",
175 masterdest
=E
.AVENTURIERS_RELEASE_PATH
+ "/encyclo.pdf",
176 url
="https://aventuriers.syanni.eu/encyclo.pdf", mode
=0o644))
177 factory
.addStep(steps
.MasterShellCommand(command
="chmod -R a+rX {}".format(E
.AVENTURIERS_RELEASE_PATH
)))