[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"title":"Codemagic CI/CD configuration file - docs.codemagic.io","type":"object","properties":{"workflows":{"title":"Workflows for building a project","description":"You can use codemagic.yaml to define several workflows for building a project. Each workflow describes the entire build pipeline from triggers to publishing. For example, you may want to have separate workflows for developing, testing and publishing the app.","errorMessage":"Incorrect type. Expected a dictionary","type":"object","additionalProperties":{"$ref":"#/definitions/Workflow"}}},"required":["workflows"],"definitions":{"SecureEnvironmentVariable":{"title":"SecureEnvironmentVariable","type":"object","properties":{"name":{"title":"Name","type":"string"},"filePath":{"title":"Filepath","type":"string"},"type":{"title":"Type","enum":["secure_environment_variable"],"type":"string"},"group":{"title":"Group","type":"string"},"source":{"title":"Source","type":"string"}},"required":["name","filePath","type","group","source"],"additionalProperties":false},"InstanceType":{"title":"InstanceType","description":"Build machine type to use for the build.","enum":["mac_mini","mac_mini_m1","mac_mini_m2","mac_mini_m4","mac_pro","linux","linux_x2","linux_x4","windows_x2"],"type":"string"},"TriggeringEvent":{"title":"TriggeringEvent","description":"Currently supported events are push, pull_request, tag, pull_request_labeled.","enum":["push","pull_request","tag","pull_request_labeled","pull_request_labelled"],"type":"string"},"BranchPattern":{"title":"BranchPattern","type":"object","properties":{"pattern":{"title":"Exact value or glob pattern to search for a branch","description":"The pattern can also be passed with an environment variable.","default":"*","errorMessage":"Incorrect type. Expected an integer, float, boolean or nonempty string","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1},{"type":"integer"},{"type":"number"},{"type":"boolean"}]},"include":{"title":"Include the pattern","description":"If set to false, the matching branches will not be watched for triggering events.","default":true,"type":"boolean"},"source":{"title":"Specify whether the watched branch is the source or the target of the pull request","description":"The variable is ignored for events other than pull_request.","default":true,"type":"boolean"}},"additionalProperties":false},"TagPattern":{"title":"TagPattern","type":"object","properties":{"pattern":{"title":"Exact value or glob pattern to search for a tag","description":"The pattern can also be passed with an environment variable.","default":"*","errorMessage":"Incorrect type. Expected an integer, float, boolean or nonempty string","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1},{"type":"integer"},{"type":"number"},{"type":"boolean"}]},"include":{"title":"Include the pattern","description":"If set to false, the matching tags will not be watched for triggering events.","default":true,"type":"boolean"}},"additionalProperties":false},"Triggering":{"title":"Triggering","type":"object","properties":{"events":{"title":"List the events that trigger builds","description":"Currently supported events are push, pull_request, tag, pull_request_labeled, pull_request_labelled.","type":"array","items":{"$ref":"#/definitions/TriggeringEvent"}},"branch_patterns":{"title":"Branch patterns","description":"A branch pattern can match the name of a particular branch, or you can use wildcard symbols to create a pattern that matches several branches. Note that for pull request builds you have to specify whether the watched branch is the source or the target of the pull request.","errorMessage":"Incorrect type. Expected a not empty list of dictionaries","minItems":1,"type":"array","items":{"$ref":"#/definitions/BranchPattern"}},"tag_patterns":{"title":"Tag patterns","description":"A tag pattern can match the name of a particular tag, or you can use wildcard symbols to create a pattern that matches several tags.","errorMessage":"Incorrect type. Expected a not empty list of dictionaries","minItems":1,"type":"array","items":{"$ref":"#/definitions/TagPattern"}},"cancel_previous_builds":{"title":"Cancel previous builds","description":"To avoid running builds on outdated commits, set cancel_previous_builds to true to automatically cancel all ongoing and queued builds triggered by webhooks on push or pull request commit when a more recent build has been triggered for the same branch.","default":false,"anyOf":[{"type":"boolean"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]}},"additionalProperties":false},"InputType":{"title":"InputType","description":"An enumeration.","enum":["boolean","choice","number","string"],"type":"string"},"Input":{"title":"Input","type":"object","properties":{"description":{"title":"Input description","description":"A description for this input parameter. Description is displayed in Codemagic when manually starting a build for this workflow and user is prompted to provide values for the inputs.","minLength":1,"type":"string"},"type":{"title":"Input type","description":"Defines the data type of the input parameter. This must be one of: `boolean`, `choice`, `number` or `string`. By default, `string` is assumed. Input values for the `choice` type are resolved to strings and must be defined in the `options` field. Values for inputs with types `boolean` and `number` are persisted as booleans and integers or floating point numbers respectively, instead of converting them to strings as long as they are not used directly in string interpolations.","default":"string","allOf":[{"$ref":"#/definitions/InputType"}]},"options":{"title":"Choice options","description":"Provide a list of values as options for the `choice` input. Required if type is `choice` and prohibited otherwise.","minItems":1,"type":"array","items":{"anyOf":[{"type":"string","minLength":1},{"type":"integer"},{"type":"number"},{"type":"boolean"}]}},"default":{"title":"Default value for non-required input","description":"Provide a default value for the input parameter. Must be specified if the input is not required and prohibited otherwise.","anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"number"},{"type":"string"}]}},"required":["description"],"additionalProperties":false},"DistributionType":{"title":"DistributionType","description":"An enumeration.","enum":["ad_hoc","app_store","development","enterprise"],"type":"string"},"ProfileWithVariable":{"title":"ProfileWithVariable","type":"object","properties":{"profile":{"title":"Profile reference","description":"Profile reference found in Team settings -> Code signing identities","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1}]},"environment_variable":{"title":"Environment variable","description":"Name of the variable containing the profile path","minLength":1,"type":"string"}},"required":["profile"],"additionalProperties":false},"CertificateWithVariable":{"title":"CertificateWithVariable","type":"object","properties":{"certificate":{"title":"Certificate reference","description":"Certificate reference found in Team settings -> Code signing identities","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1}]},"environment_variable":{"title":"Environment variable","description":"Name of the variable containing the certificate path","minLength":1,"type":"string"}},"required":["certificate"],"additionalProperties":false},"IosSigning":{"title":"IosSigning","type":"object","properties":{"distribution_type":{"title":"Distribution type","description":"Type of certificates and profiles to fetch from Code signing identities","errorMessage":"Incorrect distribution type. Expected one of ad_hoc, app_store, development, enterprise","anyOf":[{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/DistributionType"}]},"bundle_identifier":{"title":"Bundle identifier","description":"Bundle identifier of certificates and profiles to fetch from Code signing identities","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1}]},"provisioning_profiles":{"title":"Provisioning profiles","description":"Provisioning profiles to fetch from Code signing identities","errorMessage":"Incorrect type. Expected list of strings or dictionaries","minItems":1,"type":"array","items":{"anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1},{"$ref":"#/definitions/ProfileWithVariable"}]}},"certificates":{"title":"Certificates","description":"Certificates to fetch from Code signing identities","errorMessage":"Incorrect type. Expected list of strings or dictionaries","minItems":1,"type":"array","items":{"anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1},{"$ref":"#/definitions/CertificateWithVariable"}]}}},"additionalProperties":false},"KeystoreWithVariables":{"title":"KeystoreWithVariables","type":"object","properties":{"keystore":{"title":"Keystore reference","description":"Keystore reference found in Team settings -> Code signing identities","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1}]},"keystore_environment_variable":{"title":"Keystore environment variable","description":"Name of the variable containing the keystore path","minLength":1,"type":"string"},"keystore_password_environment_variable":{"title":"Keystore password environment variable","description":"Name of the variable containing the keystore password","minLength":1,"type":"string"},"key_alias_environment_variable":{"title":"Key alias environment variable","description":"Name of the variable containing the key alias","minLength":1,"type":"string"},"key_password_environment_variable":{"title":"Key password environment variable","description":"Name of the variable containing the key password","minLength":1,"type":"string"}},"required":["keystore"],"additionalProperties":false},"FlutterWithFlavor":{"title":"FlutterWithFlavor","type":"object","properties":{"version":{"title":"Flutter version","description":"Define the channel name, version (e.g. v1.13.4) or 'fvm' if using Flutter Version Management.","anyOf":[{"type":"string","minLength":1},{"type":"integer"},{"type":"number"}]},"flavor":{"title":"Flutter flavor","description":"The name of the flavor to use when using FVM.","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1}]}},"required":["version"],"additionalProperties":false},"Environment":{"title":"Environment","type":"object","properties":{"vars":{"title":"Environment variables","description":"Define your environment variables.","errorMessage":"Incorrect type. Expected a dictionary with integer, float, boolean or nonempty string as values","type":"object","patternProperties":{"[0-9a-zA-Z_]+":{"anyOf":[{"type":"string","minLength":1},{"type":"integer"},{"type":"number"},{"type":"boolean"}]}},"additionalProperties":{"anyOf":[{"type":"string","minLength":1},{"type":"integer"},{"type":"number"},{"type":"boolean"}]}},"groups":{"title":"Environment variable groups","description":"Define environment variable group names that have been configured in app or team settings.","errorMessage":"Incorrect type. Expected a list of nonempty strings","type":"array","items":{"type":"string","minLength":1}},"ios_signing":{"title":"iOS code signing identities","description":"iOS code signing identities configured under Team settings","errorMessage":"Incorrect type. Expected a dictionary","allOf":[{"$ref":"#/definitions/IosSigning"}]},"android_signing":{"title":"Android code signing identities","description":"Android code signing identities configured under Team settings","errorMessage":"Incorrect type. Expected a list","minItems":1,"type":"array","items":{"anyOf":[{"$ref":"#/definitions/KeystoreWithVariables"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1}]}},"xcode":{"title":"Xcode version","description":"Define latest, edge or version (e.g. 11.2).","default":"latest","errorMessage":"Incorrect type. Expected an integer, float or nonempty string","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1},{"type":"integer"},{"type":"number"}]},"ubuntu":{"title":"Ubuntu","description":"Define the Ubuntu version to use for the build.","errorMessage":"Incorrect type. Expected an integer, float or nonempty string","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1},{"type":"integer"},{"type":"number"}]},"cocoapods":{"title":"CocoaPods version","description":"Define default or version (e.g. 1.9.1).","default":"default","errorMessage":"Incorrect type. Expected an integer, float or nonempty string","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1},{"type":"integer"},{"type":"number"}]},"node":{"title":"Node version","description":"Define default, latest, current, lts, carbon (or another stream), nightly or version (e.g. 12.4.0).","errorMessage":"Incorrect type. Expected an integer, float or nonempty string","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1},{"type":"integer"},{"type":"number"}]},"npm":{"title":"Npm version","description":"Define default, latest, next, lts or version (e.g. 6.13.7).","errorMessage":"Incorrect type. Expected an integer, float or nonempty string","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1},{"type":"integer"},{"type":"number"}]},"ndk":{"title":"Ndk revision","description":"Define default or revision (e.g. r19c).","errorMessage":"Incorrect type. Expected an integer, float or nonempty string","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1},{"type":"integer"},{"type":"number"}]},"java":{"title":"Java platform version","description":"Define default, or platform version (e.g. 11).","errorMessage":"Incorrect type. Expected an integer, float or nonempty string","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1},{"type":"integer"},{"type":"number"}]},"ruby":{"title":"Ruby platform version","description":"Define default, or platform version (e.g. 2.5.1).","errorMessage":"Incorrect type. Expected an integer, float or nonempty string","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1},{"type":"integer"},{"type":"number"}]},"flutter":{"title":"Flutter version","description":"Define the channel name, version (e.g. v1.13.4) or 'fvm' if using Flutter Version Management.","errorMessage":"Incorrect type. Expected an integer, float, nonempty string or dictionary","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1},{"type":"integer"},{"type":"number"},{"$ref":"#/definitions/FlutterWithFlavor"}]},"unity":{"title":"Unity version","description":"Define exact version (e.g. 2020.3.15f2).","errorMessage":"Incorrect type. Expected a nonempty string","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1}]}},"additionalProperties":false},"Integrations":{"title":"Integrations","type":"object","properties":{"app_store_connect":{"title":"Use info from Apple Developer Portal integration","description":"Specify the name of the App Store Connect API key to be used from team or personal integrations to authenticate actions for code signing and publishing.","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1}]}},"additionalProperties":false},"Cache":{"title":"Cache","type":"object","properties":{"cache_paths":{"title":"Paths to be cached","description":"For example, you may consider caching the following paths: \"$FLUTTER_ROOT/.pub-cache\" for Dart cache, \"$HOME/.gradle/caches\" for gradle cache, \"$HOME/Library/Caches/CocoaPods\" for CocoaPods cache.","errorMessage":"Incorrect type. Expected a list of nonempty strings","type":"array","items":{"type":"string","minLength":1}}},"additionalProperties":false},"Changeset":{"title":"Changeset","type":"object","properties":{"includes":{"title":"Include paths to watch","type":"array","items":{"anyOf":[{"type":"string","minLength":1},{"type":"integer"},{"type":"number"},{"type":"boolean"}]}},"excludes":{"title":"Exclude paths from watched","type":"array","items":{"anyOf":[{"type":"string","minLength":1},{"type":"integer"},{"type":"number"},{"type":"boolean"}]}}},"additionalProperties":false},"When":{"title":"When","type":"object","properties":{"changeset":{"title":"Watched paths or path patterns","description":"List of paths or path patterns to watch for changes, proceed if changes are detected.","allOf":[{"$ref":"#/definitions/Changeset"}]},"condition":{"title":"Condition","description":"Check if condition evaluates to true before proceeding with building workflow or script.","anyOf":[{"type":"string"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]}},"additionalProperties":false},"ScriptOnFailure":{"title":"ScriptOnFailure","description":"The only supported action is to proceed directly to publishing.","enum":["publish"],"type":"string"},"PreCloneScript":{"title":"PreCloneScript","type":"object","properties":{"script":{"title":"Script to be executed","description":"By default the script will be run in the Bash shell. You can run the script in other languages by defining a shebang line in the beginning.","minLength":1,"type":"string"},"name":{"title":"Script name","description":"A descriptive script name can be provided to be shown in the UI. If not passed, the first line of your script will be shown in the UI for the script block.","errorMessage":"Incorrect type. Expected an integer, float, boolean or nonempty string","anyOf":[{"type":"string","minLength":1},{"type":"integer"},{"type":"number"},{"type":"boolean"}]},"ignore_failure":{"title":"Ignore script failure","description":"If set to true, the workflow will continue to run even if the script fails.","default":false,"anyOf":[{"type":"boolean"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]},"on_failure":{"title":"The action to take on script failure","description":"The only supported action is to proceed directly to publishing.","anyOf":[{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/ScriptOnFailure"}]},"when":{"title":"Conditions for script to continue","description":"All conditions below should be met in order for script to continue.","errorMessage":"Incorrect type. Expected a dictionary","allOf":[{"$ref":"#/definitions/When"}]},"working_directory":{"title":"Script working directory","description":"Specify directory where this script will be executed. It overrides global workflow working directory.","type":"string"}},"required":["script"],"additionalProperties":false},"BuildScript":{"title":"BuildScript","type":"object","properties":{"script":{"title":"Script to be executed","description":"By default the script will be run in the Bash shell. You can run the script in other languages by defining a shebang line in the beginning.","minLength":1,"type":"string"},"name":{"title":"Script name","description":"A descriptive script name can be provided to be shown in the UI. If not passed, the first line of your script will be shown in the UI for the script block.","errorMessage":"Incorrect type. Expected an integer, float, boolean or nonempty string","anyOf":[{"type":"string","minLength":1},{"type":"integer"},{"type":"number"},{"type":"boolean"}]},"ignore_failure":{"title":"Ignore script failure","description":"If set to true, the workflow will continue to run even if the script fails.","default":false,"anyOf":[{"type":"boolean"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]},"on_failure":{"title":"The action to take on script failure","description":"The only supported action is to proceed directly to publishing.","anyOf":[{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/ScriptOnFailure"}]},"when":{"title":"Conditions for script to continue","description":"All conditions below should be met in order for script to continue.","errorMessage":"Incorrect type. Expected a dictionary","allOf":[{"$ref":"#/definitions/When"}]},"working_directory":{"title":"Script working directory","description":"Specify directory where this script will be executed. It overrides global workflow working directory.","type":"string"},"test_report":{"title":"Exact name or glob pattern matching the test result file location","description":"You can display test results visually in the build overview. The value can be an absolute path, or a path relative to $CM_BUILD_DIR (in this case the patterns will be searched recursively). Supported test report formats are Junit XML and .JSON for Flutter's --machine report.","minLength":1,"type":"string"}},"required":["script"],"additionalProperties":false},"PublisherNotification":{"title":"PublisherNotification","type":"object","properties":{"success":{"title":"Publish on success","description":"Set to false to not receive a notification when a build succeeds.","default":true,"anyOf":[{"type":"boolean"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]},"failure":{"title":"Publish on failure","description":"Set to false to not receive a notification when a build fails.","default":true,"anyOf":[{"type":"boolean"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]}},"additionalProperties":false},"Email":{"title":"Email","type":"object","properties":{"recipients":{"title":"List the email addresses to notify about build results","description":"Provide valid email addresses here.","minItems":1,"type":"array","items":{"anyOf":[{"type":"string","format":"email"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"}]}},"notify":{"title":"Email notification settings","description":"Allows to turn on or turn off email notification on build success or failure.","errorMessage":"Incorrect type. Expected a dictionary","allOf":[{"$ref":"#/definitions/PublisherNotification"}]}},"required":["recipients"],"additionalProperties":false},"Slack":{"title":"Slack","type":"object","properties":{"channel":{"title":"Specify the Slack channel for publishing","description":"To allow publishing to private channels, invite the Codemagic Slack app to the channels by writing @codemagic in the channel.","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1}]},"notify_on_build_start":{"title":"Send a Slack notification when a build starts","description":"When you set notify_on_build_start to true, the channel will be notified when a build starts.","default":false,"anyOf":[{"type":"boolean"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]},"notify":{"title":"Slack notification settings","description":"Allows to turn on or turn off slack notification on build success or failure.","errorMessage":"Incorrect type. Expected a dictionary","allOf":[{"$ref":"#/definitions/PublisherNotification"}]}},"required":["channel"],"additionalProperties":false},"AppStoreConnectAuth":{"title":"AppStoreConnectAuth","description":"An enumeration.","enum":["integration"],"type":"string"},"AppStoreReleaseType":{"title":"AppStoreReleaseType","description":"An enumeration.","enum":["MANUAL","AFTER_APPROVAL","SCHEDULED"],"type":"string"},"AppStoreConnect":{"title":"AppStoreConnect","type":"object","properties":{"auth":{"title":"App Store Connect authentication method","description":"Accepted value: integration. When defined, the API key info inherited from integrations is used for authenticating with App Store Connect. If you omit this key-value pair, you must define API key, key identifier and issuer identifier explicitly.","anyOf":[{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/AppStoreConnectAuth"}]},"api_key":{"title":"App Store Connect API key","description":"App Store Connect API key in .p8 format that is used for authenticating application packages validation and upload to App Store Connect. It is required for TestFlight submission.","errorMessage":"Incorrect type. Expected a string in the form of an encrypted value, environment variable or plain text","anyOf":[{"type":"string"},{"type":"string","pattern":"^Encrypted\\(.+\\)$"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"}]},"key_id":{"title":"App Store Connect API key identifier","description":"App Store Connect API key identifier that is used for authenticating application packages validation and upload to App Store Connect. It is required for TestFlight submission.","errorMessage":"Incorrect type. Expected a string in the form of an encrypted value, environment variable or plain text","anyOf":[{"type":"string"},{"type":"string","pattern":"^Encrypted\\(.+\\)$"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"}]},"issuer_id":{"title":"App Store Connect API key issuer identifier","description":"App Store Connect API key issuer identifier that is used for authenticating application packages validation and upload to App Store Connect. It is required for TestFlight submission.","errorMessage":"Incorrect type. Expected a string in the form of an encrypted value, environment variable or plain text","anyOf":[{"type":"string"},{"type":"string","pattern":"^Encrypted\\(.+\\)$"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"}]},"apple_id":{"title":"Apple ID","description":"The email address used to log in to App Store Connect. It can also be passed with an environment variable.","errorMessage":"Incorrect type. Expected a string in the form of an encrypted value, environment variable or plain text email","anyOf":[{"type":"string","format":"email"},{"type":"string","pattern":"^Encrypted\\(.+\\)$"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"}]},"password":{"title":"App-specific password","description":"App-specific passwords allow you to sign in to your account securely when you use third-party apps with your Apple ID. e.g. ujlw-ypqu-dgzw-vyog. The plain or encrypted password can also be passed with en environment variable.","errorMessage":"Incorrect type. Expected a string in the form of an encrypted value, environment variable or plain text password","anyOf":[{"type":"string","minLength":1,"pattern":"^([a-z]{4}-){3}[a-z]{4}$"},{"type":"string","pattern":"^Encrypted\\(.+\\)$"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"}]},"submit_to_testflight":{"title":"Submit uploaded application package to Testflight","description":"Submit published build to Testflight. Requires authentication using App Store Connect API key.","default":false,"anyOf":[{"type":"boolean"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]},"expire_build_submitted_for_review":{"title":"Expire previous build submitted to review before submitting package to Testflight","description":"Expire previously submitted build that is in review before submitting published build to Testflight. Requires authentication using App Store Connect API key.","default":false,"anyOf":[{"type":"boolean"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]},"beta_groups":{"title":"Release uploaded application package to the groups of beta testers","description":"Published build will be made available to the specified Beta groups in App Store Connect. TestFlight submission is required in order to release builds to the groups of beta testers.","type":"array","items":{"anyOf":[{"type":"string"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]}},"submit_to_app_store":{"title":"Submit uploaded application package to App Store review","description":"Submit published build to App Store review. Requires authentication using App Store Connect API key.","default":false,"anyOf":[{"type":"boolean"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]},"cancel_previous_submissions":{"title":"Cancel previous submissions before submitting application package to App Store review","description":"Cancel previous submissions before submitting application package to App Store review. Requires authentication using App Store Connect API key.","default":false,"anyOf":[{"type":"boolean"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]},"release_type":{"title":"Specify when to release the app after App Store review","description":"Choose when to release the app. You can either manually release the app at a later date on the App Store Connect website, or the app version can be automatically released right after it has been approved by App Review.","errorMessage":"Incorrect release type. Expected one of MANUAL, AFTER_APPROVAL, SCHEDULED","anyOf":[{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/AppStoreReleaseType"}]},"earliest_release_date":{"title":"Specify earliest return date for scheduled release type","description":"Specify earliest return date for scheduled release type. Timezone aware ISO8601 timestamp, for example 2021-11-10T14:55:41+00:00.","errorMessage":"Not a valid timezone aware ISO8601 timestamp","anyOf":[{"type":"string","format":"date-time"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]},"copyright":{"title":"The name of the person or entity that owns the exclusive rights to your app","description":"The name of the person or entity that owns the exclusive rights to your app, preceded by the year the rights were obtained (for example, \"2008 Acme Inc.\"). Do not provide a URL.","errorMessage":"Incorrect type. Expected a string in the form of an environment variable or plain text","anyOf":[{"type":"string"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]},"phased_release":{"title":"Specify if App Store version update should be released in phases","description":"Whether or not to release an App Store version update in phases. With this option turned on, your version update will be released over a 7-day period to a percentage of your users (selected at random by their Apple ID) with automatic updates turned on. Learn more from https://developer.apple.com/help/app-store-connect/update-your-app/release-a-version-update-in-phases. If not specified, then the default phased release configuration for the App Store version is reused.","default":false,"anyOf":[{"type":"boolean"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]}},"additionalProperties":false},"ReleasePromotion":{"title":"ReleasePromotion","type":"object","properties":{"track":{"title":"Name of the track to which release is promoted","description":"The track to promote the release to. Used in conjunction with the 'track` argument.","anyOf":[{"type":"string"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]},"rollout_fraction":{"title":"Rollout fraction","description":"The promoted release in the target track will be staged, allowing users to choose which fraction of the testers or users get access to the application. To release to everyone, omit the rollout_fraction field.","anyOf":[{"type":"number","exclusiveMinimum":0.0,"exclusiveMaximum":1.0},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]},"promote_as_draft":{"title":"Promote the release with draft status","description":"Indicates that the promoted release will be in the draft status in the target track.","default":false,"anyOf":[{"type":"boolean"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]}},"required":["track"],"additionalProperties":false},"GooglePlay":{"title":"GooglePlay","type":"object","properties":{"credentials":{"title":"Service account credentials","description":"The encrypted JSON key file or the encrypted contents of the JSON key file. The value can also be passed with an environment variable.","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1}]},"release_name":{"title":"The release name","description":"Not required to be unique. If not set, the name is generated from the APK's versionName.","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1}]},"track":{"title":"Name of the track","description":"Codemagic enables you to automatically publish your app to Google Play.","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1}]},"in_app_update_priority":{"title":"Priority of the release","description":"If your application supports in-app updates, set the release priority by specifying an integer in range [0, 5]. Otherwise, in_app_update_priority can be omitted.","anyOf":[{"type":"integer","minimum":0,"maximum":5},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]},"rollout_fraction":{"title":"Rollout fraction","description":"Codemagic supports staged releases, allowing users to choose which fraction of the testers or users get access to the application. To release to everyone, omit the rollout_fraction field.","anyOf":[{"type":"number","exclusiveMinimum":0.0,"exclusiveMaximum":1.0},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]},"changes_not_sent_for_review":{"title":"Do not send changes for review","description":"Indicates that the changes in this edit will not be reviewed until they are explicitly sent for review from the Google Play Console UI.","default":false,"anyOf":[{"type":"boolean"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]},"submit_as_draft":{"title":"Create the release in draft status","description":"Indicates that the artifacts generated in the build will be uploaded to Google Play as a draft release.","default":false,"anyOf":[{"type":"boolean"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]},"release_promotion":{"title":"Release promotion","description":"Additionally, promote the uploaded release to another track","errorMessage":"Incorrect type. Expected a dictionary","allOf":[{"$ref":"#/definitions/ReleasePromotion"}]}},"required":["credentials","track"],"additionalProperties":false},"FirebaseAndroidArtifactType":{"title":"FirebaseAndroidArtifactType","description":"An enumeration.","enum":["aab","apk"],"type":"string"},"FirebaseType":{"title":"FirebaseType","type":"object","properties":{"app_id":{"title":"Firebase application id","description":"Firebase application id found in Firebase application settings.","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1}]},"groups":{"title":"Groups to be distributed to","description":"Test groups that the application should be distributed to.","errorMessage":"Incorrect type. Expected a list of nonempty strings","type":"array","items":{"anyOf":[{"type":"string"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]}},"artifact_type":{"title":"Preferable Android artifact type","description":"Artifact type (aab/apk) to prioritize when uploading to Firebase App Distribution, by default app bundles are prioritized.","errorMessage":"Incorrect artifact type. Expected 'apk' or 'aab'","anyOf":[{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/FirebaseAndroidArtifactType"}]}},"required":["app_id"],"additionalProperties":false},"Firebase":{"title":"Firebase","type":"object","properties":{"firebase_token":{"title":"Firebase access token","description":"Firebase access token generated using Firebase CLI; to receive the token use firebase login:ci with Firebase CLI installed.","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1}]},"firebase_service_account":{"title":"Service account with Firebase distribution permission","description":"The content of service account file that has \"Firebase App Distribution Admin\" role.","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1}]},"ios":{"title":"iOS","description":"Codemagic enables you to automatically publish your iOS app to Firebase App Distribution.","allOf":[{"$ref":"#/definitions/FirebaseType"}]},"android":{"title":"android","description":"Codemagic enables you to automatically publish your Android app to Firebase App Distribution.","allOf":[{"$ref":"#/definitions/FirebaseType"}]}},"additionalProperties":false},"PartnerCenter":{"title":"PartnerCenter","type":"object","properties":{"store_id":{"title":"Partner Center store ID","description":"Store ID set up on Microsoft Partner Center.","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1}]},"tenant_id":{"title":"Partner Center tenant id","description":"Directory (tenant) ID in Azure AD portal.","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1}]},"client_id":{"title":"Partner Center client id","description":"Application (client) ID in Azure AD portal.","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1}]},"client_secret":{"title":"Partner Center client secret","description":"The value of the Azure AD app key.","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"type":"string","minLength":1}]}},"additionalProperties":false},"Publishing":{"title":"Publishing","type":"object","properties":{"email":{"title":"Email","description":"If the build finishes successfully, release notes (if passed) and the generated artifacts will be published to the provided email address(es). If the build fails, an email with a link to build logs will be sent.","errorMessage":"Incorrect type. Expected a dictionary","allOf":[{"$ref":"#/definitions/Email"}]},"slack":{"title":"Slack","description":"Integrate Slack publishing into your Codemagic build pipeline to get notified when a build starts and receive build artifacts or logs when the build finishes. To set up publishing to Slack, you first need to connect your Slack workspace in User integrations for personal apps and in Team integrations for team apps.","errorMessage":"Incorrect type. Expected a dictionary","allOf":[{"$ref":"#/definitions/Slack"}]},"app_store_connect":{"title":"App Store Connect","description":"Codemagic enables you to automatically publish your iOS app to App Store Connect for beta testing with TestFlight or distributing the app to users via App Store.","errorMessage":"Incorrect type. Expected a dictionary","allOf":[{"$ref":"#/definitions/AppStoreConnect"}]},"google_play":{"title":"Google Play","description":"Codemagic enables you to automatically publish your app to the internal, alpha, beta and production tracks on Google Play. In order to do so, you will need to set up a service account in Google Play Console and add the JSON key file to your Codemagic configuration file.","errorMessage":"Incorrect type. Expected a dictionary","allOf":[{"$ref":"#/definitions/GooglePlay"}]},"firebase":{"title":"Firebase","description":"Codemagic enables you to automatically publish your app to Firebase App Distribution. In order to do so, set up an account and project on Firebase and provide Codemagic with your Firebase token, Firebase app id and test groups.","errorMessage":"Incorrect type. Expected a dictionary","allOf":[{"$ref":"#/definitions/Firebase"}]},"partner_center":{"title":"Partner Center","description":"Codemagic enables you to automatically publish your app to Microsoft Store. In order to do so, set up an account and project on Microsoft Partner Center and provide Codemagic with your store id, client id, client secret and tenant id.","errorMessage":"Incorrect type. Expected a dictionary","allOf":[{"$ref":"#/definitions/PartnerCenter"}]},"scripts":{"title":"Custom post-publishing scripts","description":"Add scripts to publish to any other service.","errorMessage":"Incorrect type. Expected a non-empty list of strings (inline script) or dictionaries (scripts with additional fields)","minItems":1,"type":"array","items":{"anyOf":[{"type":"string","minLength":1},{"$ref":"#/definitions/BuildScript"}]}},"tester_groups":{"title":"Tester groups","description":"List the tester groups that will receive new versions of the application.","errorMessage":"At least one group name is required","minItems":1,"type":"array","items":{"type":"string","minLength":1}}},"additionalProperties":false},"Workflow":{"title":"Workflow","type":"object","properties":{"name":{"title":"Workflow name","description":"Workflow name displayed in the Codemagic UI.","type":"string"},"instance_type":{"title":"Instance type","description":"Build machine type to use for the build.","anyOf":[{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"},{"$ref":"#/definitions/SecureEnvironmentVariable"},{"$ref":"#/definitions/InstanceType"}]},"max_build_duration":{"title":"Build timeout settings","description":"By default, Codemagic builds are set to time out after 60 minutes. You can decrease or increase the maximum build duration. ","anyOf":[{"type":"integer","minimum":1},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]},"triggering":{"title":"Automatic build triggering for watched branches","description":"Triggering defines the events for automatic build triggering and watched branches. If no events are defined, you can start builds only manually.","errorMessage":"Incorrect type. Expected a dictionary","allOf":[{"$ref":"#/definitions/Triggering"}]},"inputs":{"title":"Build inputs","description":"Define input properties that are passed to the workflow when starting a build. Build inputs can be specified when starting a build either manually from Codemagic user interface or by sending HTTP request to Codemagic API.","errorMessage":"Incorrect type. Expected a dictionary","type":"object","patternProperties":{"^[a-zA-Z]\\w*$":{"$ref":"#/definitions/Input"}},"additionalProperties":{"$ref":"#/definitions/Input"}},"environment":{"title":"Build environment","description":"Environment contains all the environment variables and enables to specify the version of Flutter, Xcode, CocoaPods, Node, npm, ndk, Java and Ruby used for building. This is also where you can add credentials and API keys required for code signing. Make sure to encrypt the values of variables that hold sensitive data.","errorMessage":"Incorrect type. Expected a dictionary","allOf":[{"$ref":"#/definitions/Environment"}]},"integrations":{"title":"Integrations","description":"Allows using info from the integrations connected in Codemagic UI. Currently supported: app_store_connect.","errorMessage":"Incorrect type. Expected a dictionary","allOf":[{"$ref":"#/definitions/Integrations"}]},"cache":{"title":"Cache","description":"Define the paths to be cached and stored on Codemagic.","errorMessage":"Incorrect type. Expected a dictionary","allOf":[{"$ref":"#/definitions/Cache"}]},"when":{"title":"Conditions for build to continue","description":"All conditions below should be met in order for build to continue.","errorMessage":"Incorrect type. Expected a dictionary","allOf":[{"$ref":"#/definitions/When"}]},"working_directory":{"title":"Working directory","description":"Specify the default directory to run script commands. Each script will be executed inside the specified directory, unless the working directory is specified for the script itself.","anyOf":[{"type":"string"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]},"pre_clone_scripts":{"title":"Custom pre-clone scripts","description":"Scripts that are executed before the repository is cloned. Using pre-clone scripts you can set up a VPN connection or perform other preliminary tasks that do not require access to application source code.","errorMessage":"Incorrect type. Expected a not empty list of strings (inline script) or dictionaries (scripts with additional fields)","minItems":1,"type":"array","items":{"anyOf":[{"type":"string","minLength":1},{"$ref":"#/definitions/PreCloneScript"}]}},"scripts":{"title":"Build scripts","description":"Scripts specify what kind of application is built. This is where you can specify the commands to test, build and code sign your project. You can also run shell (sh) scripts directly in your .yaml file, or run scripts in other languages by defining the language with a shebang line or by launching a script file present in your repository.","errorMessage":"Incorrect type. Expected a not empty list of strings (inline script) or dictionaries (scripts with additional fields)","minItems":1,"type":"array","items":{"anyOf":[{"type":"string","minLength":1},{"$ref":"#/definitions/BuildScript"}]}},"artifacts":{"title":"Artifacts to be saved","description":"Configure the paths and names of the artifacts you would like to use in the following steps, e.g. for publishing, or have available for download on the build page. All paths are relative to the clone directory, but absolute paths are supported as well. You can also use environment variables in artifact patterns.\nThe pattern can match several files or folders. If it picks up files or folders with the same name, the top level file or folder name will be suffixed with _{number}.\nIf one of the patterns includes another pattern, duplicate artifacts are not created.\napk, aab, aar, ipa, app, proguard mapping (mapping.txt), flutter_drive.log, jar, zip, xarchive and dSYM.zip files will be available as separate items in the Artifacts section on the build page. The rest of the artifacts will be included in an archive with the following name pattern: {project-name}_{version}_artifacts.zip.","errorMessage":"Incorrect type. Expected a not empty list of strings, integers, floats or booleans","minItems":1,"type":"array","items":{"anyOf":[{"type":"string","minLength":1},{"type":"integer"},{"type":"number"},{"type":"boolean"}]}},"publishing":{"title":"Publishing and deployment","description":"The matching artifacts will be published to the services you have configured. The available integrations currently are email, Slack, Google Play and App Store Connect. It is also possible to publish elsewhere with custom publishing scripts.","errorMessage":"Incorrect type. Expected a dictionary","allOf":[{"$ref":"#/definitions/Publishing"}]},"labels":{"title":"Build labels","description":"Define label names to easily filter builds in UI. You can use environment variable as well.","default":[],"errorMessage":"Incorrect type. Expected a list of nonempty strings","type":"array","items":{"anyOf":[{"type":"string"},{"type":"string","minLength":1,"pattern":"^\\$\\{?([^:{}]+).*\\}?$"},{"type":"string","pattern":"^\\$\\{\\{\\s*inputs\\.[a-zA-Z]\\w*\\s*\\}\\}"}]}}},"additionalProperties":false}}}
</schema>

[User] Provide a JSON object that satisfies the schema "Codemagic CI/CD configuration file - docs.codemagic.io". Here are the required top‑level fields: workflows. Return only the valid JSON object.

Codemagic CI/CD configuration file - docs.codemagic.io

Workflows for building a project

You can use codemagic.yaml to define several workflows for building a project. Each workflow describes the entire build pipeline from triggers to publishing. For example, you may want to have separate workflows for developing, testing and publishing the app.

SecureEnvironmentVariable

Name

Filepath

Type

Group

Source

InstanceType

Build machine type to use for the build.

TriggeringEvent

Currently supported events are push, pull_request, tag, pull_request_labeled.

BranchPattern

Exact value or glob pattern to search for a branch

The pattern can also be passed with an environment variable.

Incorrect type. Expected an integer, float, boolean or nonempty string

Include the pattern

If set to false, the matching branches will not be watched for triggering events.

Specify whether the watched branch is the source or the target of the pull request

The variable is ignored for events other than pull_request.

TagPattern

Exact value or glob pattern to search for a tag

Include the pattern

If set to false, the matching tags will not be watched for triggering events.

Triggering

List the events that trigger builds

Currently supported events are push, pull_request, tag, pull_request_labeled, pull_request_labelled.

Branch patterns

A branch pattern can match the name of a particular branch, or you can use wildcard symbols to create a pattern that matches several branches. Note that for pull request builds you have to specify whether the watched branch is the source or the target of the pull request.

Incorrect type. Expected a not empty list of dictionaries

Tag patterns

A tag pattern can match the name of a particular tag, or you can use wildcard symbols to create a pattern that matches several tags.

Cancel previous builds

To avoid running builds on outdated commits, set cancel_previous_builds to true to automatically cancel all ongoing and queued builds triggered by webhooks on push or pull request commit when a more recent build has been triggered for the same branch.

InputType

An enumeration.

Input

Input description

A description for this input parameter. Description is displayed in Codemagic when manually starting a build for this workflow and user is prompted to provide values for the inputs.

Input type

Defines the data type of the input parameter. This must be one of: `boolean`, `choice`, `number` or `string`. By default, `string` is assumed. Input values for the `choice` type are resolved to strings and must be defined in the `options` field. Values for inputs with types `boolean` and `number` are persisted as booleans and integers or floating point numbers respectively, instead of converting them to strings as long as they are not used directly in string interpolations.

Choice options

Provide a list of values as options for the `choice` input. Required if type is `choice` and prohibited otherwise.

Default value for non-required input

Provide a default value for the input parameter. Must be specified if the input is not required and prohibited otherwise.

DistributionType

An enumeration.

ProfileWithVariable

Profile reference

Profile reference found in Team settings -> Code signing identities

Environment variable

Name of the variable containing the profile path

CertificateWithVariable

Certificate reference

Certificate reference found in Team settings -> Code signing identities

Environment variable

Name of the variable containing the certificate path

IosSigning

Distribution type

Type of certificates and profiles to fetch from Code signing identities

Incorrect distribution type. Expected one of ad_hoc, app_store, development, enterprise

Bundle identifier

Bundle identifier of certificates and profiles to fetch from Code signing identities

Provisioning profiles

Provisioning profiles to fetch from Code signing identities

Incorrect type. Expected list of strings or dictionaries

Certificates

Certificates to fetch from Code signing identities

KeystoreWithVariables

Keystore reference

Keystore reference found in Team settings -> Code signing identities

Keystore environment variable

Name of the variable containing the keystore path

Keystore password environment variable

Name of the variable containing the keystore password

Key alias environment variable

Name of the variable containing the key alias

Key password environment variable

Name of the variable containing the key password

FlutterWithFlavor

Flutter version

Define the channel name, version (e.g. v1.13.4) or 'fvm' if using Flutter Version Management.

Flutter flavor

The name of the flavor to use when using FVM.

Environment

Environment variables

Define your environment variables.

Incorrect type. Expected a dictionary with integer, float, boolean or nonempty string as values

Environment variable groups

Define environment variable group names that have been configured in app or team settings.

Incorrect type. Expected a list of nonempty strings

iOS code signing identities

iOS code signing identities configured under Team settings

Android code signing identities

Android code signing identities configured under Team settings

Xcode version

Define latest, edge or version (e.g. 11.2).

Incorrect type. Expected an integer, float or nonempty string

Ubuntu

Define the Ubuntu version to use for the build.

CocoaPods version

Define default or version (e.g. 1.9.1).

Node version

Define default, latest, current, lts, carbon (or another stream), nightly or version (e.g. 12.4.0).

Npm version

Define default, latest, next, lts or version (e.g. 6.13.7).

Ndk revision

Define default or revision (e.g. r19c).

Java platform version

Define default, or platform version (e.g. 11).

Ruby platform version

Define default, or platform version (e.g. 2.5.1).

Flutter version

Incorrect type. Expected an integer, float, nonempty string or dictionary

Unity version

Define exact version (e.g. 2020.3.15f2).

Incorrect type. Expected a nonempty string

Integrations

Use info from Apple Developer Portal integration

Specify the name of the App Store Connect API key to be used from team or personal integrations to authenticate actions for code signing and publishing.

Cache

Paths to be cached

For example, you may consider caching the following paths: "$FLUTTER_ROOT/.pub-cache" for Dart cache, "$HOME/.gradle/caches" for gradle cache, "$HOME/Library/Caches/CocoaPods" for CocoaPods cache.

Changeset

Include paths to watch

Exclude paths from watched

When

Watched paths or path patterns

List of paths or path patterns to watch for changes, proceed if changes are detected.

Condition

Check if condition evaluates to true before proceeding with building workflow or script.

ScriptOnFailure

The only supported action is to proceed directly to publishing.

PreCloneScript

Script to be executed

By default the script will be run in the Bash shell. You can run the script in other languages by defining a shebang line in the beginning.

Script name

A descriptive script name can be provided to be shown in the UI. If not passed, the first line of your script will be shown in the UI for the script block.

Ignore script failure

If set to true, the workflow will continue to run even if the script fails.

The action to take on script failure

Conditions for script to continue

All conditions below should be met in order for script to continue.

Script working directory

Specify directory where this script will be executed. It overrides global workflow working directory.

BuildScript

Script to be executed

Script name

Ignore script failure

The action to take on script failure

Conditions for script to continue

Script working directory

Exact name or glob pattern matching the test result file location

You can display test results visually in the build overview. The value can be an absolute path, or a path relative to $CM_BUILD_DIR (in this case the patterns will be searched recursively). Supported test report formats are Junit XML and .JSON for Flutter's --machine report.

PublisherNotification

Publish on success

Set to false to not receive a notification when a build succeeds.

Publish on failure

Set to false to not receive a notification when a build fails.

Email

List the email addresses to notify about build results

Provide valid email addresses here.

Email notification settings

Allows to turn on or turn off email notification on build success or failure.

Slack

Specify the Slack channel for publishing

To allow publishing to private channels, invite the Codemagic Slack app to the channels by writing @codemagic in the channel.

Send a Slack notification when a build starts

When you set notify_on_build_start to true, the channel will be notified when a build starts.

Slack notification settings

Allows to turn on or turn off slack notification on build success or failure.

AppStoreConnectAuth

An enumeration.

AppStoreReleaseType

An enumeration.

AppStoreConnect

App Store Connect authentication method

Accepted value: integration. When defined, the API key info inherited from integrations is used for authenticating with App Store Connect. If you omit this key-value pair, you must define API key, key identifier and issuer identifier explicitly.

App Store Connect API key

App Store Connect API key in .p8 format that is used for authenticating application packages validation and upload to App Store Connect. It is required for TestFlight submission.

App Store Connect API key identifier

App Store Connect API key identifier that is used for authenticating application packages validation and upload to App Store Connect. It is required for TestFlight submission.

App Store Connect API key issuer identifier

App Store Connect API key issuer identifier that is used for authenticating application packages validation and upload to App Store Connect. It is required for TestFlight submission.

Apple ID

The email address used to log in to App Store Connect. It can also be passed with an environment variable.

Incorrect type. Expected a string in the form of an encrypted value, environment variable or plain text email

App-specific password

App-specific passwords allow you to sign in to your account securely when you use third-party apps with your Apple ID. e.g. ujlw-ypqu-dgzw-vyog. The plain or encrypted password can also be passed with en environment variable.

Incorrect type. Expected a string in the form of an encrypted value, environment variable or plain text password

Submit uploaded application package to Testflight

Submit published build to Testflight. Requires authentication using App Store Connect API key.

Expire previous build submitted to review before submitting package to Testflight

Expire previously submitted build that is in review before submitting published build to Testflight. Requires authentication using App Store Connect API key.

Release uploaded application package to the groups of beta testers

Published build will be made available to the specified Beta groups in App Store Connect. TestFlight submission is required in order to release builds to the groups of beta testers.

Submit uploaded application package to App Store review

Submit published build to App Store review. Requires authentication using App Store Connect API key.

Cancel previous submissions before submitting application package to App Store review

Cancel previous submissions before submitting application package to App Store review. Requires authentication using App Store Connect API key.

Specify when to release the app after App Store review

Choose when to release the app. You can either manually release the app at a later date on the App Store Connect website, or the app version can be automatically released right after it has been approved by App Review.

Incorrect release type. Expected one of MANUAL, AFTER_APPROVAL, SCHEDULED

Specify earliest return date for scheduled release type

Specify earliest return date for scheduled release type. Timezone aware ISO8601 timestamp, for example 2021-11-10T14:55:41+00:00.

Not a valid timezone aware ISO8601 timestamp

The name of the person or entity that owns the exclusive rights to your app

The name of the person or entity that owns the exclusive rights to your app, preceded by the year the rights were obtained (for example, "2008 Acme Inc."). Do not provide a URL.

Incorrect type. Expected a string in the form of an environment variable or plain text

Specify if App Store version update should be released in phases

Whether or not to release an App Store version update in phases. With this option turned on, your version update will be released over a 7-day period to a percentage of your users (selected at random by their Apple ID) with automatic updates turned on. Learn more from https://developer.apple.com/help/app-store-connect/update-your-app/release-a-version-update-in-phases. If not specified, then the default phased release configuration for the App Store version is reused.

ReleasePromotion

Name of the track to which release is promoted

The track to promote the release to. Used in conjunction with the 'track` argument.

Rollout fraction

The promoted release in the target track will be staged, allowing users to choose which fraction of the testers or users get access to the application. To release to everyone, omit the rollout_fraction field.

Promote the release with draft status

Indicates that the promoted release will be in the draft status in the target track.

GooglePlay

Service account credentials

The encrypted JSON key file or the encrypted contents of the JSON key file. The value can also be passed with an environment variable.

The release name

Not required to be unique. If not set, the name is generated from the APK's versionName.

Name of the track

Codemagic enables you to automatically publish your app to Google Play.

Priority of the release

If your application supports in-app updates, set the release priority by specifying an integer in range [0, 5]. Otherwise, in_app_update_priority can be omitted.

Rollout fraction

Codemagic supports staged releases, allowing users to choose which fraction of the testers or users get access to the application. To release to everyone, omit the rollout_fraction field.

Do not send changes for review

Indicates that the changes in this edit will not be reviewed until they are explicitly sent for review from the Google Play Console UI.

Create the release in draft status

Indicates that the artifacts generated in the build will be uploaded to Google Play as a draft release.

Release promotion

Additionally, promote the uploaded release to another track

FirebaseAndroidArtifactType

An enumeration.

FirebaseType

Firebase application id

Firebase application id found in Firebase application settings.

Groups to be distributed to

Test groups that the application should be distributed to.

Preferable Android artifact type

Artifact type (aab/apk) to prioritize when uploading to Firebase App Distribution, by default app bundles are prioritized.

Incorrect artifact type. Expected 'apk' or 'aab'

Firebase

Firebase access token

Firebase access token generated using Firebase CLI; to receive the token use firebase login:ci with Firebase CLI installed.

Service account with Firebase distribution permission

The content of service account file that has "Firebase App Distribution Admin" role.

iOS

Codemagic enables you to automatically publish your iOS app to Firebase App Distribution.

android

Codemagic enables you to automatically publish your Android app to Firebase App Distribution.

PartnerCenter

Partner Center store ID

Store ID set up on Microsoft Partner Center.

Partner Center tenant id

Directory (tenant) ID in Azure AD portal.

Partner Center client id

Application (client) ID in Azure AD portal.

Partner Center client secret

The value of the Azure AD app key.

Publishing

Email

If the build finishes successfully, release notes (if passed) and the generated artifacts will be published to the provided email address(es). If the build fails, an email with a link to build logs will be sent.

Slack

Integrate Slack publishing into your Codemagic build pipeline to get notified when a build starts and receive build artifacts or logs when the build finishes. To set up publishing to Slack, you first need to connect your Slack workspace in User integrations for personal apps and in Team integrations for team apps.

App Store Connect

Codemagic enables you to automatically publish your iOS app to App Store Connect for beta testing with TestFlight or distributing the app to users via App Store.

Google Play

Codemagic enables you to automatically publish your app to the internal, alpha, beta and production tracks on Google Play. In order to do so, you will need to set up a service account in Google Play Console and add the JSON key file to your Codemagic configuration file.

Firebase

Codemagic enables you to automatically publish your app to Firebase App Distribution. In order to do so, set up an account and project on Firebase and provide Codemagic with your Firebase token, Firebase app id and test groups.

Partner Center

Codemagic enables you to automatically publish your app to Microsoft Store. In order to do so, set up an account and project on Microsoft Partner Center and provide Codemagic with your store id, client id, client secret and tenant id.

Custom post-publishing scripts

Add scripts to publish to any other service.

Incorrect type. Expected a non-empty list of strings (inline script) or dictionaries (scripts with additional fields)

Tester groups

List the tester groups that will receive new versions of the application.

Workflow

Workflow name

Workflow name displayed in the Codemagic UI.

Instance type

Build machine type to use for the build.

Build timeout settings

By default, Codemagic builds are set to time out after 60 minutes. You can decrease or increase the maximum build duration.

Automatic build triggering for watched branches

Triggering defines the events for automatic build triggering and watched branches. If no events are defined, you can start builds only manually.

Build inputs

Define input properties that are passed to the workflow when starting a build. Build inputs can be specified when starting a build either manually from Codemagic user interface or by sending HTTP request to Codemagic API.

Build environment

Environment contains all the environment variables and enables to specify the version of Flutter, Xcode, CocoaPods, Node, npm, ndk, Java and Ruby used for building. This is also where you can add credentials and API keys required for code signing. Make sure to encrypt the values of variables that hold sensitive data.

Integrations

Allows using info from the integrations connected in Codemagic UI. Currently supported: app_store_connect.

Cache

Define the paths to be cached and stored on Codemagic.

Conditions for build to continue

All conditions below should be met in order for build to continue.

Working directory

Specify the default directory to run script commands. Each script will be executed inside the specified directory, unless the working directory is specified for the script itself.

Custom pre-clone scripts

Scripts that are executed before the repository is cloned. Using pre-clone scripts you can set up a VPN connection or perform other preliminary tasks that do not require access to application source code.

Incorrect type. Expected a not empty list of strings (inline script) or dictionaries (scripts with additional fields)

Build scripts

Scripts specify what kind of application is built. This is where you can specify the commands to test, build and code sign your project. You can also run shell (sh) scripts directly in your .yaml file, or run scripts in other languages by defining the language with a shebang line or by launching a script file present in your repository.

Artifacts to be saved

Configure the paths and names of the artifacts you would like to use in the following steps, e.g. for publishing, or have available for download on the build page. All paths are relative to the clone directory, but absolute paths are supported as well. You can also use environment variables in artifact patterns.
The pattern can match several files or folders. If it picks up files or folders with the same name, the top level file or folder name will be suffixed with _{number}.
If one of the patterns includes another pattern, duplicate artifacts are not created.
apk, aab, aar, ipa, app, proguard mapping (mapping.txt), flutter_drive.log, jar, zip, xarchive and dSYM.zip files will be available as separate items in the Artifacts section on the build page. The rest of the artifacts will be included in an archive with the following name pattern: {project-name}_{version}_artifacts.zip.

Incorrect type. Expected a not empty list of strings, integers, floats or booleans

Publishing and deployment

The matching artifacts will be published to the services you have configured. The available integrations currently are email, Slack, Google Play and App Store Connect. It is also possible to publish elsewhere with custom publishing scripts.

Build labels

Define label names to easily filter builds in UI. You can use environment variable as well.

Provide a JSON object that satisfies the schema "Codemagic CI/CD configuration file - docs.codemagic.io". Here are the required top‑level fields: workflows. Return only the valid JSON object.

Codemagic CI/CD configuration file - docs.codemagic.io


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://json.schemastore.org/codeship-services.json","additionalProperties":{"$ref":"#/definitions/ExternalService"},"definitions":{"ExternalService":{"title":"CodeShip Pro Service","description":"The definition of a service in a CodeShip Pro build, which can have steps run on it or have other services depend on it","properties":{"add_docker":{"description":"If true, the docker socket will be exposed in this service.","default":false,"type":"boolean"},"build":{"description":"How to build the image for this service. Mutually exclusive with 'image'. Can either be just a path containing a Dockerfile, or a build definition.","oneOf":[{"$ref":"#/definitions/externalBuild"},{"type":"string"}]},"cached":{"description":"Whether the image for this service should be rebuilt from scratch for each run, or if the latest build of the service's image from the configured cache branch (defaulting to 'master') should be used.","default":false,"type":"boolean"},"cap_add":{"items":{"type":"string"},"type":"array"},"cap_drop":{"items":{"type":"string"},"type":"array"},"command":{"description":"The command to run when launching the service, overriding the 'CMD' in the image. Optional.","type":"string"},"cpuset":{"type":"string"},"cpu_shares":{"type":"integer"},"default_cache_branch":{"description":"The branch to use for caching. Defaults to 'master'","type":"string"},"dns":{"items":{"type":"string"},"type":"array"},"dns_search":{"items":{"type":"string"},"type":"array"},"dockercfg_service":{"description":"The name of another defined service that provides the Docker configuration for building and running this service. Optional.","type":"string"},"dockerfile":{"description":"A specific Dockerfile to use, rather than the one in the build context","type":"string"},"domainname":{"type":"string"},"encrypted_dockercfg_path":{"description":"The location of a Docker configuration file encrypted by Jet to be used with building and running this service. Optional.","type":"string"},"encrypted_env_file":{"description":"The location of one or more files, encrypted with Jet, containing environment variables to be made available to this service and steps running on it. Optional.","oneOf":[{"items":{"type":"string"},"type":"array"},{"type":"string"}]},"encrypted_environment":{"description":"A list of encrypted key/value pairs to be used in the environment for this service and steps running on it. Optional.","items":{"type":"string"},"type":"array"},"entrypoint":{"oneOf":[{"items":{"type":"string"},"type":"array"},{"type":"string"}]},"env_file":{"description":"The location of one or more files containing environment variables to be made available to this service and steps running on it. Optional.","oneOf":[{"items":{"type":"string"},"type":"array"},{"type":"string"}]},"environment":{"description":"Either a map of key/value pairs or a list of 'KEY=VALUE' pairs to be used in the environment for this service and steps running on it. Optional.","oneOf":[{"items":{"type":"string"},"type":"array"},{"type":"object","additionalProperties":true}]},"expose":{"items":{"type":"string"},"type":"array"},"extra_hosts":{"items":{"type":"string"},"type":"array"},"hostname":{"type":"string"},"image":{"description":"A pre-existing image to use for this service. Mutually exclusive with 'build'","type":"string"},"links":{"items":{"type":"string"},"type":"array"},"depends_on":{"description":"A list of other services that this service depends on. Use this instead of 'links'","items":{"type":"string"},"type":"array"},"mem_limit":{"type":"string"},"privileged":{"type":"boolean"},"ports":{"description":"A list of ports that should be exposed to other services. The ports should be defined like '9999', as strings","items":{"type":"string"},"type":"array"},"read_only":{"type":"boolean"},"restart":{"type":"string"},"security_opt":{"items":{"type":"string"},"type":"array"},"user":{"type":"string"},"volumes":{"description":"A list of origin/destination pairs of directories or files relative to the build context and where they should be mounted in the service. Optional.","items":{"type":"string"},"type":"array"},"volumes_from":{"description":"A list of other services which should have their defined volumes mounted into this service as well. Optional.","items":{"type":"string"},"type":"array"},"working_dir":{"type":"string"}},"additionalProperties":false,"type":"object","oneOf":[{"required":["build"]},{"required":["image"]}]},"externalBuild":{"title":"Image Build","description":"Configuration of how to build the image for this service","properties":{"path":{"description":"DEPRECATED: Use 'context' instead.","type":"string"},"dockerfile_path":{"description":"DEPRECATED: Use 'dockerfile' instead","type":"string"},"image":{"description":"The output image name for this image. Optional.","type":"string"},"context":{"description":"The directory used as the Docker build context. Defaults to the same directory as the codeship-services.yml file","type":"string"},"dockerfile":{"description":"A specific Dockerfile to use rather than the 'Dockerfile' present in the build context. Optional.","type":"string"},"configure":{"$ref":"#/definitions/externalBuildConfigure"},"args":{"description":"Build args to pass to Docker. Optional.","oneOf":[{"items":{"type":"string"},"type":"array"},{"type":"object","additionalProperties":true}]},"encrypted_args_file":{"description":"One or more files, encrypted with Jet, to have their contents decrypted and passed to Docker as build args. Optional.","oneOf":[{"items":{"type":"string"},"type":"array"},{"type":"string"}]},"encrypted_args":{"description":"A list of encrypted key/value pairs to be used as build args to Docker. Optional.","oneOf":[{"items":{"type":"string"},"type":"array"},{"type":"string"}]}},"additionalProperties":false,"type":"object"},"externalBuildConfigure":{"properties":{"service":{"type":"string"},"command":{"type":"string"}},"additionalProperties":false,"type":"object"}},"description":"codeship-services.yml is where you configure each service you need to run your CI/CD builds with CodeShip.","title":"CodeShip Pro services configuration","type":"object"}
</schema>

[User] Provide a JSON object that satisfies the schema "CodeShip Pro services configuration". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

CodeShip Pro Service

The definition of a service in a CodeShip Pro build, which can have steps run on it or have other services depend on it

If true, the docker socket will be exposed in this service.

How to build the image for this service. Mutually exclusive with 'image'. Can either be just a path containing a Dockerfile, or a build definition.

Whether the image for this service should be rebuilt from scratch for each run, or if the latest build of the service's image from the configured cache branch (defaulting to 'master') should be used.

The command to run when launching the service, overriding the 'CMD' in the image. Optional.

The branch to use for caching. Defaults to 'master'

The name of another defined service that provides the Docker configuration for building and running this service. Optional.

A specific Dockerfile to use, rather than the one in the build context

The location of a Docker configuration file encrypted by Jet to be used with building and running this service. Optional.

The location of one or more files, encrypted with Jet, containing environment variables to be made available to this service and steps running on it. Optional.

A list of encrypted key/value pairs to be used in the environment for this service and steps running on it. Optional.

The location of one or more files containing environment variables to be made available to this service and steps running on it. Optional.

Either a map of key/value pairs or a list of 'KEY=VALUE' pairs to be used in the environment for this service and steps running on it. Optional.

A pre-existing image to use for this service. Mutually exclusive with 'build'

A list of other services that this service depends on. Use this instead of 'links'

A list of ports that should be exposed to other services. The ports should be defined like '9999', as strings

A list of origin/destination pairs of directories or files relative to the build context and where they should be mounted in the service. Optional.

A list of other services which should have their defined volumes mounted into this service as well. Optional.

Image Build

Configuration of how to build the image for this service

DEPRECATED: Use 'context' instead.

DEPRECATED: Use 'dockerfile' instead

The output image name for this image. Optional.

The directory used as the Docker build context. Defaults to the same directory as the codeship-services.yml file

A specific Dockerfile to use rather than the 'Dockerfile' present in the build context. Optional.

Build args to pass to Docker. Optional.

One or more files, encrypted with Jet, to have their contents decrypted and passed to Docker as build args. Optional.

A list of encrypted key/value pairs to be used as build args to Docker. Optional.

codeship-services.yml is where you configure each service you need to run your CI/CD builds with CodeShip.

CodeShip Pro services configuration

Provide a JSON object that satisfies the schema "CodeShip Pro services configuration". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://json.schemastore.org/codeship-steps.json","definitions":{"ExternalStep":{"title":"CodeShip Pro Step","description":"The definition of a step","properties":{"name":{"description":"The name of the step. Can be omitted.","type":"string"},"type":{"description":"The type of the step. If omitted, defaults to 'run'","type":"string","enum":[null,"run","serial","push","parallel","load","manual"]},"tag":{"description":"A pattern matching tags or branches this step and any of its children should be run against. Defaults to always running.","type":"string"},"exclude":{"description":"A pattern matching tags or branches on which this step should NOT be run. Defaults to empty.","type":"string"},"service":{"description":"The service name defined in codeship-services.yml this step will run on","type":"string"},"services":{"description":"A list of service names defined in codeship-services.yml that will be used for this step.","items":{"type":"string"},"type":"array"},"command":{"description":"The command to be run in this step. Required with and can only be used with the 'run' type or no specified type","type":"string"},"steps":{"description":"A list of steps to run within this step or on_fail group. Cannot be used with 'run', 'push', or 'load' steps","items":{"$ref":"#/definitions/ExternalStep"},"type":"array"},"image_name":{"description":"The image name this push step should push to. Required with and only used by the push step","type":"string"},"image_tag":{"description":"The image tag this push step should push to. See https://docs.cloudbees.com/docs/cloudbees-codeship/latest/pro-builds-and-configuration/steps#_push_steps for details. Only used by the push step","default":"latest","type":"string"},"registry":{"description":"The image registry this push step should push to. For Docker Hub, use https://registry-1.docker.io. Required with and only used by the push step","type":"string"},"encrypted_dockercfg_path":{"description":"The location of a Docker configuration file encrypted by Jet to be used with this step. Optional.","type":"string"},"dockercfg_service":{"description":"The name of a service defined in codeship-services.yml that provides the Docker configuration. Optional.","type":"string"},"on_fail":{"description":"An optional list of steps to run if this step fails.","items":{"$ref":"#/definitions/ExternalStep"},"type":"array"}},"if":{"properties":{"type":{"anyOf":[{"const":"run"},{"type":"null"}]}}},"then":{"properties":{"steps":{"type":"null"},"image_name":{"type":"null"},"image_tag":{"type":"null"},"registry":{"type":"null"}},"required":["command"]},"else":{"if":{"properties":{"type":{"const":"push"}}},"then":{"properties":{"command":{"type":"null"},"steps":{"type":"null"}},"required":["image_name","registry"]},"else":{"if":{"properties":{"type":{"anyOf":[{"const":"serial"},{"const":"parallel"},{"const":"manual"}]}}},"then":{"properties":{"command":{"type":"null"},"image_name":{"type":"null"},"image_tag":{"type":"null"},"registry":{"type":"null"}},"required":["steps"]}}},"type":"object","additionalProperties":false}},"description":"codeship-steps.yml is where you configure each step to run in your CI/CD builds with CodeShip.","items":{"$ref":"#/definitions/ExternalStep"},"title":"CodeShip Pro steps configuration","type":"array"}
</schema>

[User] Provide a JSON object that satisfies the schema "CodeShip Pro steps configuration". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

CodeShip Pro Step

The definition of a step

The name of the step. Can be omitted.

The type of the step. If omitted, defaults to 'run'

A pattern matching tags or branches this step and any of its children should be run against. Defaults to always running.

A pattern matching tags or branches on which this step should NOT be run. Defaults to empty.

The service name defined in codeship-services.yml this step will run on

A list of service names defined in codeship-services.yml that will be used for this step.

The command to be run in this step. Required with and can only be used with the 'run' type or no specified type

A list of steps to run within this step or on_fail group. Cannot be used with 'run', 'push', or 'load' steps

The image name this push step should push to. Required with and only used by the push step

The image tag this push step should push to. See https://docs.cloudbees.com/docs/cloudbees-codeship/latest/pro-builds-and-configuration/steps#_push_steps for details. Only used by the push step

The image registry this push step should push to. For Docker Hub, use https://registry-1.docker.io. Required with and only used by the push step

The location of a Docker configuration file encrypted by Jet to be used with this step. Optional.

The name of a service defined in codeship-services.yml that provides the Docker configuration. Optional.

An optional list of steps to run if this step fails.

codeship-steps.yml is where you configure each step to run in your CI/CD builds with CodeShip.

CodeShip Pro steps configuration

Provide a JSON object that satisfies the schema "CodeShip Pro steps configuration". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.