Getting Started
You’ve got to follow each step to execute expo-release-it
.
1. Ruby, Bundler
expo-release-it
requires bundler
of ruby is available in your environment to run Fastlane
internally.
If not, set up your environment so that ruby
and bundler
are available by following Ruby Install Guide
2. Prepare Keys & Credentials
init
command generates sample key files structure in expo-release-it/key
. They are noob files and you must replace file contents.
expo-release-it/key
exactly the same filenames..gitignore
if you aren’t sure about security issues. Treat them as .env
and share it to your teammates.android_play_console_service_account.json
Google Play Console actions require authentication using Google Service Account.
You can issue new Google Play Service Account by following Guide
and prepare json
file.
android_release.keystore
Prepare your android release keystore file for uploading and signing Android build artifacts.
Additional passwords, alias will be prompted during the init
command and be stored in keyholder.json
.
ios_app_store_connect_api_key
App Store Connect actions require authentication using App Store Connect Api Key(.p8)
Additional issuer_id
, key_id
values will be prompted during the init
command and be stored in keyholder.json
3. Create & Configure app on the stores as much as possible
Create and configure your application in Google Play Console & App Store Connect as many as possible.
You’d have to fill your key & credentials information using init
command and pull store metadatas using pull
command later.
You would need to upload & publish your first artifact, release manually at first.
4. Set binary version in expo config file.
The following buildNumber, versionCode format ABBBCCC
is not mandatory but recommended for readability.
If your expo config file is app.json
, then set like the following.
{
"expo": {
"version": "1.2.3",
"ios": {
"buildNumber": "1002003"
},
"android": {
"versionCode": 1002003
}
}
}
If your expo config file is app.config.(js|ts|mjs|cjs)
, then set like the following.
import type { ExpoConfig, ConfigContext } from 'expo/config';
const VERSION_NAME = '1.2.3'; // VERSION_NAME variable is required.
const VERSION_CODE = 1002003; // VERSION_CODE variable is required.
export default ({ config }: ConfigContext): ExpoConfig => {
return {
...config,
version: VERSION_NAME,
ios: {
buildNumber: VERSION_CODE + '',
},
android: {
versionCode: VERSION_CODE,
},
};
};
5. Update .gitignore
# Expo Release It
expo-release-it/.temp
android/vendor/bundle
ios/vendor/bundle
# if you excluded android, ios for using CNG
!expo-release-it/metadata/*
# if you aren't sure about security issues, feel free to exclude these files from the VCS.
!expo-release-it/key/*.p8
!expo-release-it/key/*.keystore