{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"on":{"description":"Configuration for GitHub events that trigger the workflow.","type":"object","properties":{"workflow_dispatch":{"description":"Configuration for manual workflow triggers","type":"object","properties":{"inputs":{"description":"Configuration for inputs to the workflow.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{"type":"object","properties":{"description":{"description":"Description of the input","anyOf":[{"type":"number"},{"type":"string"}]},"required":{"description":"Whether the input is required.","default":false,"anyOf":[{"type":"boolean"},{"type":"string"},{"type":"number"}]},"type":{"default":"string","type":"string","const":"string"},"default":{"description":"Default value for the input","anyOf":[{"type":"number"},{"type":"string"}]}},"additionalProperties":false},{"type":"object","properties":{"description":{"description":"Description of the input","anyOf":[{"type":"number"},{"type":"string"}]},"required":{"description":"Whether the input is required.","default":false,"anyOf":[{"type":"boolean"},{"type":"string"},{"type":"number"}]},"type":{"type":"string","const":"boolean"},"default":{"description":"Default value for the input","anyOf":[{"type":"boolean"},{"type":"string"},{"type":"number"}]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"description":{"description":"Description of the input","anyOf":[{"type":"number"},{"type":"string"}]},"required":{"description":"Whether the input is required.","default":false,"anyOf":[{"type":"boolean"},{"type":"string"},{"type":"number"}]},"type":{"type":"string","const":"number"},"default":{"description":"Default value for the input","type":"number"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"description":{"description":"Description of the input","anyOf":[{"type":"number"},{"type":"string"}]},"required":{"description":"Whether the input is required.","default":false,"anyOf":[{"type":"boolean"},{"type":"string"},{"type":"number"}]},"type":{"type":"string","const":"choice"},"default":{"description":"Default value for the input","anyOf":[{"type":"number"},{"type":"string"}]},"options":{"minItems":1,"type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]},"description":"Options for choice type inputs"}},"required":["type","options"],"additionalProperties":false},{"type":"object","properties":{"description":{"description":"Description of the input","anyOf":[{"type":"number"},{"type":"string"}]},"required":{"description":"Whether the input is required.","default":false,"anyOf":[{"type":"boolean"},{"type":"string"},{"type":"number"}]},"type":{"type":"string","const":"environment"},"default":{"description":"Default value for the input","anyOf":[{"type":"number"},{"type":"string"}]}},"required":["type"],"additionalProperties":false}]}}},"additionalProperties":false},"push":{"description":"If provided, the workflow will be triggered on pushes to the specified branches and/or tags.","type":"object","properties":{"branches":{"type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]},"description":"List of branches that pushing to will trigger the workflow. You can use basic regular expressions to match multiple branches, e.g. `feat/**`. By default pushes to any branch will trigger the workflow."},"paths":{"type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]},"description":"List of file paths that changing will trigger the workflow. You can use basic regular expressions to match multiple paths, e.g. `apps/mobile/**`. By default changes to any path will trigger the workflow."},"tags":{"type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]},"description":"List of tags that pushing to will trigger the workflow. You can use basic regular expressions to match multiple tags, e.g. `feat/**`. By default pushes to any tag will not trigger the workflow."}},"additionalProperties":false},"pull_request":{"description":"If provided, the workflow will be triggered on updates to GitHub pull request events pointing as target to the specified branches.","type":"object","properties":{"branches":{"default":["*"],"description":"If a given pull request's target branch matches any of entries here, updates of the pull request will start a new workflow. Example: if you specify \"main\" here, a pull request from \"feat/add-signup\" to \"main\" will start a workflow, but a pull request from \"main\" to \"release/1.0\" won't.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"paths":{"type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]},"description":"List of file paths that changing will trigger the workflow. You can use basic regular expressions to match multiple paths, e.g. `apps/mobile/**`. By default changes to any path will trigger the workflow."},"types":{"default":["opened","reopened","synchronize"],"description":"Describes the types of pull request events that will trigger the workflow. By default the workflow will be triggered by pull_request.opened, pull_request.reopened and pull_request.synchronize events.","type":"array","items":{"type":"string","enum":["opened","reopened","synchronize","labeled","ready_for_review"]}}},"additionalProperties":false},"pull_request_labeled":{"description":"If provided, the workflow will be triggered when the pull request is labeled with any label matching the specified labels.","anyOf":[{"description":"List of labels that, assigned to a pull request, will trigger this workflow.","type":"array","items":{"type":"string"}},{"type":"object","properties":{"labels":{"default":[],"description":"If a given pull request is labeled with a label matching any of the entries here, a new workflow will be started. Example: if you specify \"preview\" here, adding a \"preview\" label to the pull request will start a workflow, but adding other labels will not.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}}},"additionalProperties":false}]},"app_store_connect":{"description":"If provided, the workflow will be triggered by the specified App Store Connect events.","type":"object","properties":{"app_version":{"type":"object","properties":{"states":{"default":["accepted","developer_rejected","in_review","invalid_binary","metadata_rejected","pending_apple_release","pending_developer_release","prepare_for_submission","processing_for_distribution","ready_for_distribution","ready_for_review","rejected","replaced_with_new_version","waiting_for_export_compliance","waiting_for_review"],"description":"App version states that trigger this workflow.","type":"array","items":{"type":"string","enum":["accepted","developer_rejected","in_review","invalid_binary","metadata_rejected","pending_apple_release","pending_developer_release","prepare_for_submission","processing_for_distribution","ready_for_distribution","ready_for_review","rejected","replaced_with_new_version","waiting_for_export_compliance","waiting_for_review"]}}},"additionalProperties":false},"build_upload":{"type":"object","properties":{"states":{"default":["complete","failed","processing","awaiting_upload"],"description":"Build upload states that trigger this workflow.","type":"array","items":{"type":"string","enum":["complete","failed","processing","awaiting_upload"]}}},"additionalProperties":false},"external_beta":{"type":"object","properties":{"states":{"default":["processing","processing_exception","missing_export_compliance","ready_for_beta_testing","in_beta_testing","expired","ready_for_beta_submission","in_export_compliance_review","waiting_for_beta_review","in_beta_review","beta_rejected","beta_approved"],"description":"External beta states that trigger this workflow.","type":"array","items":{"type":"string","enum":["processing","processing_exception","missing_export_compliance","ready_for_beta_testing","in_beta_testing","expired","ready_for_beta_submission","in_export_compliance_review","waiting_for_beta_review","in_beta_review","beta_rejected","beta_approved"]}}},"additionalProperties":false},"beta_feedback":{"type":"object","properties":{"types":{"default":["crash","screenshot"],"description":"Beta feedback event types that trigger this workflow.","type":"array","items":{"type":"string","enum":["crash","screenshot"]}}},"additionalProperties":false}},"additionalProperties":false},"schedule":{"description":"List of cron expressions to trigger the workflow.","type":"array","items":{"type":"object","properties":{"cron":{"anyOf":[{"type":"number"},{"type":"string"}]}},"required":["cron"],"additionalProperties":false}}},"additionalProperties":false},"jobs":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"object","properties":{"name":{"description":"The name of the job. Displayed on the workflow run page.","anyOf":[{"type":"number"},{"type":"string"}]},"type":{"type":"string","const":"build"},"if":{"description":"If provided and evaluates to a falsey value, job will not run. Instead, it will get created with \"skipped\" status. See https://docs.expo.dev/eas-workflows/control-flow/#if for more details.","anyOf":[{"type":"boolean"},{"type":"string","maxLength":250}]},"needs":{"default":[],"description":"List of keys of dependant jobs. The job will only run if all of the dependencies have successfully completed.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"after":{"default":[],"description":"List of keys of jobs that are required to complete before this job can run.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"environment":{"description":"The environment variable environment for the job.","examples":["development","preview","production"],"anyOf":[{"type":"number"},{"type":"string"}]},"runs_on":{"anyOf":[{"type":"string","enum":["linux-medium","linux-large","macos-medium","macos-large","linux-medium-nested-virtualization","linux-large-nested-virtualization"]},{"type":"string"}],"description":"Runner to use for the job."},"image":{"description":"VM image to use for the job. See https://docs.expo.dev/build-reference/infrastructure/ for available images.","type":"string"},"params":{"type":"object","properties":{"platform":{"anyOf":[{"type":"string","enum":["ios","android"]},{"type":"string"}],"description":"Platform to build for."},"profile":{"default":"production","description":"Build profile name to use.","type":"string"},"message":{"description":"Message attached to the build.","anyOf":[{"type":"number"},{"type":"string"}]}},"required":["platform"],"additionalProperties":false},"env":{"default":{},"description":"Environment variables to provide to the job.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"number"},{"type":"string"}]}},"hooks":{"type":"object","properties":{"before_install_node_modules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}},"after_install_node_modules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}}},"additionalProperties":false},"steps":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]},"description":"Custom build steps to run. If specified, they override custom build YAML config provided through eas.json."},"outputs":{"description":"Mapping from steps outputs to job outputs.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["type","params"],"additionalProperties":false},{"type":"object","properties":{"name":{"description":"The name of the job. Displayed on the workflow run page.","anyOf":[{"type":"number"},{"type":"string"}]},"type":{"type":"string","const":"custom"},"if":{"description":"If provided and evaluates to a falsey value, job will not run. Instead, it will get created with \"skipped\" status. See https://docs.expo.dev/eas-workflows/control-flow/#if for more details.","anyOf":[{"type":"boolean"},{"type":"string","maxLength":250}]},"needs":{"default":[],"description":"List of keys of dependant jobs. The job will only run if all of the dependencies have successfully completed.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"after":{"default":[],"description":"List of keys of jobs that are required to complete before this job can run.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"environment":{"description":"The environment variable environment for the job.","examples":["development","preview","production"],"anyOf":[{"type":"number"},{"type":"string"}]},"image":{"description":"VM image to use for the job. See https://docs.expo.dev/build-reference/infrastructure/ for available images.","type":"string"},"runs_on":{"default":"linux-medium","anyOf":[{"type":"string","enum":["linux-medium","linux-large","macos-medium","macos-large","linux-medium-nested-virtualization","linux-large-nested-virtualization"]},{"type":"string"}],"description":"Runner to use for the job."},"env":{"default":{},"description":"Environment variables to provide to the job.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"number"},{"type":"string"}]}},"defaults":{"type":"object","properties":{"run":{"type":"object","properties":{"working_directory":{"description":"Working directory to run the script in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"}},"additionalProperties":false}},"additionalProperties":false},"hooks":{"type":"object","properties":{"before_install_node_modules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}},"after_install_node_modules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}}},"additionalProperties":false},"outputs":{"description":"Mapping from steps outputs to job outputs.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"steps":{"type":"array","items":{},"description":"List of steps to run in the job."}},"required":["steps"]},{"type":"object","properties":{"name":{"description":"The name of the job. Displayed on the workflow run page.","anyOf":[{"type":"number"},{"type":"string"}]},"type":{"type":"string","const":"deploy"},"if":{"description":"If provided and evaluates to a falsey value, job will not run. Instead, it will get created with \"skipped\" status. See https://docs.expo.dev/eas-workflows/control-flow/#if for more details.","anyOf":[{"type":"boolean"},{"type":"string","maxLength":250}]},"needs":{"default":[],"description":"List of keys of dependant jobs. The job will only run if all of the dependencies have successfully completed.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"after":{"default":[],"description":"List of keys of jobs that are required to complete before this job can run.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"environment":{"description":"The environment variable environment for the job.","examples":["development","preview","production"],"anyOf":[{"type":"number"},{"type":"string"}]},"env":{"default":{},"description":"Environment variables to provide to the job.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"number"},{"type":"string"}]}},"image":{"description":"VM image to use for the job. See https://docs.expo.dev/build-reference/infrastructure/ for available images.","type":"string"},"params":{"type":"object","properties":{"alias":{"description":"Custom alias to assign to the new deployment.","anyOf":[{"type":"number"},{"type":"string"}]},"prod":{"description":"Create a new production deployment.","anyOf":[{"type":"boolean"},{"type":"string"},{"type":"number"}]},"source_maps":{"description":"Upload source maps.","anyOf":[{"type":"boolean"},{"type":"string"},{"type":"number"}]}},"additionalProperties":false},"hooks":{"type":"object","properties":{"before_install_node_modules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}},"after_install_node_modules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}}},"additionalProperties":false}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"name":{"description":"The name of the job. Displayed on the workflow run page.","anyOf":[{"type":"number"},{"type":"string"}]},"type":{"type":"string","const":"fingerprint"},"if":{"description":"If provided and evaluates to a falsey value, job will not run. Instead, it will get created with \"skipped\" status. See https://docs.expo.dev/eas-workflows/control-flow/#if for more details.","anyOf":[{"type":"boolean"},{"type":"string","maxLength":250}]},"needs":{"default":[],"description":"List of keys of dependant jobs. The job will only run if all of the dependencies have successfully completed.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"after":{"default":[],"description":"List of keys of jobs that are required to complete before this job can run.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"environment":{"description":"The environment variable environment for the job.","examples":["development","preview","production"],"anyOf":[{"type":"number"},{"type":"string"}]},"env":{"default":{},"description":"Environment variables to provide to the job.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"number"},{"type":"string"}]}},"image":{"description":"VM image to use for the job. See https://docs.expo.dev/build-reference/infrastructure/ for available images.","type":"string"},"params":{"default":{},"type":"object","properties":{"unstable_skip_cng_check":{"description":"Whether to skip the check for Continuous Native Generation (CNG) compatibility.","anyOf":[{"type":"boolean"},{"type":"string"},{"type":"number"}]}},"additionalProperties":false},"hooks":{"type":"object","properties":{"before_install_node_modules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}},"after_install_node_modules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}}},"additionalProperties":false}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"name":{"description":"The name of the job. Displayed on the workflow run page.","anyOf":[{"type":"number"},{"type":"string"}]},"type":{"type":"string","const":"get-build"},"if":{"description":"If provided and evaluates to a falsey value, job will not run. Instead, it will get created with \"skipped\" status. See https://docs.expo.dev/eas-workflows/control-flow/#if for more details.","anyOf":[{"type":"boolean"},{"type":"string","maxLength":250}]},"needs":{"default":[],"description":"List of keys of dependant jobs. The job will only run if all of the dependencies have successfully completed.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"after":{"default":[],"description":"List of keys of jobs that are required to complete before this job can run.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"environment":{"description":"The environment variable environment for the job.","examples":["development","preview","production"],"anyOf":[{"type":"number"},{"type":"string"}]},"params":{"type":"object","properties":{"app_build_version":{"anyOf":[{"type":"number"},{"type":"string"}]},"app_identifier":{"anyOf":[{"type":"number"},{"type":"string"}]},"app_version":{"anyOf":[{"type":"number"},{"type":"string"}]},"channel":{"anyOf":[{"type":"number"},{"type":"string"}]},"distribution":{"anyOf":[{"type":"string","enum":["store","internal","simulator"]},{"type":"string"}]},"fingerprint_hash":{"anyOf":[{"type":"number"},{"type":"string"}]},"git_commit_hash":{"anyOf":[{"type":"number"},{"type":"string"}]},"platform":{"anyOf":[{"type":"string","enum":["ios","android"]},{"type":"string"}]},"profile":{"anyOf":[{"type":"number"},{"type":"string"}]},"runtime_version":{"anyOf":[{"type":"number"},{"type":"string"}]},"sdk_version":{"anyOf":[{"type":"number"},{"type":"string"}]},"simulator":{"anyOf":[{"type":"boolean"},{"type":"string"},{"type":"number"}]},"wait_for_in_progress":{"default":false,"anyOf":[{"type":"boolean"},{"type":"string"},{"type":"number"}]}},"additionalProperties":false,"description":"Filters to find the build by."}},"required":["type","params"],"additionalProperties":false},{"type":"object","properties":{"name":{"description":"The name of the job. Displayed on the workflow run page.","anyOf":[{"type":"number"},{"type":"string"}]},"type":{"type":"string","const":"maestro-cloud"},"if":{"description":"If provided and evaluates to a falsey value, job will not run. Instead, it will get created with \"skipped\" status. See https://docs.expo.dev/eas-workflows/control-flow/#if for more details.","anyOf":[{"type":"boolean"},{"type":"string","maxLength":250}]},"needs":{"default":[],"description":"List of keys of dependant jobs. The job will only run if all of the dependencies have successfully completed.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"after":{"default":[],"description":"List of keys of jobs that are required to complete before this job can run.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"environment":{"description":"The environment variable environment for the job.","examples":["development","preview","production"],"anyOf":[{"type":"number"},{"type":"string"}]},"image":{"description":"VM image to use for the job. See https://docs.expo.dev/build-reference/infrastructure/ for available images.","type":"string"},"params":{"type":"object","properties":{"build_id":{"type":"string","description":"ID of the build to use for the job. Most probably you want to reference another job's output, like \"${{ needs.some_job.outputs.build_id }}\""},"maestro_project_id":{"type":"string","description":"ID of the Maestro project to use for the test. Go to \"Settings\" on https://app.maestro.dev/ to see the project ID."},"maestro_api_key":{"default":"$MAESTRO_CLOUD_API_KEY","description":"API key to use for the Maestro project. Go to \"Settings\" on https://app.maestro.dev/ to generate an API key. When not specified, MAESTRO_CLOUD_API_KEY environment variable will be used.","type":"string"},"flows":{"type":"string","description":"Path to a Maestro test file or a directory containing the files. Corresponds to the `--flows` flag in `maestro cloud`."},"include_tags":{"description":"Tags to include in the tests. Will be passed to Maestro as `--include-tags`.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"exclude_tags":{"description":"Tags to exclude from the tests. Will be passed to Maestro as `--exclude-tags`.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"maestro_version":{"description":"Version of Maestro to use for the tests. If not provided, the latest version will be used.","type":"string"},"android_api_level":{"description":"Android API level to use for the tests. Corresponds to the `--android-api-level` flag in `maestro cloud`.","anyOf":[{"type":"number"},{"type":"string"}]},"maestro_config":{"description":"Optional path to a Maestro `config.yaml` file. Corresponds to the `--config` flag in `maestro cloud`.","type":"string"},"device_locale":{"description":"Locale to use for the tests. Corresponds to the `--device-locale` flag in `maestro cloud`.","type":"string"},"device_model":{"description":"Model of the device to use for the tests. Corresponds to the `--device-model` flag in `maestro cloud`. Run `maestro cloud --help` for an up-to-date list of supported values.","type":"string"},"device_os":{"description":"OS of the device to use for the tests. Corresponds to the `--device-os` flag in `maestro cloud`. Run `maestro cloud --help` for an up-to-date list of supported values.","type":"string"},"skip_build_check":{"description":"Skip validation of the build (whether an iOS build is a simulator build).","anyOf":[{"type":"boolean"},{"type":"string"},{"type":"number"}]},"name":{"description":"Name for the Maestro Cloud upload. Corresponds to the `--name` flag in `maestro cloud`.","type":"string"},"branch":{"description":"Override for the branch the Maestro Cloud upload originated from. By default, if the workflow run has been triggered from GitHub, the branch of the workflow run will be used. Corresponds to the `--branch` flag in `maestro cloud`.","type":"string"},"async":{"description":"Run the Maestro Cloud tests asynchronously. If true, the status of the job will only denote whether the upload was successful, *not* whether the tests succeeded. Corresponds to the `--async` flag in `maestro cloud`.","anyOf":[{"type":"boolean"},{"type":"string"},{"type":"number"}]}},"required":["build_id","maestro_project_id","flows"],"additionalProperties":false},"env":{"default":{},"description":"Environment variables to provide to the job.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"number"},{"type":"string"}]}},"runs_on":{"anyOf":[{"type":"string","enum":["linux-medium","linux-large","macos-medium","macos-large","linux-medium-nested-virtualization","linux-large-nested-virtualization"]},{"type":"string"}],"description":"Runner to use for the job."},"hooks":{"type":"object","properties":{"before_maestro_cloud":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}},"after_maestro_cloud":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}}},"additionalProperties":false},"outputs":{"description":"Mapping from steps outputs to additional job outputs.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["type","params"],"additionalProperties":false},{"type":"object","properties":{"name":{"description":"The name of the job. Displayed on the workflow run page.","anyOf":[{"type":"number"},{"type":"string"}]},"type":{"type":"string","const":"maestro"},"if":{"description":"If provided and evaluates to a falsey value, job will not run. Instead, it will get created with \"skipped\" status. See https://docs.expo.dev/eas-workflows/control-flow/#if for more details.","anyOf":[{"type":"boolean"},{"type":"string","maxLength":250}]},"needs":{"default":[],"description":"List of keys of dependant jobs. The job will only run if all of the dependencies have successfully completed.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"after":{"default":[],"description":"List of keys of jobs that are required to complete before this job can run.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"environment":{"description":"The environment variable environment for the job.","examples":["development","preview","production"],"anyOf":[{"type":"number"},{"type":"string"}]},"image":{"description":"VM image to use for the job. See https://docs.expo.dev/build-reference/infrastructure/ for available images.","type":"string"},"params":{"type":"object","properties":{"build_id":{"type":"string","description":"ID of the build to use for the job. Most probably you want to reference another job's output, like \"${{ needs.some_job.outputs.build_id }}\""},"flow_path":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Path (or a list of paths)to the Maestro test file(s)."},"record_screen":{"default":false,"description":"Upload a screen recording of the tests.","anyOf":[{"type":"boolean"},{"type":"string"},{"type":"number"}]},"shards":{"description":"Number of shards to split the tests into.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"retries":{"default":0,"description":"Number of times to retry the tests if they fail.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"include_tags":{"description":"Tags to include in the tests. Will be passed to Maestro as `--include-tags`.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"exclude_tags":{"description":"Tags to exclude from the tests. Will be passed to Maestro as `--exclude-tags`.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"maestro_version":{"description":"Version of Maestro to use for the tests. If not provided, the latest version will be used.","type":"string"},"output_format":{"default":"junit","examples":["junit","html"],"description":"Maestro test report format. Defaults to junit. Will be passed to Maestro as `--format`.","anyOf":[{"type":"number"},{"type":"string"}]},"android_system_image_package":{"description":"Android emulator system image package to use. Run `sdkmanager --list` on your machine to list available packages. Choose an `x86_64` variant. Examples: `system-images;android-36;google_apis;x86_64`, `system-images;android-35-ext15;google_apis_playstore;x86_64`.","type":"string"},"device_identifier":{"description":"Device identifier to emulate / simulate. Run `adb devices` on your machine to list available devices.","anyOf":[{"type":"object","properties":{"android":{"description":"Android emulator device identifier. E.g. \"pixel_6\".","type":"string"},"ios":{"description":"iOS Simulator device identifier. E.g. \"iPhone 16\"","type":"string"}},"additionalProperties":false},{"description":"Device identifier to emulate / simulate. Make sure to use value appropriate for the runtime platform. E.g. \"iPhone 16\" for iOS, \"pixel_6\" for Android.","type":"string"}]},"skip_build_check":{"description":"Skip validation of the build (whether an iOS build is a simulator build).","anyOf":[{"type":"boolean"},{"type":"string"},{"type":"number"}]},"use_cuttlefish":{"default":false,"description":"Use Cuttlefish instead of the Android emulator. Only supported on the latest Android worker image. Does not support multiple shards. The device does not have Google APIs or Play Store, but it may have better performance. No-op on iOS.","anyOf":[{"type":"boolean"},{"type":"string"},{"type":"number"}]}},"required":["build_id","flow_path"],"additionalProperties":false},"env":{"default":{},"description":"Environment variables to provide to the job.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"number"},{"type":"string"}]}},"runs_on":{"anyOf":[{"type":"string","enum":["linux-medium","linux-large","macos-medium","macos-large","linux-medium-nested-virtualization","linux-large-nested-virtualization"]},{"type":"string"}],"description":"Runner to use for the job."},"hooks":{"type":"object","properties":{"after_checkout":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}},"before_maestro_tests":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}},"after_maestro_tests":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}}},"additionalProperties":false}},"required":["type","params"],"additionalProperties":false},{"type":"object","properties":{"name":{"description":"The name of the job. Displayed on the workflow run page.","anyOf":[{"type":"number"},{"type":"string"}]},"type":{"type":"string","const":"require-approval"},"if":{"description":"If provided and evaluates to a falsey value, job will not run. Instead, it will get created with \"skipped\" status. See https://docs.expo.dev/eas-workflows/control-flow/#if for more details.","anyOf":[{"type":"boolean"},{"type":"string","maxLength":250}]},"needs":{"default":[],"description":"List of keys of dependant jobs. The job will only run if all of the dependencies have successfully completed.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"after":{"default":[],"description":"List of keys of jobs that are required to complete before this job can run.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"environment":{"description":"The environment variable environment for the job.","examples":["development","preview","production"],"anyOf":[{"type":"number"},{"type":"string"}]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"name":{"description":"The name of the job. Displayed on the workflow run page.","anyOf":[{"type":"number"},{"type":"string"}]},"type":{"type":"string","const":"apple-device-registration-request"},"if":{"description":"If provided and evaluates to a falsey value, job will not run. Instead, it will get created with \"skipped\" status. See https://docs.expo.dev/eas-workflows/control-flow/#if for more details.","anyOf":[{"type":"boolean"},{"type":"string","maxLength":250}]},"needs":{"default":[],"description":"List of keys of dependant jobs. The job will only run if all of the dependencies have successfully completed.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"after":{"default":[],"description":"List of keys of jobs that are required to complete before this job can run.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"environment":{"description":"The environment variable environment for the job.","examples":["development","preview","production"],"anyOf":[{"type":"number"},{"type":"string"}]},"params":{"type":"object","properties":{"apple_team_identifier":{"description":"Apple Team identifier. Required when multiple Apple Teams are registered for the account. Example: ABCDE12345","type":"string"}},"additionalProperties":false}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"name":{"description":"The name of the job. Displayed on the workflow run page.","anyOf":[{"type":"number"},{"type":"string"}]},"type":{"type":"string","const":"submit"},"if":{"description":"If provided and evaluates to a falsey value, job will not run. Instead, it will get created with \"skipped\" status. See https://docs.expo.dev/eas-workflows/control-flow/#if for more details.","anyOf":[{"type":"boolean"},{"type":"string","maxLength":250}]},"needs":{"default":[],"description":"List of keys of dependant jobs. The job will only run if all of the dependencies have successfully completed.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"after":{"default":[],"description":"List of keys of jobs that are required to complete before this job can run.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"environment":{"description":"The environment variable environment for the job.","examples":["development","preview","production"],"anyOf":[{"type":"number"},{"type":"string"}]},"image":{"description":"VM image to use for the job. See https://docs.expo.dev/build-reference/infrastructure/ for available images.","type":"string"},"params":{"type":"object","properties":{"profile":{"default":"production","description":"Name of the submit profile to use.","type":"string"},"build_id":{"type":"string","description":"ID of the build to submit. Most probably you want to reference another job's output, like \"${{ needs.some_job.outputs.build_id }}\""},"groups":{"description":"TestFlight internal group names to add the build to.","type":"array","items":{"type":"string"}}},"required":["build_id"],"additionalProperties":false},"env":{"default":{},"description":"Environment variables to provide to the job.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"number"},{"type":"string"}]}},"hooks":{"type":"object","properties":{"before_install_node_modules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}},"after_install_node_modules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}},"before_submit":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}},"after_submit":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}}},"additionalProperties":false}},"required":["type","params"],"additionalProperties":false},{"type":"object","properties":{"name":{"description":"The name of the job. Displayed on the workflow run page.","anyOf":[{"type":"number"},{"type":"string"}]},"type":{"type":"string","const":"testflight"},"if":{"description":"If provided and evaluates to a falsey value, job will not run. Instead, it will get created with \"skipped\" status. See https://docs.expo.dev/eas-workflows/control-flow/#if for more details.","anyOf":[{"type":"boolean"},{"type":"string","maxLength":250}]},"needs":{"default":[],"description":"List of keys of dependant jobs. The job will only run if all of the dependencies have successfully completed.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"after":{"default":[],"description":"List of keys of jobs that are required to complete before this job can run.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"environment":{"description":"The environment variable environment for the job.","examples":["development","preview","production"],"anyOf":[{"type":"number"},{"type":"string"}]},"image":{"description":"VM image to use for the job. See https://docs.expo.dev/build-reference/infrastructure/ for available images.","type":"string"},"params":{"type":"object","properties":{"profile":{"default":"production","description":"Name of the submit profile to use.","type":"string"},"build_id":{"type":"string","description":"ID of the build to submit. Most probably you want to reference another job's output, like \"${{ needs.some_job.outputs.build_id }}\""},"internal_groups":{"description":"TestFlight internal group names to add the build to.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"external_groups":{"description":"TestFlight external group names to add the build to.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"changelog":{"description":"What to test notes for TestFlight","type":"string"},"submit_beta_review":{"description":"Whether to submit for Beta App Review. If not specified, will be true when external_groups are provided.","anyOf":[{"type":"boolean"},{"type":"string"},{"type":"number"}]},"wait_processing_timeout_seconds":{"default":1800,"description":"Timeout in seconds for waiting for build processing. Defaults to 1800 (30 minutes). Only applies when distributing to groups or setting changelog.","type":"number","exclusiveMinimum":0}},"required":["build_id"],"additionalProperties":false},"env":{"default":{},"description":"Environment variables to provide to the job.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"number"},{"type":"string"}]}},"hooks":{"type":"object","properties":{"before_install_node_modules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}},"after_install_node_modules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}}},"additionalProperties":false}},"required":["type","params"],"additionalProperties":false},{"type":"object","properties":{"name":{"description":"The name of the job. Displayed on the workflow run page.","anyOf":[{"type":"number"},{"type":"string"}]},"type":{"type":"string","const":"update"},"if":{"description":"If provided and evaluates to a falsey value, job will not run. Instead, it will get created with \"skipped\" status. See https://docs.expo.dev/eas-workflows/control-flow/#if for more details.","anyOf":[{"type":"boolean"},{"type":"string","maxLength":250}]},"needs":{"default":[],"description":"List of keys of dependant jobs. The job will only run if all of the dependencies have successfully completed.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"after":{"default":[],"description":"List of keys of jobs that are required to complete before this job can run.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"environment":{"description":"The environment variable environment for the job.","examples":["development","preview","production"],"anyOf":[{"type":"number"},{"type":"string"}]},"image":{"description":"VM image to use for the job. See https://docs.expo.dev/build-reference/infrastructure/ for available images.","type":"string"},"params":{"default":{},"type":"object","properties":{"message":{"description":"Message to use for the update. If not provided, the commit message will be used.","type":"string"},"platform":{"description":"Platform to use for the update (\"android\", \"ios\" or \"all\").","type":"string"},"branch":{"description":"Branch to use for the update. If not provided, the branch from the workflow run will be used. For manually run workflows you need to provide a value. Example: \"${{ github.ref_name || 'testing-new-workflow' }}\". Provide *either* a branch or a channel, not both.","type":"string"},"channel":{"description":"Channel to use for the update. Provide *either* a branch or a channel, not both.","type":"string"},"private_key_path":{"description":"Path to the file containing the PEM-encoded private key corresponding to the certificate in eas-updates' configuration. See https://docs.expo.dev/eas-update/code-signing/#publish-a-signed-update-for-your-app for more info. You can reference file type EAS Environment Variables with \"$VARIABLE_NAME\" syntax (which in the VM becomes path to the secret file).","type":"string"},"upload_sentry_sourcemaps":{"description":"Whether to upload sourcemaps to Sentry. If not provided, the value will be inferred based on whether \"@sentry/react-native\" is installed.","anyOf":[{"type":"boolean"},{"type":"string"},{"type":"number"}]}},"additionalProperties":false},"env":{"default":{},"description":"Environment variables to provide to the job.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"number"},{"type":"string"}]}},"hooks":{"type":"object","properties":{"before_install_node_modules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}},"after_install_node_modules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}}},"additionalProperties":false}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"name":{"description":"The name of the job. Displayed on the workflow run page.","anyOf":[{"type":"number"},{"type":"string"}]},"type":{"type":"string","const":"slack"},"if":{"description":"If provided and evaluates to a falsey value, job will not run. Instead, it will get created with \"skipped\" status. See https://docs.expo.dev/eas-workflows/control-flow/#if for more details.","anyOf":[{"type":"boolean"},{"type":"string","maxLength":250}]},"needs":{"default":[],"description":"List of keys of dependant jobs. The job will only run if all of the dependencies have successfully completed.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"after":{"default":[],"description":"List of keys of jobs that are required to complete before this job can run.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"environment":{"description":"The environment variable environment for the job.","examples":["development","preview","production"],"anyOf":[{"type":"number"},{"type":"string"}]},"params":{"anyOf":[{"type":"object","properties":{"webhook_url":{"type":"string","format":"uri"},"message":{"type":"string"}},"required":["webhook_url","message"],"additionalProperties":false},{"type":"object","properties":{"webhook_url":{"type":"string","format":"uri"},"payload":{"type":"object","properties":{},"additionalProperties":{}}},"required":["webhook_url","payload"],"additionalProperties":false}]}},"required":["type","params"],"additionalProperties":false},{"type":"object","properties":{"name":{"description":"The name of the job. Displayed on the workflow run page.","anyOf":[{"type":"number"},{"type":"string"}]},"type":{"type":"string","const":"doc"},"if":{"description":"If provided and evaluates to a falsey value, job will not run. Instead, it will get created with \"skipped\" status. See https://docs.expo.dev/eas-workflows/control-flow/#if for more details.","anyOf":[{"type":"boolean"},{"type":"string","maxLength":250}]},"needs":{"default":[],"description":"List of keys of dependant jobs. The job will only run if all of the dependencies have successfully completed.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"after":{"default":[],"description":"List of keys of jobs that are required to complete before this job can run.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"environment":{"description":"The environment variable environment for the job.","examples":["development","preview","production"],"anyOf":[{"type":"number"},{"type":"string"}]},"params":{"type":"object","properties":{"md":{"type":"string","description":"Markdown content to render."}},"required":["md"],"additionalProperties":false}},"required":["type","params"],"additionalProperties":false},{"type":"object","properties":{"name":{"description":"The name of the job. Displayed on the workflow run page.","anyOf":[{"type":"number"},{"type":"string"}]},"type":{"type":"string","const":"repack"},"if":{"description":"If provided and evaluates to a falsey value, job will not run. Instead, it will get created with \"skipped\" status. See https://docs.expo.dev/eas-workflows/control-flow/#if for more details.","anyOf":[{"type":"boolean"},{"type":"string","maxLength":250}]},"needs":{"default":[],"description":"List of keys of dependant jobs. The job will only run if all of the dependencies have successfully completed.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"after":{"default":[],"description":"List of keys of jobs that are required to complete before this job can run.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"environment":{"description":"The environment variable environment for the job.","examples":["development","preview","production"],"anyOf":[{"type":"number"},{"type":"string"}]},"runs_on":{"anyOf":[{"type":"string","enum":["linux-medium","linux-large","macos-medium","macos-large","linux-medium-nested-virtualization","linux-large-nested-virtualization"]},{"type":"string"}],"description":"Runner to use for the job."},"env":{"default":{},"description":"Environment variables to provide to the job.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"number"},{"type":"string"}]}},"image":{"description":"VM image to use for the job. See https://docs.expo.dev/build-reference/infrastructure/ for available images.","type":"string"},"params":{"type":"object","properties":{"build_id":{"type":"string","description":"ID of the build to use for the job. Most probably you want to reference another job's output, like \"${{ needs.some_job.outputs.build_id }}\""},"profile":{"description":"Build profile name to use. By default uses the same profile as the source build.","type":"string"},"embed_bundle_assets":{"description":"Whether to embed bundle assets into the repacked app. Defaults to the detected build type by the source app.","anyOf":[{"type":"boolean"},{"type":"string"},{"type":"number"}]},"js_bundle_only":{"description":"Whether to only repack the JavaScript bundle. Defaults to false, meaning the entire app metadata will be updated.","anyOf":[{"type":"boolean"},{"type":"string"},{"type":"number"}]},"message":{"description":"Message attached to the build.","anyOf":[{"type":"number"},{"type":"string"}]},"repack_version":{"description":"Version of the repack tool to use.","type":"string"},"repack_package":{"description":"Repack package to use.","type":"string"}},"required":["build_id"],"additionalProperties":false},"outputs":{"description":"Job outputs.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"hooks":{"type":"object","properties":{"before_install_node_modules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}},"after_install_node_modules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}}},"additionalProperties":false}},"required":["type","params"],"additionalProperties":false},{"type":"object","properties":{"name":{"description":"The name of the job. Displayed on the workflow run page.","anyOf":[{"type":"number"},{"type":"string"}]},"type":{"type":"string","const":"github-comment"},"if":{"description":"If provided and evaluates to a falsey value, job will not run. Instead, it will get created with \"skipped\" status. See https://docs.expo.dev/eas-workflows/control-flow/#if for more details.","anyOf":[{"type":"boolean"},{"type":"string","maxLength":250}]},"needs":{"default":[],"description":"List of keys of dependant jobs. The job will only run if all of the dependencies have successfully completed.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"after":{"default":[],"description":"List of keys of jobs that are required to complete before this job can run.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"environment":{"description":"The environment variable environment for the job.","examples":["development","preview","production"],"anyOf":[{"type":"number"},{"type":"string"}]},"params":{"default":{},"description":"Comment parameters. Either provide custom payload content, or use auto-discovery with optional overrides for builds and updates.","anyOf":[{"type":"object","properties":{"payload":{"description":"Custom HTML/Markdown content for the comment. Supports interpolation. When provided, no other parameters are allowed.","anyOf":[{"type":"number"},{"type":"string"}]},"message":{"not":{}},"build_ids":{"not":{}},"update_group_ids":{"not":{}},"deployment_ids":{"not":{}}},"required":["payload"],"additionalProperties":false},{"type":"object","properties":{"payload":{"not":{}},"message":{"description":"Custom message to display in the comment. Defaults to a friendly message about builds and updates being ready for testing.","anyOf":[{"type":"number"},{"type":"string"}]},"build_ids":{"description":"List of build IDs to include. If not specified, auto-discovers all builds related to a workflow run. Use empty array (`[]`) to omit builds section.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"update_group_ids":{"description":"List of update group IDs to include. If not specified, auto-discovers all updates related to a workflow run. Use empty array (`[]`) to omit updates section.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}},"deployment_ids":{"description":"List of deployment identifiers to include. If not specified, auto-discovers all deployments related to a workflow run. Use empty array (`[]`) to omit deployments section.","type":"array","items":{"anyOf":[{"type":"number"},{"type":"string"}]}}},"additionalProperties":false}]}},"required":["type"],"additionalProperties":false}]},"description":"Configuration of jobs to run in the workflow."},"name":{"description":"The name of the workflow. Displayed on the workflow page.","anyOf":[{"type":"number"},{"type":"string"}]},"defaults":{"type":"object","properties":{"image":{"description":"Default VM image to use for the jobs. Note: it is recommended to use \"sdk-XX\" image tags here. See https://docs.expo.dev/build-reference/infrastructure/ for available images.","type":"string"},"run":{"type":"object","properties":{"working_directory":{"description":"Default working directory to run the scripts in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"}},"additionalProperties":false},"tools":{"description":"Specific versions of tools that should be used for jobs defined in this workflow configuration. Follow each tool's documentation for available values.","type":"object","properties":{"node":{"description":"Version of Node.js.","anyOf":[{"type":"number"},{"type":"string"}]},"yarn":{"description":"Version of Yarn.","anyOf":[{"type":"number"},{"type":"string"}]},"corepack":{"description":"Whether to enable corepack.","type":"boolean"},"pnpm":{"description":"Version of pnpm.","anyOf":[{"type":"number"},{"type":"string"}]},"bun":{"description":"Version of Bun.","anyOf":[{"type":"number"},{"type":"string"}]},"ndk":{"description":"Version of Android NDK.","anyOf":[{"type":"number"},{"type":"string"}]},"bundler":{"description":"Version of Bundler.","anyOf":[{"type":"number"},{"type":"string"}]},"fastlane":{"description":"Version of fastlane.","anyOf":[{"type":"number"},{"type":"string"}]},"cocoapods":{"description":"Version of CocoaPods.","anyOf":[{"type":"number"},{"type":"string"}]}}},"hooks":{"type":"object","properties":{"before_install_node_modules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}},"after_install_node_modules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"run":{"type":"string","description":"Shell script to run in the step."},"shell":{"description":"Shell to run the \"run\" command with.","type":"string"},"outputs":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"required":{"type":"boolean"}},"required":["name"]}]}},"uses":{"not":{}},"with":{"not":{}}},"required":["run"]},{"type":"object","properties":{"id":{"description":"ID of the step. Useful for later referencing the job's outputs. Example: step with id \"setup\" and an output \"platform\" will expose its value under \"steps.setup.outputs.platform\".","type":"string"},"if":{"description":"Expression that determines whether the step should run.","type":"string"},"name":{"description":"Name of the step.","type":"string"},"working_directory":{"description":"Working directory to run the step in. Relative paths like \"./assets\" or \"assets\" are resolved from the app's base directory. Absolute paths like \"/apps/mobile\" are resolved from the repository root.","type":"string"},"env":{"description":"Additional environment variables to set for the step.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"__metrics_id":{"type":"string"},"uses":{"type":"string","description":"Name of the function to use for this step. See https://docs.expo.dev/custom-builds/schema/#built-in-eas-functions for available functions."},"with":{"description":"Inputs to the function.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"run":{"not":{}},"shell":{"not":{}},"outputs":{"not":{}}},"required":["uses"]}]}}},"additionalProperties":false}},"additionalProperties":false},"concurrency":{"description":"Configuration for concurrency control. Currently only allows setting cancel_in_progress for same-branch workflows.","type":"object","properties":{"cancel_in_progress":{"type":"boolean","const":true,"description":"If true, new workflow runs started from GitHub will cancel current in-progress runs for the same branch."},"group":{"type":"string","const":"${{ workflow.filename }}-${{ github.ref }}","description":"Custom concurrency groups are not yet supported. Set this placeholder value to ensure that your workflow remains compatible when custom groups support is available."}},"required":["cancel_in_progress","group"],"additionalProperties":false}},"required":["jobs"]}}