Code Monkey home page Code Monkey logo

expo-github-action's Introduction

expo-github-action

Publish, build or manage your Expo app with GitHub Actions!

Latest release Workflow status

Usage   —   Examples   —   Caveats   —   Changelog


What's inside?

With this Expo action, you have full access to Expo CLI and EAS CLI. It lets you automate the expo publish or eas build commands, leaving you with more time to work on your project. Some additional features are included to make the usage of this action as simple as possible, like caching and authentication.

Configuration options

Create your EXPO_TOKEN GitHub secret.

This action is customizable through variables defined in the action.yml. Here is a summary of all the input options you can use.

variable default description
expo-version - Expo CLI version to install (skips when omitted)
expo-cache true If it should use the GitHub actions cache (read more)
eas-version - EAS CLI version to install (skips when omitted)
eas-cache true If it should use the GitHub actions cache (read more)
packager yarn Package manager to use (e.g. yarn or npm)
token - Token of your Expo account - get your token (use with secrets)
patch-watchers true If it should patch the fs.inotify.* limits on Ubuntu (read more)

Example workflows

Before diving into the workflow examples, you should know the basics of GitHub Actions. You can read more about this in the GitHub Actions documentation.

  1. Create new EAS Update on push to main
  2. Create new EAS build on push to main
  3. Create previews on PRs

Create new EAS Update on push to main

This workflow listens to the push event on the main branch. It sets up all required components to publish the app, including authentication with a token.

Always use secrets when using tokens.

on:
  push:
    branches:
      - main
jobs:
  update:
    runs-on: ubuntu-latest
    steps:
      - name: 🏗 Setup repo
        uses: actions/checkout@v3

      - name: 🏗 Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: 18.x
          cache: yarn

      - name: 🏗 Setup EAS
        uses: expo/expo-github-action@v8
        with:
          eas-version: latest
          token: ${{ secrets.EXPO_TOKEN }}

      - name: 📦 Install dependencies
        run: yarn install

      - name: 🚀 Create update
        run: eas update --auto --non-interactive

Creating new EAS build on push to main

This action also allows you to install the EAS CLI. To do this, add the eas-version property, and the action will install it. We recommend using latest for the EAS CLI.

The token is shared for both Expo and EAS CLI.

on:
  push:
    branches:
      - main
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: 🏗 Setup repo
        uses: actions/checkout@v3

      - name: 🏗 Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: 18.x
          cache: yarn

      - name: 🏗 Setup EAS
        uses: expo/expo-github-action@v8
        with:
          eas-version: latest
          token: ${{ secrets.EXPO_TOKEN }}

      - name: 📦 Install dependencies
        run: yarn install

      - name: 🚀 Build app
        run: eas build --non-interactive

Create previews on PRs

Reviewing pull requests can take some time. The reviewer needs to check out the branch, install the changes, and run the bundler to review the results. You can also automatically publish the project for the reviewer to skip those manual steps.

See the preview docs for more information.

on: [pull_request]
jobs:
  preview:
    runs-on: ubuntu-latest
    steps:
      - name: 🏗 Setup repo
        uses: actions/checkout@v3

      - name: 🏗 Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: 18.x
          cache: yarn

      - name: 🏗 Setup EAS
        uses: expo/expo-github-action@v8
        with:
          expo-version: latest
          token: ${{ secrets.EXPO_TOKEN }}

      - name: 📦 Install dependencies
        run: yarn install

      - name: 🚀 Create preview
        uses: expo/expo-github-action/preview@v8
        with:
          command: eas update --auto

Things to know

Automatic Expo login

Some Expo commands, like expo publish and eas build, require you to be authenticated. This action exports the token to ensure you are authenticated in every workflow step.

Note, this action does not store the token anywhere. Each separate workflow job needs to set up the token individually.

Using the built-in cache

You can opt-out from caching the Expo and EAS CLI installations. Under the hood, it uses the @actions/cache package to restore a previous install. It reduces the installation time because it only needs to download and extract a single tar file.

Note, using cache will count towards your repo cache limit. Both the Expo and EAS CLI are stored in different caches.

ENOSPC errors on Linux

Creating new bundles with Metro can be memory intensive. In the past, some builds resulted in ENOSPC errors. To prevent anyone from running into this, we make sure Ubuntu has sensible defaults in terms of file system availability. You can opt-out from patching the file system by setting patch-watchers to false.


with ❤️ byCedric

expo-github-action's People

Contributors

bradbumbalough avatar bycedric avatar daniel avatar dependabot[bot] avatar evanbacon avatar fiberjw avatar friederbluemle avatar giautm avatar greg-hamel avatar iamdarshshah avatar karlhorky avatar mondash avatar nicholascm avatar pcowgill avatar semantic-release-bot avatar simek avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.