Skip to content

Commit 056c8d9

Browse files
authored
CI improvements (#788)
- Simplify script - Reduce special cases - Improve dependencies (not reading Skargo.toml/package.json yet) - At least build skip packages that have no tests
2 parents 81d5fd5 + 48385e8 commit 056c8d9

File tree

2 files changed

+98
-74
lines changed

2 files changed

+98
-74
lines changed

.circleci/base.yml

+18-18
Original file line numberDiff line numberDiff line change
@@ -51,20 +51,6 @@ jobs:
5151
- store_test_results:
5252
path: ~/test-results/skc.xml
5353

54-
skstore:
55-
docker:
56-
- image: skiplabs/skiplang:latest
57-
steps:
58-
- checkout
59-
- setup
60-
- run:
61-
name: Run skstore tests
62-
command: |
63-
mkdir -p ~/test-results
64-
cd skiplang/prelude && skargo test --jobs 8 --junitxml ~/test-results/skstore.xml
65-
- store_test_results:
66-
path: ~/test-results/skstore.xml
67-
6854
skdb:
6955
docker:
7056
- image: skiplabs/skdb-base:latest
@@ -91,20 +77,34 @@ jobs:
9177
- store_test_results:
9278
path: ~/test-results/skdb-wasm.xml
9379

94-
skiplang-lib-tests:
80+
skip-package-build:
81+
docker:
82+
- image: skiplabs/skiplang:latest
83+
parameters:
84+
dir:
85+
type: string
86+
steps:
87+
- checkout
88+
- setup
89+
- run:
90+
name: Build << parameters.dir >>
91+
command: |
92+
cd << parameters.dir >> && skargo build --all-targets
93+
94+
skip-package-tests:
9595
docker:
9696
- image: skiplabs/skiplang:latest
9797
parameters:
98-
libname:
98+
dir:
9999
type: string
100100
steps:
101101
- checkout
102102
- setup
103103
- run:
104-
name: Run << parameters.libname >> tests
104+
name: Run << parameters.dir >> tests
105105
command: |
106106
mkdir -p ~/test-results
107-
cd skiplang/<< parameters.libname >> && skargo test --junitxml ~/test-results/<< parameters.libname >>.xml
107+
cd << parameters.dir >> && skargo test --jobs 8 --junitxml ~/test-results/$(tr / - <<< "<< parameters.dir >>").xml
108108
- store_test_results:
109109
path: ~/test-results
110110

.circleci/generate_config.sh

+80-56
Original file line numberDiff line numberDiff line change
@@ -4,33 +4,56 @@
44

55
BASE="$(git merge-base main HEAD)"
66

7-
# shellcheck disable=SC2046 # We actually want splitting in jq command output
8-
git diff --quiet HEAD "$BASE" -- $(jq --raw-output ".workspaces[]" package.json)
9-
check_ts=$?
10-
git diff --quiet HEAD "$BASE" -- skiplang/compiler/ skiplang/prelude/ :^skiplang/prelude/ts
11-
skc=$?
12-
git diff --quiet HEAD "$BASE" -- skiplang/prelude/src/skstore/ skiplang/prelude/runtime/
13-
skstore=$?
14-
git diff --quiet HEAD "$BASE" -- skiplang/skjson
15-
skjson=$?
16-
git diff --quiet HEAD "$BASE" -- sql/ skiplang/sqlparser/
17-
skdb=$?
18-
git diff --quiet HEAD "$BASE" -- skipruntime-ts/
19-
skipruntime=$?
20-
git diff --quiet HEAD "$BASE" -- skiplang/prelude/ts/
21-
ts_prelude=$?
227
git diff --quiet HEAD "$BASE" -- examples/
238
examples=$?
249

25-
SKIPLANG_LIBS_CHANGED=()
26-
for lib_tests in skiplang/*/tests; do
27-
lib=$(basename "$(dirname "$lib_tests")")
28-
if [ "$lib" != compiler ] && [ "$lib" != prelude ] && \
29-
! git diff --quiet HEAD "$BASE" -- "skiplang/$lib"; then
30-
SKIPLANG_LIBS_CHANGED+=("$lib")
31-
fi
10+
shopt -s globstar
11+
declare -A SK_CHANGED
12+
for skargo_toml in **/Skargo.toml; do
13+
dir=$(dirname "$skargo_toml")
14+
git diff --quiet HEAD "$BASE" -- "$dir" :^"$dir/ts" \
15+
&& SK_CHANGED["$dir"]=false || SK_CHANGED["$dir"]=true
3216
done
3317

18+
if ${SK_CHANGED[skiplang/prelude]}; then
19+
SK_CHANGED[skiplang/compiler]=true
20+
SK_CHANGED[sql]=true
21+
fi
22+
if ${SK_CHANGED[skiplang/sqlparser]}; then
23+
SK_CHANGED[sql]=true
24+
fi
25+
26+
check_ts=false
27+
declare -A TS_CHANGED
28+
# shellcheck disable=SC2046 # We actually want splitting in jq command output
29+
for dir in $(jq --raw-output ".workspaces[]" package.json); do
30+
git diff --quiet HEAD "$BASE" -- "$dir" \
31+
&& TS_CHANGED["$dir"]=false || TS_CHANGED["$dir"]=true
32+
${TS_CHANGED["$dir"]} && check_ts=true
33+
done
34+
35+
for dir in "${!SK_CHANGED[@]}"; do
36+
${SK_CHANGED["$dir"]} && TS_CHANGED["$dir"]=true
37+
done
38+
39+
for dir in "${!TS_CHANGED[@]}"; do
40+
changed=${TS_CHANGED["$dir"]}
41+
while [ "$dir" != "." ] && [ "$dir" != "/" ]; do
42+
if ${TS_CHANGED["$dir"]:-false} && ! $changed; then break; fi
43+
TS_CHANGED["$dir"]=$changed
44+
dir=$(dirname "$dir")
45+
done
46+
done
47+
48+
if ${TS_CHANGED[skiplang/skjson]}; then
49+
TS_CHANGED[sql]=true
50+
TS_CHANGED[skipruntime-ts]=true
51+
fi
52+
if ${TS_CHANGED[skiplang/prelude]}; then
53+
TS_CHANGED[sql]=true
54+
TS_CHANGED[skipruntime-ts]=true
55+
fi
56+
3457
cat .circleci/base.yml
3558

3659
echo "workflows:"
@@ -41,7 +64,7 @@ echo "workflows:"
4164
- fast-checks
4265
EOF
4366

44-
if (( check_ts != 0 ))
67+
if $check_ts
4568
then
4669
cat <<EOF
4770
check-ts:
@@ -50,44 +73,45 @@ then
5073
EOF
5174
fi
5275

53-
if (( skc != 0 ))
54-
then
76+
for dir in "${!SK_CHANGED[@]}"; do
77+
if ${SK_CHANGED["$dir"]}; then
78+
case "$dir" in
79+
skipruntime-ts/* )
80+
TS_CHANGED[skipruntime-ts]=true
81+
;;
82+
sql)
83+
cat <<EOF
84+
skdb:
85+
jobs:
86+
- skdb
87+
EOF
88+
;;
89+
skiplang/compiler)
5590
cat <<EOF
5691
compiler:
5792
jobs:
5893
- compiler
5994
EOF
60-
fi
61-
62-
if (( skstore != 0 ))
63-
then
64-
cat <<EOF
65-
skstore:
66-
jobs:
67-
- skstore
68-
EOF
69-
fi
70-
71-
if [ ${#SKIPLANG_LIBS_CHANGED[@]} -gt 0 ]; then
72-
echo " skiplang-libs-tests:"
73-
echo " jobs:"
74-
for lib in "${SKIPLANG_LIBS_CHANGED[@]}"; do
75-
echo " - skiplang-lib-tests:"
76-
echo " libname: $lib"
77-
echo " name: $lib"
78-
done
79-
fi
80-
81-
if (( skdb != 0 || skstore != 0 ))
82-
then
83-
cat <<EOF
84-
skdb:
85-
jobs:
86-
- skdb
87-
EOF
88-
fi
95+
;;
96+
skiplang/sqlparser) ;;
97+
*)
98+
name=$(basename "$dir")
99+
if [ -d "$dir/tests" ]; then
100+
echo " $name-tests:"
101+
echo " jobs:"
102+
echo " - skip-package-tests:"
103+
else
104+
echo " $name-build:"
105+
echo " jobs:"
106+
echo " - skip-package-build:"
107+
fi
108+
echo " dir: $dir"
109+
echo " name: $name"
110+
esac
111+
fi
112+
done
89113

90-
if (( skdb != 0 || skstore != 0 || ts_prelude != 0 || skjson != 0 ))
114+
if ${TS_CHANGED[sql]}
91115
then
92116
cat <<EOF
93117
skdb-wasm:
@@ -96,7 +120,7 @@ then
96120
EOF
97121
fi
98122

99-
if (( skstore != 0 || skipruntime != 0 || ts_prelude != 0 || skjson != 0 ))
123+
if ${TS_CHANGED[skipruntime-ts]}
100124
then
101125
cat <<EOF
102126
skipruntime:

0 commit comments

Comments
 (0)