OXYGENHUB
# c1a24672dbd5 oxygenflow / .flow / pipeline.kdl
3.6 KiB · last changed ci: keep clippy's and test's target from their last passing run (refs #28) 23 days ago source blame history raw
This file is in conflict in this state; the markers below are the conflict. All conflicts
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
// The build image (images/rust): Rust with rustfmt and clippy, Node, and the
37
// vendored crates. oxygen comes from the pinned subrepo in deps/.
38
sandbox "rust" {
39
    runtime "microvm"
40
    rootfs "cas://blob/169de040f406eec3ec4af81400cff8736d0966c7532e73a44cdcf7d35cda05a4"
41
    memory-limit "8GiB"
42
    cpu-limit 4
43
    network "loopback"
44
}
45
46
sandbox "rust-small" {
47
    runtime "microvm"
48
    rootfs "cas://blob/169de040f406eec3ec4af81400cff8736d0966c7532e73a44cdcf7d35cda05a4"
49
    memory-limit "1GiB"
50
    cpu-limit 1
51
    network "isolated"
52
}
53
54
job "fmt" {
55
    sandbox "rust-small"
56
    // This workspace only: --all would reach the pinned oxygen in deps/.
57
    exec "cargo" "fmt" "--check" "-p" "flow" "-p" "flow-core" "-p" "flow-init"
58
}
59
60
job "clippy" {
61
    sandbox "rust"
62
    depends-on "fmt"
63
    mount {
64
        source "ephemeral://disk"
65
        target "/src/target"
66
        size "16GiB"
67
<<<<<<< oxy conflict 1 of 2, side 1 of 2: change a39dfbb6 "oxygen as a pinned subrepo in deps/ (make pins moves it), and fmt, clippy and tests in the pipeline, before the summary"
68
    }
69
    env {
70
        CARGO_INCREMENTAL "0"
71
======= oxy conflict 1 of 2, side 2 of 2: change 30cec500 "ci: keep clippy's and test's target from their last passing run (refs #28)"
72
        // Kept from this job's last passing run (oxygenflow#28): cargo
73
        // builds only what changed since.
74
        cache "target"
75
        key "Cargo.lock"
76
>>>>>>> oxy conflict 1 of 2 end
77
    }
78
    // One build identity for every CI state, so the cached target stays
79
    // fresh from one push to the next (oxygenflow#52).
80
    env {
81
        OXY_BUILD "ci"
82
    }
83
    exec "sh" ".flow/warm-target.sh" "cargo" "clippy" "--workspace" "--all-targets" "--locked" "--" "-D" "warnings"
84
}
85
86
job "test" {
87
    sandbox "rust"
88
    depends-on "fmt"
89
    mount {
90
        source "ephemeral://disk"
91
        target "/src/target"
92
        size "16GiB"
93
<<<<<<< oxy conflict 2 of 2, side 1 of 2: change a39dfbb6 "oxygen as a pinned subrepo in deps/ (make pins moves it), and fmt, clippy and tests in the pipeline, before the summary"
94
    }
95
    env {
96
        CARGO_INCREMENTAL "0"
97
======= oxy conflict 2 of 2, side 2 of 2: change 30cec500 "ci: keep clippy's and test's target from their last passing run (refs #28)"
98
        // Kept from this job's last passing run (oxygenflow#28): cargo
99
        // builds only what changed since.
100
        cache "target"
101
        key "Cargo.lock"
102
    }
103
    // One build identity for every CI state, so the cached target stays
104
    // fresh from one push to the next (oxygenflow#52).
105
    env {
106
        OXY_BUILD "ci"
107
>>>>>>> oxy conflict 2 of 2 end
108
    }
109
    exec "sh" ".flow/warm-target.sh" "cargo" "test" "--workspace" "--locked"
110
}
111
112
job "summary" {
113
    sandbox "alpine"
114
    depends-on "layout" "todos" "size" "isolation" "clippy" "test"
115
    env {
116
        PROJECT "OxygenFlow"
117
    }
118
    exec "sh" "-eu" ".flow/jobs/summary.sh"
119
}