{"$id":"https://buildbakery.com/api/recipe/schema","title":"BuildBakery recipe (codebuilder.yaml)","$ref":"#/definitions/codebuilder","definitions":{"codebuilder":{"type":"object","properties":{"workflows":{"type":"object","additionalProperties":{"type":"object","properties":{"name":{"type":"string"},"platform":{"type":"string","enum":["ios","android","macos","linux","windows","web","any"]},"runs_on":{"anyOf":[{"type":"string","enum":["macos","linux","windows"]},{"type":"array","items":{"type":"string","enum":["macos","linux","windows"]},"minItems":1}]},"labels":{"type":"array","items":{"type":"string"}},"timeout_minutes":{"type":"integer","exclusiveMinimum":0,"maximum":1440},"shell":{"type":"string","enum":["bash","pwsh","powershell","cmd"]},"env":{"type":"object","additionalProperties":{"type":["string","number","boolean"]}},"steps":{"type":"array","items":{"anyOf":[{"type":"string","minLength":1},{"type":"object","properties":{"name":{"type":"string"},"script":{"type":"string","minLength":1},"working_directory":{"type":"string"},"ignore_failure":{"type":"boolean"},"shell":{"type":"string","enum":["bash","pwsh","powershell","cmd"]}},"required":["script"],"additionalProperties":false}]},"minItems":1},"artifacts":{"type":"array","items":{"type":"string"}},"image":{"type":"string","maxLength":300,"pattern":"^[a-z0-9][a-z0-9._/:@-]*$"},"cache":{"anyOf":[{"type":"boolean","const":false},{"type":"object","properties":{"defaults":{"type":"boolean"},"paths":{"type":"array","items":{"type":"string","minLength":1,"maxLength":300},"maxItems":20},"key_files":{"type":"array","items":{"type":"string","minLength":1,"maxLength":300},"maxItems":20}},"additionalProperties":false}]},"manual":{"type":"boolean"},"tools":{"type":"object","additionalProperties":{"allOf":[{"type":["string","number"]},{"type":"string","pattern":"^[A-Za-z0-9._+-]{1,40}$"}]},"propertyNames":{"pattern":"^[a-z][a-z0-9_-]{0,39}$"}},"xcode":{"allOf":[{"anyOf":[{"type":"string"},{"type":"integer"}]},{"type":"string","pattern":"^(latest|\\d{1,2}(\\.\\d{1,2}){0,2})$"}]},"auto_install":{"type":"boolean"},"code_signing":{"type":"object","properties":{"distribution":{"type":"string","enum":["development","ad_hoc","app_store","enterprise","developer_id"]},"bundle_id":{"type":"string","pattern":"^[A-Za-z0-9.\\-*]+$"},"key":{"type":"string","maxLength":100}},"required":["distribution","bundle_id"],"additionalProperties":false},"android_signing":{"anyOf":[{"type":"boolean","const":true},{"type":"object","properties":{"keystore":{"type":"string","minLength":1,"maxLength":100}},"required":["keystore"],"additionalProperties":false}]},"publish":{"type":"object","properties":{"app_store_connect":{"anyOf":[{"type":"boolean","const":true},{"type":"object","properties":{"key":{"type":"string","maxLength":100},"submit_to_testflight":{"type":"boolean"},"beta_groups":{"type":"array","items":{"type":"string","minLength":1,"maxLength":100},"maxItems":20},"path":{"type":"string","minLength":1,"maxLength":300},"what_to_test":{"type":"string","minLength":1,"maxLength":4000},"bundle_id":{"type":"string","pattern":"^[A-Za-z0-9.-]+$"}},"additionalProperties":false}]},"notarize":{"anyOf":[{"type":"boolean","const":true},{"type":"object","properties":{"key":{"type":"string","maxLength":100},"path":{"type":"string","minLength":1,"maxLength":300},"staple":{"type":"boolean"}},"additionalProperties":false}]}},"additionalProperties":false},"deliver":{"type":"object","properties":{"folder":{"type":"string","minLength":1,"maxLength":200}},"required":["folder"],"additionalProperties":false},"simulator":{"anyOf":[{"type":"boolean","const":true},{"type":"object","properties":{"app":{"type":"string","minLength":1,"maxLength":300},"device":{"type":"string","minLength":1,"maxLength":100},"bundle_id":{"type":"string","pattern":"^[A-Za-z0-9.-]+$"},"appearance":{"type":"string","enum":["light","dark"]},"wait_seconds":{"type":"integer","minimum":0,"maximum":120},"screens":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[\\w-]{1,40}$"},"url":{"type":"string","minLength":1,"maxLength":500}},"required":["name"],"additionalProperties":false},"maxItems":20}},"additionalProperties":false}]},"oven_pool":{"type":"string","enum":["own","hosted","any"]},"verify_signing":{"anyOf":[{"type":"boolean","const":true},{"type":"object","properties":{"keystore":{"type":"string","minLength":1,"maxLength":100},"sha256":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"team_id":{"type":"string","pattern":"^[A-Z0-9]{10}$"}},"additionalProperties":false}]},"integrations":{"type":"object","properties":{"app_store_connect":{"anyOf":[{"type":"boolean","const":true},{"type":"string","minLength":1,"maxLength":100}]},"partner_center":{"anyOf":[{"type":"boolean","const":true},{"type":"string","minLength":1,"maxLength":100}]},"google_play":{"anyOf":[{"type":"boolean","const":true},{"type":"string","minLength":1,"maxLength":100}]},"firebase":{"anyOf":[{"type":"boolean","const":true},{"type":"string","minLength":1,"maxLength":100}]}},"additionalProperties":false}},"required":["platform","steps"],"additionalProperties":false}}},"required":["workflows"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"}