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": "ref",
143 "ref": "#pair"
144 }
145 }
146 }
147 },
148 "workflow": {
149 "type": "object",
150 "required": [
151 "name",
152 "dependencies",
153 "steps",
154 "environment",
155 "clone"
156 ],
157 "properties": {
158 "name": {
159 "type": "string"
160 },
161 "dependencies": {
162 "type": "array",
163 "items": {
164 "type": "ref",
165 "ref": "#dependency"
166 }
167 },
168 "steps": {
169 "type": "array",
170 "items": {
171 "type": "ref",
172 "ref": "#step"
173 }
174 },
175 "environment": {
176 "type": "array",
177 "items": {
178 "type": "ref",
179 "ref": "#pair"
180 }
181 },
182 "clone": {
183 "type": "ref",
184 "ref": "#cloneOpts"
185 }
186 }
187 },
188 "dependency": {
189 "type": "object",
190 "required": [
191 "registry",
192 "packages"
193 ],
194 "properties": {
195 "registry": {
196 "type": "string"
197 },
198 "packages": {
199 "type": "array",
200 "items": {
201 "type": "string"
202 }
203 }
204 }
205 },
206 "cloneOpts": {
207 "type": "object",
208 "required": [
209 "skip",
210 "depth",
211 "submodules"
212 ],
213 "properties": {
214 "skip": {
215 "type": "boolean"
216 },
217 "depth": {
218 "type": "integer"
219 },
220 "submodules": {
221 "type": "boolean"
222 }
223 }
224 },
225 "step": {
226 "type": "object",
227 "required": [
228 "name",
229 "command"
230 ],
231 "properties": {
232 "name": {
233 "type": "string"
234 },
235 "command": {
236 "type": "string"
237 },
238 "environment": {
239 "type": "array",
240 "items": {
241 "type": "ref",
242 "ref": "#pair"
243 }
244 }
245 }
246 },
247 "pair": {
248 "type": "object",
249 "required": [
250 "key",
251 "value"
252 ],
253 "properties": {
254 "key": {
255 "type": "string"
256 },
257 "value": {
258 "type": "string"
259 }
260 }
261 }
262 }
263}