Skip to content

EAS / Release / Expo Update #4

EAS / Release / Expo Update

EAS / Release / Expo Update #4

name: EAS / Release / Expo Update
on:
workflow_dispatch:
jobs:
build:
name: Checkout and EAS Update
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18.x
cache: yarn
cache-dependency-path: '**/yarn.lock'
- name: Setup Expo and EAS
uses: expo/expo-github-action@v8
with:
eas-version: latest
token: ${{ secrets.EXPO_TOKEN }}
- name: eas update flow for release branch versions
run: |
# Read the Major-Minor version from the branch app.json
CURRENT_APP_JSON_VERSION=$(jq -r '.expo.version' app.json)
MAJOR_MINOR=${CURRENT_APP_JSON_VERSION%.*}
echo "Current App version: ${CURRENT_APP_JSON_VERSION}"
echo "Current Major-Minor version: ${MAJOR_MINOR}"
# get all the patch releases for this major-minor release
RELEASES_JSON_FILE="app.json"
PATCHES_KEY=".releases.\"release-${MAJOR_MINOR}\""
PATCHES_VAL=$( jq -r "${PATCHES_KEY}[]" "${RELEASES_JSON_FILE}" 2>/dev/null)
if [[ -z "$PATCHES_VAL" ]]; then
echo "No patch releases found for release: ${RELEASE}"
exit 1
fi
for PATCH_RELEASE in ${PATCHES_VAL}; do
# update app.json
jq --arg version "${PATCH_RELEASE}" '.expo.version = $version' app.json > app.temp.json
mv app.temp.json app.json
# display app.json version
EAS_UPDATE_APP_JSON_VERSION=$(jq -r '.expo.version' app.json)
echo "app.json version before eas update is = ${EAS_UPDATE_APP_JSON_VERSION}"
# perform eas update
echo "Performing eas update for version: ${PATCH_RELEASE}"
# upload the source maps
echo "Uploading sourcemap for version: ${PATCH_RELEASE}"
done