DynamicRunCommand: don't run if the build failed

This commit is contained in:
Graham Christensen 2021-12-14 22:10:02 -05:00
parent 1a30a0c2f1
commit 216d8bee35
3 changed files with 30 additions and 1 deletions

View file

@ -40,6 +40,10 @@ sub areDynamicCommandsEnabled {
sub isBuildEligibleForDynamicRunCommand {
my ($build) = @_;
if ($build->get_column("buildstatus") != 0) {
return 0;
}
if ($build->get_column("job") =~ "^runCommandHook\..+") {
my $out = $build->buildoutputs->find({name => "out"});
if (!defined $out) {
@ -135,7 +139,6 @@ sub fanoutToCommands {
# missing test cases:
#
# 1. is it enabled on the jobset?
# 2. what if the build failed?
if (isBuildEligibleForDynamicRunCommand($build)) {
my $job = $build->get_column('job');
my $out = $build->buildoutputs->find({name => "out"});

View file

@ -159,6 +159,14 @@ subtest "isBuildEligibleForDynamicRunCommand" => sub {
"out is a symlink to a directory"
);
};
subtest "On build status ..." => sub {
is(
Hydra::Plugin::RunCommand::isBuildEligibleForDynamicRunCommand($builds->{"runCommandHook.failed"}),
0,
"Failed builds don't get run"
);
};
};

View file

@ -127,4 +127,22 @@ rec {
];
};
runCommandHook.failed = mkDerivation {
name = "failed";
builder = "/bin/sh";
outputs = [ "out" ];
args = [
(
builtins.toFile "builder.sh" ''
#! /bin/sh
touch $out
chmod +x $out
exit 1
''
)
];
};
}