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}