mirror of
https://github.com/selfxyz/self.git
synced 2026-01-10 07:08:10 -05:00
179 lines
6.0 KiB
YAML
179 lines
6.0 KiB
YAML
name: Mobile Bundle Analysis
|
|
|
|
env:
|
|
RUBY_VERSION: 3.2
|
|
JAVA_VERSION: 17
|
|
WORKSPACE: ${{ github.workspace }}
|
|
APP_PATH: ${{ github.workspace }}/app
|
|
NODE_ENV: "production"
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- dev
|
|
- staging
|
|
- main
|
|
paths:
|
|
- "app/**"
|
|
- "packages/mobile-sdk-alpha/**"
|
|
- ".github/workflows/mobile-bundle-analysis.yml"
|
|
- ".github/actions/**"
|
|
pull_request:
|
|
branches:
|
|
- dev
|
|
- staging
|
|
- main
|
|
paths:
|
|
- "app/**"
|
|
- "packages/mobile-sdk-alpha/**"
|
|
- ".github/workflows/mobile-bundle-analysis.yml"
|
|
- ".github/actions/**"
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
analyze-android:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Read and sanitize Node.js version
|
|
shell: bash
|
|
run: |
|
|
if [ ! -f .nvmrc ] || [ -z "$(cat .nvmrc)" ]; then
|
|
echo "❌ .nvmrc is missing or empty"; exit 1;
|
|
fi
|
|
VERSION="$(tr -d '\r\n' < .nvmrc)"
|
|
VERSION="${VERSION#v}"
|
|
if ! [[ "$VERSION" =~ ^[0-9]+(\.[0-9]+){0,2}$ ]]; then
|
|
echo "Invalid .nvmrc content: '$VERSION'"; exit 1;
|
|
fi
|
|
echo "NODE_VERSION=$VERSION" >> "$GITHUB_ENV"
|
|
echo "NODE_VERSION_SANITIZED=${VERSION//\//-}" >> "$GITHUB_ENV"
|
|
- name: Use Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ env.NODE_VERSION }}
|
|
- name: Cache Yarn
|
|
uses: ./.github/actions/cache-yarn
|
|
with:
|
|
path: |
|
|
.yarn/cache
|
|
node_modules
|
|
app/node_modules
|
|
cache-version: node-${{ env.NODE_VERSION_SANITIZED }}
|
|
- name: Cache Bundler
|
|
uses: ./.github/actions/cache-bundler
|
|
with:
|
|
path: app/vendor/bundle
|
|
lock-file: app/Gemfile.lock
|
|
cache-version: ruby${{ env.RUBY_VERSION }}
|
|
- name: Cache Gradle
|
|
uses: ./.github/actions/cache-gradle
|
|
with:
|
|
path: |
|
|
~/.gradle/caches
|
|
~/.gradle/wrapper
|
|
- name: Generate token for self repositories
|
|
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false }}
|
|
uses: ./.github/actions/generate-github-token
|
|
id: github-token
|
|
with:
|
|
app-id: ${{ vars.GH_WORKFLOWS_CROSS_ACCESS_ID }}
|
|
private-key: ${{ secrets.GH_WORKFLOWS_CROSS_ACCESS_KEY }}
|
|
configure-netrc: "true"
|
|
- name: Install Mobile Dependencies
|
|
uses: ./.github/actions/mobile-setup
|
|
with:
|
|
app_path: ${{ env.APP_PATH }}
|
|
node_version: ${{ env.NODE_VERSION }}
|
|
ruby_version: ${{ env.RUBY_VERSION }}
|
|
workspace: ${{ env.WORKSPACE }}
|
|
env:
|
|
SELFXYZ_APP_TOKEN: ${{ steps.github-token.outputs.token }}
|
|
- name: Build dependencies
|
|
shell: bash
|
|
run: yarn workspace @selfxyz/common build
|
|
- name: Run Android analysis
|
|
run: yarn analyze:bundle:android
|
|
working-directory: ./app
|
|
|
|
analyze-ios:
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'push'
|
|
# runs-on: macos-latest-large
|
|
runs-on: namespace-profile-apple-silicon-6cpu
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Read and sanitize Node.js version
|
|
shell: bash
|
|
run: |
|
|
if [ ! -f .nvmrc ] || [ -z "$(cat .nvmrc)" ]; then
|
|
echo "❌ .nvmrc is missing or empty"; exit 1;
|
|
fi
|
|
VERSION="$(tr -d '\r\n' < .nvmrc)"
|
|
VERSION="${VERSION#v}"
|
|
if ! [[ "$VERSION" =~ ^[0-9]+(\.[0-9]+){0,2}$ ]]; then
|
|
echo "Invalid .nvmrc content: '$VERSION'"; exit 1;
|
|
fi
|
|
echo "NODE_VERSION=$VERSION" >> "$GITHUB_ENV"
|
|
echo "NODE_VERSION_SANITIZED=${VERSION//\//-}" >> "$GITHUB_ENV"
|
|
- name: Use Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ env.NODE_VERSION }}
|
|
- name: Cache Yarn
|
|
uses: ./.github/actions/cache-yarn
|
|
with:
|
|
path: |
|
|
.yarn/cache
|
|
node_modules
|
|
app/node_modules
|
|
cache-version: node-${{ env.NODE_VERSION_SANITIZED }}
|
|
- name: Cache Bundler
|
|
uses: ./.github/actions/cache-bundler
|
|
with:
|
|
path: app/vendor/bundle
|
|
lock-file: app/Gemfile.lock
|
|
cache-version: ruby${{ env.RUBY_VERSION }}
|
|
- name: Cache CocoaPods
|
|
uses: ./.github/actions/cache-pods
|
|
with:
|
|
path: app/ios/Pods
|
|
lockfile: app/ios/Podfile.lock
|
|
- name: Check Java installation
|
|
run: |
|
|
echo "INSTALL_JAVA=false" >> "$GITHUB_ENV"
|
|
if command -v java &> /dev/null && java -version &> /dev/null; then
|
|
echo "Java already installed: $(java -version 2>&1 | head -n 1)"
|
|
else
|
|
echo "Java not found or not working, will install..."
|
|
echo "INSTALL_JAVA=true" >> "$GITHUB_ENV"
|
|
fi
|
|
- name: Setup Java environment
|
|
if: env.INSTALL_JAVA == 'true'
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: "temurin"
|
|
java-version: ${{ env.JAVA_VERSION }}
|
|
- name: Generate token for self repositories
|
|
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false }}
|
|
uses: ./.github/actions/generate-github-token
|
|
id: github-token
|
|
with:
|
|
app-id: ${{ vars.GH_WORKFLOWS_CROSS_ACCESS_ID }}
|
|
private-key: ${{ secrets.GH_WORKFLOWS_CROSS_ACCESS_KEY }}
|
|
configure-netrc: "true"
|
|
- name: Install Mobile Dependencies
|
|
uses: ./.github/actions/mobile-setup
|
|
with:
|
|
app_path: ${{ env.APP_PATH }}
|
|
node_version: ${{ env.NODE_VERSION }}
|
|
ruby_version: ${{ env.RUBY_VERSION }}
|
|
workspace: ${{ env.WORKSPACE }}
|
|
env:
|
|
SELFXYZ_APP_TOKEN: ${{ steps.github-token.outputs.token }}
|
|
- name: Build dependencies
|
|
shell: bash
|
|
run: yarn workspace @selfxyz/common build
|
|
- name: Run iOS analysis
|
|
run: yarn analyze:bundle:ios
|
|
working-directory: ./app
|