Monorepo for Tangled
tangled.org
1{
2 "lexicon": 1,
3 "id": "sh.tangled.pipeline",
4 "needsCbor": true,
5 "needsType": true,
6 "defs": {
7 "main": {
8 "type": "record",
9 "key": "tid",
10 "record": {
11 "type": "object",
12 "required": [
13 "triggerMetadata",
14 "workflows"
15 ],
16 "properties": {
17 "triggerMetadata": {
18 "type": "ref",
19 "ref": "#triggerMetadata"
20 },
21 "workflows": {
22 "type": "array",
23 "items": {
24 "type": "ref",
25 "ref": "#workflow"
26 }
27 }
28 }
29 }
30 },
31 "triggerMetadata": {
32 "type": "object",
33 "required": [
34 "kind",
35 "repo"
36 ],
37 "properties": {
38 "kind": {
39 "type": "string",
40 "enum": [
41 "push",
42 "pull_request",
43 "manual"
44 ]
45 },
46 "repo": {
47 "type": "ref",
48 "ref": "#triggerRepo"
49 },
50 "push": {
51 "type": "ref",
52 "ref": "#pushTriggerData"
53 },
54 "pullRequest": {
55 "type": "ref",
56 "ref": "#pullRequestTriggerData"
57 },
58 "manual": {
59 "type": "ref",
60 "ref": "#manualTriggerData"
61 }
62 }
63 },
64 "triggerRepo": {
65 "type": "object",
66 "required": [
67 "knot",
68 "did",
69 "repo",
70 "defaultBranch"
71 ],
72 "properties": {
73 "knot": {
74 "type": "string"
75 },
76 "did": {
77 "type": "string",
78 "format": "did"
79 },
80 "repo": {
81 "type": "string"
82 },
83 "defaultBranch": {
84 "type": "string"
85 }
86 }
87 },
88 "pushTriggerData": {
89 "type": "object",
90 "required": [
91 "ref",
92 "newSha",
93 "oldSha"
94 ],
95 "properties": {
96 "ref": {
97 "type": "string"
98 },
99 "newSha": {
100 "type": "string",
101 "minLength": 40,
102 "maxLength": 40
103 },
104 "oldSha": {
105 "type": "string",
106 "minLength": 40,
107 "maxLength": 40
108 }
109 }
110 },
111 "pullRequestTriggerData": {
112 "type": "object",
113 "required": [
114 "sourceBranch",
115 "targetBranch",
116 "sourceSha",
117 "action"
118 ],
119 "properties": {
120 "sourceBranch": {
121 "type": "string"
122 },
123 "targetBranch": {
124 "type": "string"
125 },
126 "sourceSha": {
127 "type": "string",
128 "minLength": 40,
129 "maxLength": 40
130 },
131 "action": {
132 "type": "string"
133 }
134 }
135 },
136 "manualTriggerData": {
137 "type": "object",
138 "properties": {
139 "inputs": {
140 "type": "array",
141 "items": {
142 "type": "object",
143 "required": [
144 "key",
145 "value"
146 ],
147 "properties": {
148 "key": {
149 "type": "string"
150 },
151 "value": {
152 "type": "string"
153 }
154 }
155 }
156 }
157 }
158 },
159 "workflow": {
160 "type": "object",
161 "required": [
162 "name",
163 "dependencies",
164 "steps",
165 "environment",
166 "clone"
167 ],
168 "properties": {
169 "name": {
170 "type": "string"
171 },
172 "dependencies": {
173 "type": "ref",
174 "ref": "#dependencies"
175 },
176 "steps": {
177 "type": "array",
178 "items": {
179 "type": "ref",
180 "ref": "#step"
181 }
182 },
183 "environment": {
184 "type": "array",
185 "items": {
186 "type": "object",
187 "required": [
188 "key",
189 "value"
190 ],
191 "properties": {
192 "key": {
193 "type": "string"
194 },
195 "value": {
196 "type": "string"
197 }
198 }
199 }
200 },
201 "clone": {
202 "type": "ref",
203 "ref": "#cloneOpts"
204 }
205 }
206 },
207 "dependencies": {
208 "type": "array",
209 "items": {
210 "type": "object",
211 "required": [
212 "registry",
213 "packages"
214 ],
215 "properties": {
216 "registry": {
217 "type": "string"
218 },
219 "packages": {
220 "type": "array",
221 "items": {
222 "type": "string"
223 }
224 }
225 }
226 }
227 },
228 "cloneOpts": {
229 "type": "object",
230 "required": [
231 "skip",
232 "depth",
233 "submodules"
234 ],
235 "properties": {
236 "skip": {
237 "type": "boolean"
238 },
239 "depth": {
240 "type": "integer"
241 },
242 "submodules": {
243 "type": "boolean"
244 }
245 }
246 },
247 "step": {
248 "type": "object",
249 "required": [
250 "name",
251 "command"
252 ],
253 "properties": {
254 "name": {
255 "type": "string"
256 },
257 "command": {
258 "type": "string"
259 }
260 }
261 }
262 }
263}