Files
self/.github/actions/mobile-setup/action.yml
Justin Hernandez 6172497abf chore: upgrade yarn to 4.12.0 (#1530)
* use yarn 4.12.0

* upgrade tsx

* update 4.6.0 references to 4.12.0

* update lock file

* update lock file

* update lock
2025-12-25 12:12:38 -08:00

103 lines
3.0 KiB
YAML

name: Setup Mobile Environment
description: "Sets up the environment for mobile app builds"
inputs:
app_path:
description: "Path to the app directory"
required: true
node_version:
description: "Node version"
required: true
ruby_version:
description: "Ruby version"
required: true
workspace:
description: "Workspace directory path"
required: true
runs:
using: "composite"
steps:
- name: Install locales and dialog for local development
if: ${{ env.ACT }}
shell: bash
run: |
sudo apt-get update
sudo apt-get install -y locales dialog unzip
# for fastlane
- name: Install locales and dialog
if: runner.os != 'macOS'
shell: bash
run: |
sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8
- name: Setup Ruby environment
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ inputs.ruby_version }}
- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: ${{ inputs.node_version }}
- name: Configure bundler
shell: bash
run: |
cd ${{ inputs.app_path }}
bundle config set --local path 'vendor/bundle'
bundle config set --local deployment 'true'
echo "✅ Bundler configured for strict mode (deployment=true)"
- name: Install app dependencies
shell: bash
run: |
cd ${{ inputs.app_path }}
# Configure Yarn
corepack enable
yarn set version 4.12.0
echo "📦 Installing JavaScript dependencies with strict lock file..."
if ! yarn install --immutable --inline-builds; then
echo ""
echo "❌ ERROR: yarn.lock is out of date!"
echo ""
echo "This happens when package.json was modified but yarn.lock wasn't updated."
echo ""
echo "To fix this:"
echo " 1. Run 'yarn install' locally in the app directory"
echo " 2. Commit the updated yarn.lock file"
echo " 3. Push your changes"
echo ""
echo "This ensures everyone has the exact same dependency versions."
exit 1
fi
# Run mobile-specific installation
yarn install-app:mobile-deploy
- name: Install Ruby dependencies
shell: bash
run: |
cd ${{ inputs.app_path }}
# Install Ruby gems with bundler (respecting cache)
echo "📦 Installing Ruby gems with strict lock file..."
if ! bundle install --jobs 4 --retry 3; then
echo ""
echo "❌ ERROR: Gemfile.lock is out of date!"
echo ""
echo "This happens when Gemfile was modified but Gemfile.lock wasn't updated."
echo ""
echo "To fix this:"
echo " 1. Run 'bundle install' locally in the app directory"
echo " 2. Commit the updated Gemfile.lock file"
echo " 3. Push your changes"
echo ""
echo "This ensures everyone has the exact same gem versions."
exit 1
fi