An open API service indexing awesome lists of open source software.

https://github.com/echobind/circleci-react-native-orb

Take the pain out of building React Native apps on Circle CI
https://github.com/echobind/circleci-react-native-orb

Last synced: 4 months ago
JSON representation

Take the pain out of building React Native apps on Circle CI

Awesome Lists containing this project

README

          

# Circle CI React Native Orb

## Overview

An orb for building React Native applications. Assumes the usage of Fastlane. By default, it:

- Installs dependencies with yarn and caches them
- Installs gem dependencies (typically for Fastlane) and caches them
- Installs gradle dependencies and caches them
- Runs jest tests via `yarn test:ci`
- Decodes an Android keystore from \$ANDROID_ENCODED_KEYSTORE and saves to android.keystore for later use
- Overrides ENV vars with branch-specific ENV vars if they exist. example: API_URL_BETA or BETA_API_URL would override API_URL
- Creates an .env file containing current ENV vars for use by react-native-config and others

## Other useful features

- overrideable test_steps, pre_build, build, and post_build hooks to customize the build process

## Caveats
- Assumes that Fastlane will either inject signing config for Android via gradle properties and the encoded keystore mentioned above or Gradle is otherwise setup to fully handle the signing process

---

## Setup
* Setup your project for Fastlane
* Setup your project for Circle CI
* Create a config file at `.circleci/config.yml`. Here's an example:
```yml
version: 2.1
orbs:
react-native: echobind/react-native@0.1.1
workflows:
version: 2
main:
jobs:
- react-native/node:
name: node
- react-native/android:
requires:
- node
build:
- run:
name: fastlane adhoc android
working_directory: android
command: |
bundle exec fastlane adhoc build_number:${CIRCLE_BUILD_NUM}
- react-native/ios:
requires:
- node
build:
- run:
name: fastlane adhoc ios
working_directory: ios
command: |
bundle exec fastlane adhoc build_number:${CIRCLE_BUILD_NUM}
```

### Jest
If using the default `jest` step, make sure you install `jest-junit` as a `devDependency` and add a `test:ci` script like the following: `"test:ci": "jest --reporters=default --reporters=jest-junit"`

Otherwise, make sure to override the `jest` step to fit your project's needs.

### Pre_build
If using the default `pre_build` steps:
* Add `ANDROID_ENCODED_KEYSTORE` as an environment variable in the Circle UI. Encode using: `cat | base64 | pbcopy`.
* Add environment variables required for your app: ex. `API_URL`. Override on a per-branch basis by using the branch name. ex: `BETA_API_URL`

Otherwise, make sure to override `pre_build` to fit your project's needs.

### Kick off a build!
Push the branch. Circle should run and build ios and android releases after the node job passes.

### Customizing
Need to override node version, xcode version, build steps, or anything else? Most jobs & steps take parameters to customize. Check the orb documentation page for more details.

## Orb Documentation
Generated documentation is available on the orb page: https://circleci.com/orbs/registry/orb/echobind/react-native