Skip to content

Conversation

@tommasini
Copy link
Contributor

Description

Changelog

CHANGELOG entry:

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.

@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 15, 2026
@tommasini tommasini changed the title Proposal 1 yaml base config inheritance chore: Proposal 1 yaml base config inheritance Jan 15, 2026
@github-actions
Copy link
Contributor

🔍 Smart E2E Test Selection

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

All changes in this PR are related to CI/CD infrastructure and build configuration management:

  1. package.json: Only adds js-yaml as a dev dependency for parsing YAML config files in build scripts. This does not affect runtime application behavior.

  2. GitHub Workflows:

    • New build.yml workflow for building the mobile app with environment configuration
    • Modified push-eas-update.yml to use commit hash validation and the new setup-node-modules workflow
    • New setup-node-modules.yml reusable workflow for dependency setup
  3. Build Scripts:

    • validate-pr-commit.sh - Validates PR commits for OTA updates
    • merge-config.js - Merges YAML environment configs
    • set-secrets-from-config.js - Generates env var assignments from config
  4. Build Environment Configs:

    • New YAML-based configuration system for prod/rc/exp environments
    • Documentation in README.md

None of these changes affect:

  • Application source code in app/
  • E2E test infrastructure in e2e/
  • Any user-facing features or functionality
  • Runtime behavior of the application

These are purely CI/CD and build infrastructure changes that don't require E2E testing validation. The changes are well-isolated to the build/deployment pipeline and don't touch any code paths that would be exercised by E2E tests.

View GitHub Actions results

@tommasini tommasini closed this Jan 15, 2026
@github-actions github-actions bot locked and limited conversation to collaborators Jan 15, 2026
@tommasini tommasini reopened this Jan 15, 2026
- Add base.yml with shared configuration (servers, features, common secrets)
- Add environment-specific configs (prod, rc, exp) that extend base
- Add merge-config.js script to merge base + environment configs
- Add set-secrets-from-config.js helper for secret mapping
- Add build.yml workflow that uses merged configurations
- Add js-yaml dependency for YAML parsing
- Add README explaining the configuration structure

This proposal uses a base configuration file with inheritance pattern,
allowing shared values to be defined once and environment-specific
overrides to be minimal and clear.

Co-authored-by: tomas.santos <[email protected]>
@cursor cursor bot force-pushed the proposal-1-yaml-base-config-inheritance branch from daa9ce1 to 1f63bc8 Compare January 15, 2026 15:32
@github-actions github-actions bot added size-M and removed size-L labels Jan 15, 2026
cursoragent and others added 2 commits January 16, 2026 18:19
This MVP provides the minimal structure needed to start migrating
to the new YAML-based configuration system.

Changes:
- Keep base.yml with shared configuration
- Add prod.yml and rc.yml as example environments
- Simplify merge-config.js script
- Remove exp.yml (will be added during migration)
- Remove set-secrets script (not needed for MVP)
- Remove workflow file (will be added during migration)
- Update README to explain MVP scope

This MVP allows teams to:
1. Test the merge script locally
2. Start migrating configs incrementally
3. Extend with more environments/build types later

Next steps during migration:
- Add remaining environments (exp, beta, test, dev, e2e)
- Add build-types separation (main vs flask)
- Add combinations directory
- Integrate with GitHub Actions workflows
- Add code fencing configuration

Co-authored-by: tomas.santos <[email protected]>
Implements the complete hierarchical configuration system:

Structure:
- base.yml: Universal defaults shared by all builds
- build-types/: Common config for main and flask builds (code fencing, OAuth)
- environments/: Common config for each environment (prod, beta, rc, test, exp, dev, e2e)
- combinations/: Specific overrides for build-type + environment combinations

Features:
- Hierarchical inheritance: base → build-type → environment → combination
- Code fencing centralized in build-type configs
- All 12 combinations supported (main-prod, main-rc, flask-prod, etc.)
- Enhanced merge-config.js with code fencing resolution
- Updated metro.transform.js to use config (with fallback)
- GitHub Actions workflow integration
- Secret management helper script

Benefits:
- DRY: Shared configs defined once
- Maintainable: Update base to change all environments
- Scalable: Easy to add new environments/build types
- Single source of truth for all combinations
- Removes remapping logic from build.sh
- Centralizes code fencing configuration

Co-authored-by: tomas.santos <[email protected]>
@github-actions github-actions bot added size-L and removed size-M labels Jan 16, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

size-L team-mobile-platform Mobile Platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants