feat: add incoming ref data to non-flakes entrypoint
We can now implement a Nix library for Buildbot CI. :) We dump it into a file, it's better to pass large stuff and easier to escape things. Signed-off-by: Raito Bezarius <raito@lix.systems>
This commit is contained in:
parent
b3a0b5a69e
commit
d60403c3c0
|
@ -8,6 +8,7 @@ from collections.abc import Generator
|
||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import TYPE_CHECKING, Any
|
from typing import TYPE_CHECKING, Any
|
||||||
|
import tempfile
|
||||||
|
|
||||||
import buildbot
|
import buildbot
|
||||||
from buildbot.configurators import ConfiguratorBase
|
from buildbot.configurators import ConfiguratorBase
|
||||||
|
@ -453,13 +454,14 @@ class NixEvalCommand(buildstep.ShellMixin, steps.BuildStep):
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def make_job_evaluator(name: str, settings: EvaluatorSettings, flake: bool) -> NixEvalCommand:
|
def make_job_evaluator(name: str, settings: EvaluatorSettings, flake: bool, incoming_ref_filename: str) -> NixEvalCommand:
|
||||||
actual_command = []
|
actual_command = []
|
||||||
|
|
||||||
if flake:
|
if flake:
|
||||||
actual_command += ["--flake", f".#{FLAKE_TARGET_ATTRIBUTE_FOR_JOBS}"]
|
actual_command += ["--flake", f".#{FLAKE_TARGET_ATTRIBUTE_FOR_JOBS}"]
|
||||||
else:
|
else:
|
||||||
actual_command += ["--expr", "import ./.ci/buildbot.nix"]
|
actual_command += ["--expr",
|
||||||
|
f"import ./.ci/buildbot.nix {{ incoming_ref_data = builtins.fromJSON (builtins.readFile {incoming_ref_filename}); }}"]
|
||||||
|
|
||||||
return NixEvalCommand(
|
return NixEvalCommand(
|
||||||
env={},
|
env={},
|
||||||
|
@ -514,7 +516,8 @@ class NixConfigure(buildstep.CommandMixin, steps.BuildStep):
|
||||||
make_job_evaluator(
|
make_job_evaluator(
|
||||||
"evaluate `.ci/buildbot.nix` jobs",
|
"evaluate `.ci/buildbot.nix` jobs",
|
||||||
self.evaluator_settings,
|
self.evaluator_settings,
|
||||||
False
|
False,
|
||||||
|
"build/incoming-ref.json"
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
@ -527,7 +530,8 @@ class NixConfigure(buildstep.CommandMixin, steps.BuildStep):
|
||||||
make_job_evaluator(
|
make_job_evaluator(
|
||||||
"evaluate `flake.nix` jobs",
|
"evaluate `flake.nix` jobs",
|
||||||
self.evaluator_settings,
|
self.evaluator_settings,
|
||||||
True
|
True,
|
||||||
|
"build/incoming-ref.json"
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
@ -616,6 +620,11 @@ def nix_eval_config(
|
||||||
lock=eval_lock
|
lock=eval_lock
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# This information can be passed at job evaluation time
|
||||||
|
# to skip some jobs, e.g. expensive jobs, etc.
|
||||||
|
# Transfer incoming ref data to the target.
|
||||||
|
factory.addStep(steps.JSONPropertiesDownload(workerdest="incoming-ref.json"))
|
||||||
|
|
||||||
# NixConfigure will choose
|
# NixConfigure will choose
|
||||||
# how to add a NixEvalCommand job
|
# how to add a NixEvalCommand job
|
||||||
# based on whether there's a flake.nix or
|
# based on whether there's a flake.nix or
|
||||||
|
|
Loading…
Reference in a new issue