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
|
//go:build workflows
package main
var _ = (&Workflow{
Name: "Test",
On: []any{"push"},
Jobs: Map[Job]{
{K: "hakurei", V: Job{
Name: "Hakurei",
On: "nix",
Steps: []Step{
checkout,
newNixOSTest("hakurei"),
newUploadArtifact("test output", "hakurei-vm-output"),
},
}},
{K: "race", V: Job{
Name: "Hakurei (race detector)",
On: "nix",
Steps: []Step{
checkout,
newNixOSTest("race"),
newUploadArtifact("test output", "hakurei-race-vm-output"),
},
}},
{K: "sandbox", V: Job{
Name: "Sandbox",
On: "nix",
Steps: []Step{
checkout,
newNixOSTest("sandbox"),
newUploadArtifact("test output", "sandbox-vm-output"),
},
}},
{K: "sandbox-race", V: Job{
Name: "Sandbox (race detector)",
On: "nix",
Steps: []Step{
checkout,
newNixOSTest("sandbox-race"),
newUploadArtifact("test output", "sandbox-race-vm-output"),
},
}},
{K: "sharefs", V: Job{
Name: "ShareFS",
On: "nix",
Steps: []Step{
checkout,
newNixOSTest("sharefs"),
newUploadArtifact("test output", "sharefs-vm-output"),
},
}},
{K: "check", V: Job{
Name: "Flake checks",
On: "nix",
Needs: []string{
"hakurei",
"race",
"sandbox",
"sandbox-race",
"sharefs",
},
Steps: []Step{
checkout,
{
Name: "Run checks",
Run: "nix " +
"--print-build-logs " +
"--experimental-features 'nix-command flakes' " +
"flake check ./test",
},
},
}},
{K: "dist", V: Job{
Name: "Create distribution",
On: "nix",
Steps: []Step{
checkout,
{
Name: "Build for test",
ID: "build-test",
Run: "export HAKUREI_REV=\"$(git rev-parse --short HEAD)\" && " +
"sed -i.old " +
"'s/version = /version = \"0.0.0-'$HAKUREI_REV'\"; # version = /' " +
"test/package.nix && " +
"nix build --print-out-paths --print-build-logs ./test#dist && " +
"mv test/{package.nix.old,package.nix} && " +
"echo \"rev=$HAKUREI_REV\" >> $GITHUB_OUTPUT",
},
newUploadArtifact(
"test build",
"hakurei-${{ steps.build-test.outputs.rev }}",
),
},
}},
},
}).mustWriteFile("test")
|