react-native-expo-turtle-build-and-upload
Version:
A set of GNU Make targets for building and uploading React Native application releases for iOS and Android.
100 lines (80 loc) • 4.53 kB
Markdown
# React Native Expo Turtle Build & Upload
> Developed with ♥ and sponsored by [Polyglot](https://realpolyglot.dev) and [Happii LLC](https://apps.apple.com/us/developer/happii-llc/id1107883445).
[](https://travis-ci.org/wilmoore/react-native-expo-turtle-build-and-upload) [](https://www.npmjs.org/package/react-native-expo-turtle-build-and-upload) [](https://www.npmjs.org/package/react-native-expo-turtle-build-and-upload) 
[react-native-expo-turtle-build-and-upload][react-native-expo-turtle-build-and-upload] is a set of [GNU Make][GNU Make] targets for building and uploading React Native application releases for iOS and Android. It exposes a GNU Make file `build-and-upload` in the directory `node_modules/react-native-expo-turtle-build-and-upload` which you must include in your project's `makefile`.

## Requirements
- A [React Native][React Native] application bootstrapped via [`expo init`](https://expo.io/learn).
- [Xcode Command Line Tools][Xcode Command Line Tools] (`xcode-select --install`).
- [fastlane][fastlane] (`brew install fastlane && brew link fastlane`).
## Installation & Setup
###### npm
```
npm install react-native-expo-turtle-build-and-upload --save-dev
```
###### yarn
```
yarn add react-native-expo-turtle-build-and-upload --dev
```
###### configure `app.json`
- [iOS][iOS]
- [Android][Android]
###### setup environment variables
- `CERTIFICATE_ROOT`: directory containing `ios_distribution.mobileprovision` and `ios_distribution.p12`.
- `EXPO_USERNAME`: Expo account username.
- `EXPO_PASSWORD`: Expo account password.
- `EXPO_APPLE_TEAM_ID`: Apple Team ID - (a 10-character string like `Q2DBWS92CA`).
- `EXPO_IOS_DIST_P12_PASSWORD`: iOS Distribution Certificate password.
- `IOS_APP_UPLOAD_USERNAME`: Apple Developer account username.
- `IOS_APP_UPLOAD_PASSWORD`: Apple Developer account application-specific password.
- `EXPO_SDK_VERSION`: Expo SDK version of your app.
###### add the following line to your [`makefile`][`makefile`]
```
include node_modules/react-native-expo-turtle-build-and-upload/build-and-upload
```
## Available Targets
0. `turtle-build-ios`
0. `to-appstore`
0. `turtle-build-android`
0. `to-playstore`
## Usage
###### build `ios_distribution.ipa` for the app store
```
make turtle-build-ios
```
###### upload `ios_distribution.ipa` to the app store
```
make to-appstore
```
###### build `android_distribution.apk` for the app store
```
make turtle-build-android
```
###### upload `android_distribution.apk` to the play store
```
make to-playstore
```
## CI
#### Expo
- [Building Standalone Apps on Your CI - Expo Documentation][Building Standalone Apps on Your CI - Expo Documentation]
#### bitrise
- [Using the Generic File Storage][Using the Generic File Storage]
- [bitrise: Build Expo apps with turtle-cli][bitrise: Build Expo apps with turtle-cli]
## Reference
- [Including Other Makefiles][Including Other Makefiles]
## Inspiration
- [Modern Make][Modern Make]
---
[Android]: https://docs.expo.io/versions/latest/workflow/configuration/#android
[bitrise: Build Expo apps with turtle-cli]: https://discuss.bitrise.io/t/build-expo-apps-with-turtle-cli/7916/2
[Building Standalone Apps on Your CI - Expo Documentation]: https://docs.expo.io/versions/latest/distribution/turtle-cli
[fastlane]: https://fastlane.tools
[GNU Make]: https://www.gnu.org/software/make
[Including Other Makefiles]: https://www.gnu.org/software/make/manual/make.html#Include
[iOS]: https://docs.expo.io/versions/latest/workflow/configuration/#ios
[Modern Make]: https://github.com/tj/mmake
[React Native]: https://reactnative.dev
[react-native-expo-turtle-build-and-upload]: https://github.com/wilmoore/react-native-expo-turtle-build-and-upload
[Using the Generic File Storage]: https://devcenter.bitrise.io/tutorials/how-to-use-the-generic-file-storage/#uploading-files-to-generic-file-storage-on-bitriseio
[Xcode Command Line Tools]: https://developer.apple.com/library/archive/technotes/tn2339/_index.html
[`makefile`]: https://github.com/wilmoore/react-native-expo-turtle-build-and-upload/blob/master/makefile