]>
git.immae.eu Git - perso/Immae/Config/Nix.git/blob - modules/private/buildbot/projects/cryptoportfolio/__init__.py
1 from buildbot
.plugins
import *
2 from buildbot_common
.build_helpers
import *
5 __all__
= [ "configure", "E" ]
8 PROJECT
= "cryptoportfolio"
9 BUILDBOT_URL
= "https://git.immae.eu/buildbot/{}/".format(PROJECT
)
10 SOCKET
= "unix:/run/buildbot/{}.sock".format(PROJECT
)
11 PB_SOCKET
= "unix:address=/run/buildbot/{}_pb.sock".format(PROJECT
)
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"
15 SSH_KEY_PATH
= "/var/lib/buildbot/buildbot_key"
18 "production": "root@cryptoportfolio.immae.eu",
19 "integration": "root@cryptoportfolio-dev.immae.eu"
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)"
28 LDAP_GROUP_PATTERN
= "(&(memberOf=cn=groups,ou=cryptoportfolio,cn=buildbot,ou=services,dc=immae,dc=eu)(member=%(dn)s))"
29 TITLE_URL
= "https://git.immae.eu"
30 TITLE
= "Cryptoportfolio"
32 # eval .. dans .zshrc_local
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
42 c
["buildbotURL"] = E
.BUILDBOT_URL
43 c
["www"]["port"] = E
.SOCKET
47 configure_slack_push(c
, E
.SECRETS_FILE
, all_builder_names(c
))
49 def configure_build(c
):
50 front_builder_name
= "Front_build"
51 trader_builder_name
= "Trader_build"
52 worker_name
= "cryptoportfolio-build"
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
]))
58 c
['workers'].append(worker
.LocalWorker(worker_name
))
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)))
63 def configure_deploy(c
):
64 front_builder_name
= "Front_deploy"
65 trader_builder_name
= "Trader_deploy"
66 worker_name
= "cryptoportfolio-deploy"
68 c
['schedulers'].append(deploy_scheduler("deploy_cryptoportfolio", [front_builder_name
, trader_builder_name
]))
70 c
['workers'].append(worker
.LocalWorker(worker_name
))
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")))
75 def build_factory(project
, ignore_fails
=False):
76 release_file
= "{1}/{0}/{0}_%(kw:clean_branch)s.tar.gz"
78 url
= E
.GIT_URL
.format(project
.capitalize())
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
)
84 factory
= util
.BuildFactory()
85 factory
.addStep(steps
.Git(logEnviron
=False, repourl
=url
,
86 mode
="full", method
="fresh"))
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
))
99 def deploy_factory(project
):
100 package_dest
= util
.Interpolate("{1}/{0}/%(prop:build)s".format(project
, E
.RELEASE_PATH
))
102 factory
= util
.BuildFactory()
103 factory
.addStep(steps
.MasterShellCommand(command
=["test", "-f", package_dest
]))
104 factory
.addStep(steps
.SetProperties(properties
=compute_build_infos(project
, "{}/{}".format(E
.RELEASE_PATH
, project
))))
105 factory
.addStep(steps
.MasterShellCommand(command
=deploy_ssh_command(E
.SSH_KEY_PATH
, E
.DEPLOY_HOSTS
)))