From: Ismaƫl Bouya Date: Sat, 26 Jun 2021 12:18:04 +0000 (+0200) Subject: Add a NixShellCommand step to buildbot X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FConfig%2FNix.git;a=commitdiff_plain;h=6b017278cb0dff04fc6cde863a1bffa012ed5f59 Add a NixShellCommand step to buildbot --- diff --git a/modules/private/buildbot/common/build_helpers.py b/modules/private/buildbot/common/build_helpers.py index ed7ada3..acea905 100644 --- a/modules/private/buildbot/common/build_helpers.py +++ b/modules/private/buildbot/common/build_helpers.py @@ -1,10 +1,11 @@ from buildbot.plugins import util, steps, schedulers from buildbot_buildslist import BuildsList +from shutil import which __all__ = [ "force_scheduler", "deploy_scheduler", "hook_scheduler", "clean_branch", "package_and_upload", "SlackStatusPush", - "XMPPStatusPush" + "XMPPStatusPush", "NixShellCommand" ] # Small helpers" @@ -30,6 +31,26 @@ def package_and_upload(package, package_dest, package_url): command=["rm", "-f", package]), ] +# Steps +class NixShellCommand(steps.ShellCommand): + def __init__(self, command=None, pure=True, nixfile=None, **kwargs): + assert(isinstance(command, str)) + oldpath = kwargs.get("env", {}).get("PATH", None) + if which("nix-shell", path=oldpath) is None: + kwargs["env"] = kwargs.get("env", {}) + if isinstance(oldpath, str): + kwargs["env"]["PATH"] = "/run/current-system/sw/bin:" + oldpath + elif isinstance(oldpath, list): + kwargs["env"]["PATH"] = ["/run/current-system/sw/bin"] + oldpath + nixcommand = ["nix-shell"] + if pure: + nixcommand.append("--pure") + nixcommand.append("--run") + nixcommand.append(command) + if nixfile is not None: + nixcommand.append(nixfile) + super().__init__(command=nixcommand, **kwargs) + # Schedulers def force_scheduler(name, builders): return schedulers.ForceScheduler(name=name, diff --git a/modules/private/buildbot/projects/immaeEu/__init__.py b/modules/private/buildbot/projects/immaeEu/__init__.py index dfe684c..f119b4f 100644 --- a/modules/private/buildbot/projects/immaeEu/__init__.py +++ b/modules/private/buildbot/projects/immaeEu/__init__.py @@ -147,9 +147,9 @@ def recettes_factory(): factory.addStep(steps.Git(logEnviron=False, repourl=E.RECETTES_GIT_URL, submodules=True, sshPrivateKey=open(E.SSH_KEY_PATH).read().rstrip(), sshHostKey=E.SSH_HOST_KEY, mode="full", method="copy")) - factory.addStep(steps.ShellCommand(name="build website", + factory.addStep(NixShellCommand(name="build website", logEnviron=False, haltOnFailure=True, workdir="source", - env=path_env, command=["jekyll", "build", "--baseurl", "/recettes"])) + env=path_env, command="jekyll build --trace --baseurl /recettes")) factory.addStep(steps.MasterShellCommand(command="rm -rf {}".format(E.RECETTES_RELEASE_PATH))) factory.addStep(steps.DirectoryUpload(workersrc="../source/_site", masterdest=E.RECETTES_RELEASE_PATH,