]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - modules/private/buildbot/projects/immaeEu/__init__.py
Rework integration websites
[perso/Immae/Config/Nix.git] / modules / private / buildbot / projects / immaeEu / __init__.py
index 83265cdfe24c5e6c02f4287b766c61a46a06c4ec..cecd23c45603b64d9af60ed5f1b7da707917f0fa 100644 (file)
@@ -75,11 +75,20 @@ def configure(c):
     c['schedulers'].append(hook_scheduler("Docs", timer=1))
     c['schedulers'].append(hook_scheduler("History", timer=1))
     c['schedulers'].append(hook_scheduler("BIP39", timer=1))
+    c['schedulers'].append(hook_scheduler("Symfony_Chloe", timer=1))
+    c['schedulers'].append(hook_scheduler("Symfony_Florian", timer=1))
+    c['schedulers'].append(hook_scheduler("Symfony_Ludivine", timer=1))
+    c['schedulers'].append(hook_scheduler("Symfony_IsabelleAten", timer=1))
+    c['schedulers'].append(hook_scheduler("Symfony_Piedsjaloux", timer=1))
+    c['schedulers'].append(hook_scheduler("Symfony_Connexionswing", timer=1))
     c['schedulers'].append(schedulers.Nightly(name="GSMCells-weekly",
         builderNames=["GSMCells_build"], dayOfWeek=6, hour=3))
     c['schedulers'].append(force_scheduler("force_immae_eu", [
         "ImmaeEu_build", "Normalesup_build", "Cours_build", "Docs_build",
-        "Recettes_build", "History_build", "BIP39_build"
+        "Recettes_build", "History_build", "BIP39_build",
+        "Symfony_Chloe_build", "Symfony_Florian_build",
+        "Symfony_IsabelleAten_build", "Symfony_Ludivine_build",
+        "Symfony_Piedsjaloux_build", "Symfony_Connexionswing_build"
         ]))
     c['schedulers'].append(schedulers.ForceScheduler(
         name="GSMCells-force", label="Force build",
@@ -105,13 +114,30 @@ def configure(c):
     c['builders'].append(docs_factory())
     c['builders'].append(history_factory())
     c['builders'].append(bip39_factory())
+    c['builders'].append(symfony_project_factory("Chloe", "gitolite@git.immae.eu:perso/Immae/Sites/Chloe/New", "phpfpm-chloe_new_integration"))
+    c['builders'].append(symfony_project_factory("Florian", "gitolite@git.immae.eu:perso/florian_telles/stabilo", "phpfpm-florian_app"))
+    c['builders'].append(symfony_project_factory("IsabelleAten", "gitolite@git.immae.eu:perso/Immae/Sites/Aten", "phpfpm-isabelle_aten_integration", parameters_path=None,
+        other_steps=lambda path_env : [
+            NixShellCommand(name="Install yarn",
+                logEnviron=False, haltOnFailure=True, workdir="build",
+                env=path_env, command="yarn install"),
+            NixShellCommand(name="Build frontend",
+                logEnviron=False, haltOnFailure=True, workdir="build",
+                env=path_env, command="yarn run encore production")
+            ]
+        ))
+    c['builders'].append(symfony_project_factory("Ludivine", "gitolite@git.immae.eu:perso/Immae/Sites/Ludivine", "phpfpm-ludivine_integration"))
+    c['builders'].append(symfony_project_factory("Connexionswing", "gitolite@git.immae.eu:perso/Immae/Projets/Connexionswing", "phpfpm-connexionswing_integration"))
+    c['builders'].append(symfony_project_factory("Piedsjaloux", "gitolite@git.immae.eu:Pieds_jaloux/NewSite", "phpfpm-piedsjaloux_integration"))
 
     c['services'].append(SlackStatusPush(
         name="slack_status_immae_eu_project",
         builders=[
             "ImmaeEu_build", "Normalesup_build", "Cours_build", "Docs_build",
             "GSMCells_build", "Recettes_build", "History_build",
-            "BIP39_build"
+            "BIP39_build", "Symfony_Chloe_build", "Symfony_Florian_build",
+            "Symfony_IsabelleAten_build", "Symfony_Ludivine_build",
+            "Symfony_Piedsjaloux_build", "Symfony_Connexionswing_build"
             ],
         serverUrl=open(E.SECRETS_FILE + "/slack_webhook", "r").read().rstrip()))
     c['services'].append(XMPPStatusPush(
@@ -119,7 +145,9 @@ def configure(c):
         builders=[
             "ImmaeEu_build", "Normalesup_build", "Cours_build", "Docs_build",
             "GSMCells_build", "Recettes_build", "History_build",
-            "BIP39_build"
+            "BIP39_build", "Symfony_Chloe_build", "Symfony_Florian_build",
+            "Symfony_IsabelleAten_build", "Symfony_Ludivine_build",
+            "Symfony_Piedsjaloux_build", "Symfony_Connexionswing_build"
             ],
         recipients=E.XMPP_RECIPIENTS,
         password=open(E.SECRETS_FILE + "/notify_xmpp_password", "r").read().rstrip()))
@@ -312,3 +340,50 @@ def gsm_cells_factory():
     factory.addStep(steps.MasterShellCommand(command="chmod -R a+rX {}".format(E.GSMCELLS_RELEASE_PATH)))
 
     return util.BuilderConfig(name="GSMCells_build", workernames=["generic-worker-immae-eu"], factory=factory)
+
+def symfony_project_factory(name, repourl, service_name, parameters_path="app/config/parameters.yml", other_steps=lambda a : []):
+    if "BUILDBOT_PATH_SYMFONY_{}".format(name) in os.environ:
+        path_env = {
+                "PATH": os.environ["BUILDBOT_PATH_SYMFONY_{}".format(name)] + ":${PATH}"
+                }
+    else:
+        path_env = {
+                "PATH": "${PATH}"
+                }
+
+    for k, v in os.environ.items():
+        if k.startswith("BUILDBOT_SYMFONY_{}_".format(name)):
+            path_env[k[len("BUILDBOT_SYMFONY_{}_".format(name)):]] = v
+
+    factory = util.BuildFactory()
+    factory.addStep(steps.Git(logEnviron=False, repourl=repourl,
+        submodules=True, sshPrivateKey=open(E.SSH_KEY_PATH).read().rstrip(),
+        sshHostKey=E.SSH_HOST_KEY, mode="full", method="copy"))
+    if parameters_path is not None:
+        factory.addStep(steps.FileDownload(mastersrc=(E.SECRETS_FILE + "/symfony_{}_parameters.yml".format(name)),
+                                           workerdest=parameters_path))
+    factory.addStep(NixShellCommand(name="build website",
+        logEnviron=False, haltOnFailure=True, workdir="build",
+        env=path_env, command="composer install"))
+    if parameters_path is not None:
+        factory.addStep(steps.ShellCommand(name="Remove parameters.yml",
+            logEnviron=False, haltOnFailure=True,
+            command="rm -f {}".format(parameters_path)))
+    for step in other_steps(path_env):
+        factory.addStep(step)
+    package = util.Interpolate("{}_%(kw:clean_branch)s.tar.gz".format(name), clean_branch=clean_branch)
+    release_file = "{0}/{1}/%(kw:clean_branch)s.tar.gz"
+    package_dest = util.Interpolate(release_file.format("/var/lib/ftp/release.immae.eu/buildbot", name), clean_branch=clean_branch)
+    # Tar doesn’t like creating the tarball in the same directory
+    factory.addStep(steps.ShellCommand(name="Make a tarball 1/2",
+        logEnviron=False, haltOnFailure=True, workdir="build", env=path_env,
+        command=["touch", package]))
+    factory.addStep(steps.ShellCommand(name="Make a tarball 2/2",
+        logEnviron=False, haltOnFailure=True, workdir="build", env=path_env,
+        command=["tar", "--exclude", package, "-czf", package, "."]))
+    factory.addStep(steps.FileUpload(name="upload package",
+        workersrc=package, workdir="build",
+        masterdest=package_dest, mode=0o644))
+    factory.addStep(steps.MasterShellCommand(command="/run/wrappers/bin/sudo systemctl restart {}.service".format(service_name)))
+    return util.BuilderConfig(name="Symfony_{}_build".format(name), workernames=["generic-worker-immae-eu"], factory=factory)
+