]>
Commit | Line | Data |
---|---|---|
9fb4205e IB |
1 | from buildbot.plugins import * |
2 | from buildbot_common.build_helpers import * | |
3 | import os | |
4 | ||
5 | __all__ = [ "configure", "E" ] | |
6 | ||
7 | class E(): | |
8 | PROJECT = "cryptoportfolio" | |
9 | BUILDBOT_URL = "https://git.immae.eu/buildbot/{}/".format(PROJECT) | |
10 | SOCKET = "unix:/run/buildbot/{}.sock".format(PROJECT) | |
e2b96bf5 | 11 | PB_SOCKET = "unix:address=/run/buildbot/{}_pb.sock".format(PROJECT) |
9fb4205e IB |
12 | RELEASE_PATH = "/var/lib/ftp/release.immae.eu/{}".format(PROJECT) |
13 | RELEASE_URL = "https://release.immae.eu/{}".format(PROJECT) | |
14 | GIT_URL = "https://git.immae.eu/perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/{0}.git" | |
e2b96bf5 | 15 | SSH_KEY_PATH = "/var/lib/buildbot/buildbot_key" |
9fb4205e IB |
16 | LDAP_HOST = "ldap.immae.eu" |
17 | LDAP_DN = "cn=buildbot,ou=services,dc=immae,dc=eu" | |
18 | LDAP_ROLES_BASE = "ou=roles,ou=hosts,dc=immae,dc=eu" | |
19 | ||
f6e48e3a | 20 | DEPLOY_HOSTS = { |
9fb4205e IB |
21 | "production": "root@cryptoportfolio.immae.eu", |
22 | "integration": "root@cryptoportfolio-dev.immae.eu" | |
23 | } | |
24 | ||
25 | # master.cfg | |
26 | SECRETS_FILE = os.getcwd() + "/secrets" | |
27 | LDAP_URL = "ldaps://ldap.immae.eu:636" | |
28 | LDAP_ADMIN_USER = "cn=buildbot,ou=services,dc=immae,dc=eu" | |
29 | LDAP_BASE = "dc=immae,dc=eu" | |
30 | LDAP_PATTERN = "(uid=%(username)s)" | |
e2b96bf5 | 31 | LDAP_GROUP_PATTERN = "(&(memberOf=cn=groups,ou=cryptoportfolio,cn=buildbot,ou=services,dc=immae,dc=eu)(member=%(dn)s))" |
9fb4205e IB |
32 | TITLE_URL = "https://git.immae.eu" |
33 | TITLE = "Cryptoportfolio" | |
34 | ||
35 | # eval .. dans .zshrc_local | |
36 | # mkdir -p $BUILD/go | |
37 | # export GOPATH=$BUILD/go | |
38 | # go get -u github.com/golang/dep/cmd/dep | |
39 | # export PATH=$PATH:$BUILD/go/bin | |
40 | # go get git.immae.eu/Cryptoportfolio/Front.git | |
41 | # cd $BUILD/go/src/git.immae.eu/Cryptoportfolio/Front.git | |
42 | # git checkout dev | |
43 | # dep ensure | |
44 | def configure(c): | |
45 | c["buildbotURL"] = E.BUILDBOT_URL | |
46 | c["www"]["port"] = E.SOCKET | |
47 | ||
f6e48e3a IB |
48 | configure_build(c) |
49 | configure_deploy(c) | |
50 | configure_slack_push(c, E.SECRETS_FILE, all_builder_names(c)) | |
9fb4205e | 51 | |
f6e48e3a IB |
52 | def configure_build(c): |
53 | front_builder_name = "Front_build" | |
54 | trader_builder_name = "Trader_build" | |
55 | worker_name = "cryptoportfolio-build" | |
9fb4205e | 56 | |
f6e48e3a IB |
57 | c['schedulers'].append(force_scheduler("force_cryptoportfolio", [front_builder_name,trader_builder_name])) |
58 | c['schedulers'].append(git_hook_scheduler("Trader", [trader_builder_name])) | |
59 | c['schedulers'].append(git_hook_scheduler("Front", [front_builder_name])) | |
9fb4205e | 60 | |
f6e48e3a | 61 | c['workers'].append(worker.LocalWorker(worker_name)) |
9fb4205e | 62 | |
f6e48e3a IB |
63 | c['builders'].append(util.BuilderConfig(name=trader_builder_name, workernames=[worker_name], factory=build_factory("trader"))) |
64 | c['builders'].append(util.BuilderConfig(name=front_builder_name, workernames=[worker_name], factory=build_factory("front", ignore_fails=True))) | |
9fb4205e | 65 | |
f6e48e3a IB |
66 | def configure_deploy(c): |
67 | front_builder_name = "Front_deploy" | |
68 | trader_builder_name = "Trader_deploy" | |
69 | worker_name = "cryptoportfolio-deploy" | |
70 | ||
71 | c['schedulers'].append(deploy_scheduler("deploy_cryptoportfolio", [front_builder_name, trader_builder_name])) | |
72 | ||
73 | c['workers'].append(worker.LocalWorker(worker_name)) | |
74 | ||
75 | c['builders'].append(util.BuilderConfig(name=front_builder_name, workernames=[worker_name], factory=deploy_factory("front"))) | |
76 | c['builders'].append(util.BuilderConfig(name=trader_builder_name, workernames=[worker_name], factory=deploy_factory("trader"))) | |
77 | ||
78 | def build_factory(project, ignore_fails=False): | |
9fb4205e IB |
79 | release_file = "{1}/{0}/{0}_%(kw:clean_branch)s.tar.gz" |
80 | ||
81 | url = E.GIT_URL.format(project.capitalize()) | |
82 | ||
83 | package = util.Interpolate("{0}_%(kw:clean_branch)s.tar.gz".format(project), clean_branch=clean_branch) | |
84 | package_dest = util.Interpolate(release_file.format(project, E.RELEASE_PATH), clean_branch=clean_branch) | |
85 | package_url = util.Interpolate(release_file.format(project, E.RELEASE_URL), clean_branch=clean_branch) | |
86 | ||
87 | factory = util.BuildFactory() | |
88 | factory.addStep(steps.Git(logEnviron=False, repourl=url, | |
f6e48e3a | 89 | mode="full", method="fresh")) |
9fb4205e IB |
90 | factory.addStep(steps.ShellCommand(name="make install", |
91 | logEnviron=False, haltOnFailure=(not ignore_fails), | |
92 | warnOnFailure=ignore_fails, flunkOnFailure=(not ignore_fails), | |
93 | command=["make", "install"])) | |
94 | factory.addStep(steps.ShellCommand(name="make test", | |
95 | logEnviron=False, haltOnFailure=(not ignore_fails), | |
96 | warnOnFailure=ignore_fails, flunkOnFailure=(not ignore_fails), | |
97 | command=["make", "test"])) | |
98 | factory.addSteps(package_and_upload(package, package_dest, package_url)) | |
99 | ||
f6e48e3a | 100 | return factory |
9fb4205e IB |
101 | |
102 | def deploy_factory(project): | |
103 | package_dest = util.Interpolate("{1}/{0}/%(prop:build)s".format(project, E.RELEASE_PATH)) | |
104 | ||
105 | factory = util.BuildFactory() | |
106 | factory.addStep(steps.MasterShellCommand(command=["test", "-f", package_dest])) | |
f6e48e3a IB |
107 | factory.addStep(steps.SetProperties(properties=compute_build_infos(project, "{}/{}".format(E.RELEASE_PATH, project)))) |
108 | factory.addStep(LdapEdit(environment=util.Property("environment"), | |
109 | build_version=util.Property("build_version"), | |
110 | build_hash=util.Property("build_hash"), | |
111 | config_key="role::cryptoportfolio::{}".format(project), | |
112 | ldap_host=E.LDAP_HOST, ldap_roles_base=E.LDAP_ROLES_BASE, ldap_dn=E.LDAP_DN, | |
113 | ldap_cn_template="cryptoportfolio.{}", ldap_password=util.Secret("ldap"))) | |
114 | factory.addStep(steps.MasterShellCommand(command=deploy_ssh_command(E.SSH_KEY_PATH, E.DEPLOY_HOSTS))) | |
115 | return factory |