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