Project: rakubug

Build now
Configuration:

sparrowdo: no_sudo: true #no_index_update: true bootstrap: false format: default keep_builds: 10000 allow_manual_run: true vars: - name: code type: input
Scenario:

#!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>, }); }