Configuration
configuration not found
Configuration
configuration not found
Job
#!raku
use Sparky::JobApi;
sub wait-jobs(@q) {
my @jobs;
for @q -> $j {
my $supply = supply {
while True {
my %info = $j.info;
my $status = $j.status;
%info<status> = $status;
emit %info;
done if $status eq "FAIL" or $status eq "OK";
sleep(1);
}
}
$supply.tap( -> $v {
push @jobs, $v if $v<status> eq "FAIL" or $v<status> eq "OK";
# say $v;
});
}
say @jobs.grep({$_<status> eq "OK"}).elems, " jobs finished successfully";
say @jobs.grep({$_<status> eq "FAIL"}).elems, " jobs failed";
say @jobs.grep({$_<status> eq "TIMEOUT"}).elems, " jobs timeouted";
}
if (tags()<stage> || "main") eq "main" {
my @jobs;
say "code: ", tags()<code>;
# ["2023.12", "2023.11", "2023.10", "2023.08", "2023.06", "2023.05", "2023.04", "2023.02", "2022.12"]
for <2023.12 2023.11 2023.10 2023.08 2023.06 2023.05 2023.04 2023.02 2022.12> -> $v {
my $j = Sparky::JobApi.new: :project<rakubug_run>;
$j.queue({
description => "rakubug run",
tags => %(
stage => "child",
code => tags()<code>,
version => $v,
),
sparrowdo => %(
docker => "rakubug",
no_sudo => True,
image => "melezhik/sparrow:alpine_arm_{$v}"
),
});
push @jobs, $j;
}
wait-jobs @jobs;
for @jobs -> $j {
my $st = $j.get-stash();
say "=========";
say "version: ", $st<version>;
say "output:";
say "=========";
say $st<output>;
say "=========";
}
} elsif tags()<stage> eq "child" {
task-run "load code from {tags()<code>}", "curl", %(
args => [
%(
#'-D' => '-',
'output' => "{$*CWD}/code.raku"
),
[
'silent',
'-f',
'location'
],
tags()<code>
]
);
bash "raku -v";
say "executing code:";
say "=======================";
say "code.raku".IO.slurp();
say "=======================";
bash "rm -rf output.txt; raku code.raku 2>\&1 | tee output.txt; echo", %( cwd => "{$*CWD}" );
my $j = Sparky::JobApi.new: :mine;
# puts a data so that other jobs could read it
$j.put-stash({
output => "output.txt".IO.slurp,
version => tags()<version>,
});
}