OxygenFlow's own pipeline: layout, notes, size and isolation checks, then a summary, in microVMs on Earth f29b88af0d9b
- Author
- Andy McCall @andymccall <[email protected]>
- When
- · 2026-09-28 11:54 UTC
- Signature
- ✔ signed by Andy McCall
- Hash
f29b88af0d9b273316c5837475d80a8e8079e27eaf14e444b774e922c97a9dde
- Depends on
- nothing: a root change
- Depended on by
- 0aac9efcbeea 5544c8998aa7 6f66e397539c 72772aa01d6b 9e5fd161efc3 411ef051b94d c1a24672dbd5 0941bb8ac32b fad6152112b1 78c45d1a752e 4fe0a145144f 20969df44046 eba8bdd7ad5a 85ad9087a566 f849c7889471 5c4016b9c5eb 67634e22f48f 2b40cb9b87e1 f3b4fdeb2bc2 fe128fa67a06
- In bookmarks
- main newer-pipeline push-uses-login
- In tags
- v0.2.0 v0.3.0 v0.3.1 v0.4.0 v0.5.0 v0.5.1 v0.5.2 v0.5.3
- Edits
- 6 atoms, 8 tree operations, 6 files
Browse the tree at this change
added
.flow/jobs/isolation.sh
+7 −0
|
1 |
+ |
# What the job can see of the machine (docs/m0.md §2). |
|
2 |
+ |
echo "kernel: $(uname -r), cpus: $(nproc), user: $(id -u)" |
|
3 |
+ |
echo "interfaces: $(tail -n +3 /proc/net/dev | cut -d: -f1 | tr -d ' ' | tr '\n' ' ')" |
|
4 |
+ |
if wget -q -T 3 -O /dev/null http://1.1.1.1 2>/dev/null; then echo "network reachable: not isolated" >&2; exit 1; fi |
|
5 |
+ |
echo "no network" |
|
6 |
+ |
if touch /etc/flow-probe 2>/dev/null; then echo "rootfs writable" >&2; exit 1; fi |
|
7 |
+ |
echo "rootfs read-only" |
added
.flow/jobs/layout.sh
+5 −0
|
1 |
+ |
# The workspace has the crates and documents it should. |
|
2 |
+ |
for f in Cargo.toml docs/m0.md crates/flow-core/src/pipeline.rs crates/flow-init/src/main.rs crates/flow/src/microvm.rs; do |
|
3 |
+ |
test -f "$f" || { echo "missing: $f" >&2; exit 1; } |
|
4 |
+ |
echo "found $f" |
|
5 |
+ |
done |
added
.flow/jobs/size.sh
+5 −0
|
1 |
+ |
# Lines of Rust per crate. |
|
2 |
+ |
for c in crates/*/; do |
|
3 |
+ |
n=$(find "$c" -name '*.rs' -exec cat {} + | wc -l) |
|
4 |
+ |
printf '%-24s %6d lines\n' "$c" "$n" |
|
5 |
+ |
done |
added
.flow/jobs/summary.sh
+1 −0
|
1 |
+ |
echo "$PROJECT: every check passed on this state." |
added
.flow/jobs/todos.sh
+4 −0
|
1 |
+ |
# Notes left in the code, for the log (they do not fail the job). |
|
2 |
+ |
n=$(grep -rn -E 'TODO|FIXME|XXX' crates | wc -l) |
|
3 |
+ |
echo "$n TODO/FIXME notes in crates/" |
|
4 |
+ |
grep -rn -E 'TODO|FIXME|XXX' crates | head -20 || true |
added
.flow/pipeline.kdl
+43 −0
|
1 |
+ |
// OxygenFlow's own pipeline (docs/m0.md). Runs in Firecracker microVMs on |
|
2 |
+ |
// Earth for every push to a bookmark; see the Flow tab on OxygenHub. |
|
3 |
+ |
schema-version 1 |
|
4 |
+ |
|
|
5 |
+ |
sandbox "alpine" { |
|
6 |
+ |
runtime "microvm" |
|
7 |
+ |
// Alpine 3.24.2 minirootfs, imported on Earth with `flow rootfs import`. |
|
8 |
+ |
rootfs "cas://blob/e95d22fb2380b67193f2640a12c2f8c7bae485f6fd14330bdb0c7157faa588dc" |
|
9 |
+ |
memory-limit "256MiB" |
|
10 |
+ |
cpu-limit 1 |
|
11 |
+ |
network "isolated" |
|
12 |
+ |
} |
|
13 |
+ |
|
|
14 |
+ |
job "layout" { |
|
15 |
+ |
sandbox "alpine" |
|
16 |
+ |
exec "sh" "-eu" ".flow/jobs/layout.sh" |
|
17 |
+ |
} |
|
18 |
+ |
|
|
19 |
+ |
job "todos" { |
|
20 |
+ |
sandbox "alpine" |
|
21 |
+ |
scope "crates/**" |
|
22 |
+ |
exec "sh" "-eu" ".flow/jobs/todos.sh" |
|
23 |
+ |
} |
|
24 |
+ |
|
|
25 |
+ |
job "size" { |
|
26 |
+ |
sandbox "alpine" |
|
27 |
+ |
scope "crates/**" |
|
28 |
+ |
exec "sh" "-eu" ".flow/jobs/size.sh" |
|
29 |
+ |
} |
|
30 |
+ |
|
|
31 |
+ |
job "isolation" { |
|
32 |
+ |
sandbox "alpine" |
|
33 |
+ |
exec "sh" "-eu" ".flow/jobs/isolation.sh" |
|
34 |
+ |
} |
|
35 |
+ |
|
|
36 |
+ |
job "summary" { |
|
37 |
+ |
sandbox "alpine" |
|
38 |
+ |
depends-on "layout" "todos" "size" "isolation" |
|
39 |
+ |
env { |
|
40 |
+ |
PROJECT "OxygenFlow" |
|
41 |
+ |
} |
|
42 |
+ |
exec "sh" "-eu" ".flow/jobs/summary.sh" |
|
43 |
+ |
} |