-
Notifications
You must be signed in to change notification settings - Fork 1
/
sparrow.yaml
131 lines (121 loc) · 3.14 KB
/
sparrow.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
image:
- melezhik/sparrow:debian
secrets:
- FEZ_TOKEN
tasks:
-
name: main
default: true
language: Raku
code: |
use Text::Table::Simple;
my @columns = ("Rakudo Version", "Status", "Time", "Linux Dist");
my @rows;
my $fail = False;
for config()<tasks><multi-versions><state><list><> -> $i {
@rows.push: [ $i<version>, $i<status>, $i<time>, os() ];
$fail = True unless $i<status> eq "OK";
}
my @table = lol2table(@columns,@rows);
.say for @table;
die "some tests failed" if $fail == True;
depends:
-
name: multi-versions
followup:
-
name: fez-upload
-
name: multi-versions
language: Raku
config:
list:
#- 2022.06
- 2022.07
- 2022.12
code: |
my @state;
for config()<list><> -> $v {
my $s = %( version => $v );
if "{cache_root_dir()}/{$v}_ok".IO ~~ :e {
$s<status> = "OK";
} else {
$s<status> = "FAIL";
}
if "{cache_root_dir()}/{$v}_time".IO ~~ :e {
$s<time> = "{cache_root_dir()}/{$v}_time".IO.slurp();
} else {
$s<time> = "NA";
}
@state.push: $s;
}
update_state %( list => @state );
init: |
for config()<list><> -> $v {
run_task("test", %( version => $v ));
}
subtasks:
-
name: test
language: Bash
init: |
ignore_error
code: |
set -e
echo "Linux version: $os"
export PATH=$(rakubrew home)/shims:$PATH
rakubrew download moar-$version
rakubrew switch moar-$version
which raku
which zef
raku --version
zef --version
export SP6_DUMP_TASK_CODE=0
cd source/
zef install . --deps-only --test-depends --build-depends --/test -to=home
/usr/bin/time -f "%E real,%U user,%S sys | CPU Percentage: %P" -o "${cache_root_dir}/${version}_time" \
zef install -to=home . && tomty --all --show-failed && touch "${cache_root_dir}/${version}_ok"
depends:
-
name: install-deps
-
name: install-deps
language: Bash
code: |
set -e
sudo apt-get install -y time
sudo apt-get install -qy nano python3-pip
pip3 install -U pyaml
zef install --/test Text::Table::Simple
curl -sf https://rakubrew.org/perl/rakubrew -o rakubrew
sudo mv rakubrew /usr/local/bin
sudo chmod a+x /usr/local/bin/rakubrew
rakubrew mode shim
-
name: fez-upload
language: Raku
init: |
if config()<tasks><git-commit><state><comment> ~~ /'Release!'/ {
run_task "upload"
}
subtasks:
-
name: upload
language: Bash
code: |
set -e
cat << HERE > ~/.fez-config.json
{"groups":[],"un":"melezhik","key":"$FEZ_TOKEN"}
HERE
cd source/
zef install --/test fez
tom --clean
fez upload
depends:
-
name: git-commit
-
name: git-commit
plugin: git-commit-data
config:
dir: source