Edit this page
Learn which pre-packaged and custom jobs you can run with EAS Workflows.
EAS 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. If starting workflows via eas workflow:run
, a hard coded branch name will be required. We recommending using branch: ${{ github.ref_name || 'your-branch-name' }}
if you start workflows locally and via GitHub events.
jobs:
update:
type: update
params:
platform: android | ios | all # (default: all)
channel: string # missing by default, update will be deployed to a branch
branch: string # default: ${{ github.ref_name }}, which will be the name of the git branch
message: string # default: commit message or empty if no commit
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"