Edit this page
Learn which pre-packaged and custom jobs you can run with Workflows.
Workflows sequence jobs together to automate your development and release processes. You can run two types of jobs: pre-packaged jobs and custom jobs.
Expo provides pre-packaged jobs that meet common use cases for developers, such as building, submitting, and running end-to-end tests. Since they are provided by Expo, they are continuously maintained and updated.
Custom jobs are jobs that you write yourself. They are useful for any use case not met by the pre-packaged jobs.
This is a pre-packaged job that creates a build from a project:
jobs:
build:
type: build
params:
platform: android | ios
profile: string # default: production
This job outputs the following variables:
platform
: Either android
or ios
.build_id
: The ID of the build.This is a pre-packaged job that submits a build to an app store. Given a build_id
, we'll choose the correct automation to submit the build to the correct store.
jobs:
submit:
type: submit
params:
profile: string # default: production
build_id: string
This job outputs the following variables:
platform
: Either android
or ios
.submission_id
: The ID of the submission.This is a pre-packaged job that publishes an update. Equivalent to eas update --auto
. When run from a GitHub event, the EAS Update branch name will correspond to the git branch name. When run manually, a random branch name that includes the git branch name will be supplied to avoid unintentionally unintentional deployment of an update.
jobs:
update:
type: update
This is a pre-packaged job that runs end-to-end tests with Maestro. Given a build_id
, we'll choose the correct machine to run the tests on the correct platform.
jobs:
e2e-test:
type: maestro
params:
build_id: string
flow_path: string | string[] # string is a file path from the project root
Custom jobs are jobs that you write yourself. They are useful for any use case that isn't met by the pre-packaged jobs.
jobs:
custom-job:
type: custom # default: undefined
steps:
- name: Run a script
run: echo "Hello, world!"
Within custom jobs, you can use our built-in functions, like eas/checkout
, eas/use_npm_token
to interact with the project. These need to be prefixed with the uses:
keyword.
jobs:
custom-job:
type: custom
steps:
- uses: eas/checkout
- uses: eas/install_node_modules
- name: Say hello!
run: echo "Hello world!"
- name: Multiline script
run: |
CURRENT_DATE=$(date)
echo "It is $CURRENT_DATE"