Skip to content

Conversation

@weitingsun
Copy link
Contributor

@weitingsun weitingsun commented Jan 29, 2026

Description

  • Move creating .env from push-eas-update.yml to build.sh
  • Have eas push platform as an input so we can choose to push to all, ios or android

Changelog

CHANGELOG entry: null

Related issues

Fixes:

Manual testing steps

Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]

Screenshots/Recordings

Before

After

Pre-merge author checklist

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

Note

Medium Risk
Changes the OTA update GitHub Actions workflow and scripts/build.sh publish path, including new platform selection and altered .env generation; mistakes could break release/update automation or omit required env values.

Overview
Adds a platform input to the push-eas-update workflow and passes it through as OTA_PUSH_PLATFORM, allowing OTA updates to target ios, android, or all.

Updates scripts/build.sh’s expo-update flow to generate .env (and mirror vars into GITHUB_ENV) from a fixed allowlist, then publish EAS updates sequentially per platform with explicit per-platform failure reporting/propagation. Also removes the workflow’s EXPO_NO_LAVAMOAT override and hardens Sentry auth token injection by switching sed to a safer delimiter.

Written by Cursor Bugbot for commit faa3f6b. This will update automatically on new commits. Configure here.

@weitingsun weitingsun requested review from a team as code owners January 29, 2026 21:12
@github-actions
Copy link
Contributor

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@metamaskbot metamaskbot added the team-mobile-platform Mobile Platform team label Jan 29, 2026
value="${!var}"
if [ -n "$value" ]; then
echo "${var}=${value}" >> .env
echo "${var}=${value}" >> "$GITHUB_ENV"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Environment values lack escaping for special characters

Low Severity

The new .env creation writes values without escaping or quoting: echo "${var}=${value}". The removed createEnvFile() function properly escaped backslashes, double quotes, and dollar signs, then wrapped values in quotes. If any secret values contain special characters (like $, ", \, or spaces), they could cause parsing issues when Expo reads the .env file or trigger unintended shell expansion.

Fix in Cursor Fix in Web

@codecov-commenter
Copy link

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 80.27%. Comparing base (de82fcb) to head (4d92ae7).
⚠️ Report is 15 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #25415      +/-   ##
==========================================
- Coverage   80.55%   80.27%   -0.29%     
==========================================
  Files        4257     4263       +6     
  Lines      109159   109959     +800     
  Branches    23213    23417     +204     
==========================================
+ Hits        87937    88267     +330     
- Misses      15089    15506     +417     
- Partials     6133     6186      +53     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions
Copy link
Contributor

🔍 Smart E2E Test Selection

  • Selected E2E tags: None (no tests recommended)
  • Selected Performance tags: None (no tests recommended)
  • Risk Level: low
  • AI Confidence: 92%
click to see 🤖 AI reasoning details

E2E Test Selection:
The changes are purely CI/build infrastructure modifications:

  1. .github/workflows/push-eas-update.yml: Added a new platform input parameter to allow selecting which platform (ios, android, or all) to update via EAS. Also removed the EXPO_NO_LAVAMOAT environment variable.

  2. scripts/build.sh:

    • Refactored createEnvFile() function with simplified escaping logic
    • Modified buildExpoUpdate() to run iOS and Android updates sequentially (instead of simultaneously) to avoid LavaMoat lockdown serializer conflicts
    • Added platform-specific logic based on OTA_PUSH_PLATFORM environment variable
    • Fixed checkAuthToken() to use | as sed delimiter to handle special characters in auth tokens

These changes:

  • Do NOT modify any app source code (React Native components, controllers, business logic)
  • Do NOT affect E2E test infrastructure (no changes to e2e/ directory, test pages, fixtures, or utilities)
  • Are purely build/deployment workflow improvements for EAS OTA updates
  • Do NOT change how the app behaves at runtime

The validation for these changes would be running the actual EAS update workflow, not E2E tests. No E2E test tags are needed.

Performance Test Selection:
These changes are purely CI/build infrastructure modifications (GitHub workflow and build script). They do not affect any runtime app code, UI components, data loading, or app initialization. The changes are for EAS OTA update deployment process and have no impact on app performance metrics like rendering, loading times, or responsiveness.

View GitHub Actions results

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

@sonarqubecloud
Copy link

Copy link
Contributor

@sethkfman sethkfman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@weitingsun weitingsun changed the title Chore/validate env expo chore: validate env expo Jan 30, 2026
@weitingsun weitingsun deployed to build-production January 30, 2026 20:33 — with GitHub Actions Active
@weitingsun weitingsun changed the title chore: validate env expo chore: validate env expo cp-7.63.0 Jan 30, 2026
@weitingsun weitingsun added this pull request to the merge queue Jan 30, 2026
Merged via the queue into main with commit 7e6bee4 Jan 30, 2026
122 of 126 checks passed
@weitingsun weitingsun deleted the chore/validate-env-expo branch January 30, 2026 23:24
@github-actions github-actions bot locked and limited conversation to collaborators Jan 30, 2026
@metamaskbot metamaskbot added the release-7.65.0 Issue or pull request that will be included in release 7.65.0 label Jan 30, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release-7.65.0 Issue or pull request that will be included in release 7.65.0 size-M team-mobile-platform Mobile Platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants