OXYGENHUB
◆ perf-6 retro-remote-debug-controller / .flow / pipeline.kdl
1.6 KiB · last changed ci: OxygenFlow pipeline, and Git's own files ignored 25 days ago source blame history raw
1
// retro-remote-debug-controller's pipeline on OxygenFlow: every push to a
2
// bookmark on OxygenHub runs it in Firecracker microVMs; the jobs appear as
3
// checks on the change and in the Flow tab.
4
schema-version 1
5
6
// The X16 toolchain image Metal Gear and Super Mario Land build with: gcc,
7
// Python with pytest, and the RRDC fork of x16emu with its ROM in
8
// /opt/x16emu (the reference emulator of this repository's contract).
9
// Re-pin it when theirs is rebuilt.
10
sandbox "x16" {
11
    runtime "microvm"
12
    rootfs "cas://blob/8b6bb0c6452f4c6fef50704a5cc6f27722900686caf55061415f20c21feb5c51"
13
    memory-limit "1GiB"
14
    cpu-limit 2
15
    network "isolated"
16
}
17
18
// The same image with the guest's loopback up: the conformance suite talks
19
// to the emulator's control port on 127.0.0.1. Nothing leaves the guest.
20
sandbox "x16-loopback" {
21
    runtime "microvm"
22
    rootfs "cas://blob/8b6bb0c6452f4c6fef50704a5cc6f27722900686caf55061415f20c21feb5c51"
23
    memory-limit "2GiB"
24
    cpu-limit 2
25
    network "loopback"
26
}
27
28
// The shared server compiles cleanly as C11 with every warning an error,
29
// and the Python client and suite compile.
30
job "build" {
31
    sandbox "x16"
32
    exec "sh" "-eu" ".flow/jobs/build.sh"
33
}
34
35
// The conformance suite against the reference emulator, launched headless
36
// in the guest; pytest's JUnit XML for the hub's Tests tab, kept when the
37
// job fails too.
38
job "conformance" {
39
    sandbox "x16-loopback"
40
    depends-on "build"
41
    exec "sh" "-eu" ".flow/jobs/test.sh"
42
    output {
43
        artifact "junit" {
44
            path "/src/junit.xml"
45
            when "always"
46
        }
47
    }
48
}