]>
git.immae.eu Git - perso/Immae/Config/Nix.git/blob - modules/private/buildbot/projects/cryptoportfolio/__init__.py
1e94d0875369b318181cb5caa4978aa80e5150f6
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"
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"
21 "production": "root@cryptoportfolio.immae.eu",
22 "integration": "root@cryptoportfolio-dev.immae.eu"
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)"
31 LDAP_GROUP_PATTERN
= "(&(memberOf=cn=groups,ou=cryptoportfolio,cn=buildbot,ou=services,dc=immae,dc=eu)(member=%(dn)s))"
32 TITLE_URL
= "https://git.immae.eu"
33 TITLE
= "Cryptoportfolio"
35 # eval .. dans .zshrc_local
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
45 c
["buildbotURL"] = E
.BUILDBOT_URL
46 c
["www"]["port"] = E
.SOCKET
50 configure_slack_push(c
, E
.SECRETS_FILE
, all_builder_names(c
))
52 def configure_build(c
):
53 front_builder_name
= "Front_build"
54 trader_builder_name
= "Trader_build"
55 worker_name
= "cryptoportfolio-build"
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
]))
61 c
['workers'].append(worker
.LocalWorker(worker_name
))
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)))
66 def configure_deploy(c
):
67 front_builder_name
= "Front_deploy"
68 trader_builder_name
= "Trader_deploy"
69 worker_name
= "cryptoportfolio-deploy"
71 c
['schedulers'].append(deploy_scheduler("deploy_cryptoportfolio", [front_builder_name
, trader_builder_name
]))
73 c
['workers'].append(worker
.LocalWorker(worker_name
))
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")))
78 def build_factory(project
, ignore_fails
=False):
79 release_file
= "{1}/{0}/{0}_%(kw:clean_branch)s.tar.gz"
81 url
= E
.GIT_URL
.format(project
.capitalize())
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
)
87 factory
= util
.BuildFactory()
88 factory
.addStep(steps
.Git(logEnviron
=False, repourl
=url
,
89 mode
="full", method
="fresh"))
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
))
102 def deploy_factory(project
):
103 package_dest
= util
.Interpolate("{1}/{0}/%(prop:build)s".format(project
, E
.RELEASE_PATH
))
105 factory
= util
.BuildFactory()
106 factory
.addStep(steps
.MasterShellCommand(command
=["test", "-f", package_dest
]))
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
)))