]>
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 | 16 | |
f6e48e3a | 17 | DEPLOY_HOSTS = { |
9fb4205e IB |
18 | "production": "root@cryptoportfolio.immae.eu", |
19 | "integration": "root@cryptoportfolio-dev.immae.eu" | |
20 | } | |
21 | ||
22 | # master.cfg | |
23 | SECRETS_FILE = os.getcwd() + "/secrets" | |
24 | LDAP_URL = "ldaps://ldap.immae.eu:636" | |
25 | LDAP_ADMIN_USER = "cn=buildbot,ou=services,dc=immae,dc=eu" | |
26 | LDAP_BASE = "dc=immae,dc=eu" | |
27 | LDAP_PATTERN = "(uid=%(username)s)" | |
e2b96bf5 | 28 | LDAP_GROUP_PATTERN = "(&(memberOf=cn=groups,ou=cryptoportfolio,cn=buildbot,ou=services,dc=immae,dc=eu)(member=%(dn)s))" |
9fb4205e IB |
29 | TITLE_URL = "https://git.immae.eu" |
30 | TITLE = "Cryptoportfolio" | |
31 | ||
32 | # eval .. dans .zshrc_local | |
33 | # mkdir -p $BUILD/go | |
34 | # export GOPATH=$BUILD/go | |
35 | # go get -u github.com/golang/dep/cmd/dep | |
36 | # export PATH=$PATH:$BUILD/go/bin | |
37 | # go get git.immae.eu/Cryptoportfolio/Front.git | |
38 | # cd $BUILD/go/src/git.immae.eu/Cryptoportfolio/Front.git | |
39 | # git checkout dev | |
40 | # dep ensure | |
41 | def configure(c): | |
42 | c["buildbotURL"] = E.BUILDBOT_URL | |
43 | c["www"]["port"] = E.SOCKET | |
44 | ||
f6e48e3a IB |
45 | configure_build(c) |
46 | configure_deploy(c) | |
47 | configure_slack_push(c, E.SECRETS_FILE, all_builder_names(c)) | |
9fb4205e | 48 | |
f6e48e3a IB |
49 | def configure_build(c): |
50 | front_builder_name = "Front_build" | |
51 | trader_builder_name = "Trader_build" | |
52 | worker_name = "cryptoportfolio-build" | |
9fb4205e | 53 | |
f6e48e3a IB |
54 | c['schedulers'].append(force_scheduler("force_cryptoportfolio", [front_builder_name,trader_builder_name])) |
55 | c['schedulers'].append(git_hook_scheduler("Trader", [trader_builder_name])) | |
56 | c['schedulers'].append(git_hook_scheduler("Front", [front_builder_name])) | |
9fb4205e | 57 | |
f6e48e3a | 58 | c['workers'].append(worker.LocalWorker(worker_name)) |
9fb4205e | 59 | |
f6e48e3a IB |
60 | c['builders'].append(util.BuilderConfig(name=trader_builder_name, workernames=[worker_name], factory=build_factory("trader"))) |
61 | c['builders'].append(util.BuilderConfig(name=front_builder_name, workernames=[worker_name], factory=build_factory("front", ignore_fails=True))) | |
9fb4205e | 62 | |
f6e48e3a IB |
63 | def configure_deploy(c): |
64 | front_builder_name = "Front_deploy" | |
65 | trader_builder_name = "Trader_deploy" | |
66 | worker_name = "cryptoportfolio-deploy" | |
67 | ||
68 | c['schedulers'].append(deploy_scheduler("deploy_cryptoportfolio", [front_builder_name, trader_builder_name])) | |
69 | ||
70 | c['workers'].append(worker.LocalWorker(worker_name)) | |
71 | ||
72 | c['builders'].append(util.BuilderConfig(name=front_builder_name, workernames=[worker_name], factory=deploy_factory("front"))) | |
73 | c['builders'].append(util.BuilderConfig(name=trader_builder_name, workernames=[worker_name], factory=deploy_factory("trader"))) | |
74 | ||
75 | def build_factory(project, ignore_fails=False): | |
9fb4205e IB |
76 | release_file = "{1}/{0}/{0}_%(kw:clean_branch)s.tar.gz" |
77 | ||
78 | url = E.GIT_URL.format(project.capitalize()) | |
79 | ||
80 | package = util.Interpolate("{0}_%(kw:clean_branch)s.tar.gz".format(project), clean_branch=clean_branch) | |
81 | package_dest = util.Interpolate(release_file.format(project, E.RELEASE_PATH), clean_branch=clean_branch) | |
82 | package_url = util.Interpolate(release_file.format(project, E.RELEASE_URL), clean_branch=clean_branch) | |
83 | ||
84 | factory = util.BuildFactory() | |
85 | factory.addStep(steps.Git(logEnviron=False, repourl=url, | |
f6e48e3a | 86 | mode="full", method="fresh")) |
9fb4205e IB |
87 | factory.addStep(steps.ShellCommand(name="make install", |
88 | logEnviron=False, haltOnFailure=(not ignore_fails), | |
89 | warnOnFailure=ignore_fails, flunkOnFailure=(not ignore_fails), | |
90 | command=["make", "install"])) | |
91 | factory.addStep(steps.ShellCommand(name="make test", | |
92 | logEnviron=False, haltOnFailure=(not ignore_fails), | |
93 | warnOnFailure=ignore_fails, flunkOnFailure=(not ignore_fails), | |
94 | command=["make", "test"])) | |
95 | factory.addSteps(package_and_upload(package, package_dest, package_url)) | |
96 | ||
f6e48e3a | 97 | return factory |
9fb4205e IB |
98 | |
99 | def deploy_factory(project): | |
100 | package_dest = util.Interpolate("{1}/{0}/%(prop:build)s".format(project, E.RELEASE_PATH)) | |
101 | ||
102 | factory = util.BuildFactory() | |
103 | factory.addStep(steps.MasterShellCommand(command=["test", "-f", package_dest])) | |
f6e48e3a | 104 | factory.addStep(steps.SetProperties(properties=compute_build_infos(project, "{}/{}".format(E.RELEASE_PATH, project)))) |
f6e48e3a IB |
105 | factory.addStep(steps.MasterShellCommand(command=deploy_ssh_command(E.SSH_KEY_PATH, E.DEPLOY_HOSTS))) |
106 | return factory |