1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-23 02:10:12 +01:00
metamask-extension/builds.yml
Olaf Tomalka 95c37e1ba3
feat: add yaml feature management (#18125)
* feat: add yaml feature management

Add yaml feature file per build type.
Also add method to parse yaml and set
enabled features env to true. The build
process will then replace any process.env[feature]
that exists on the config by its value

* chore: add example for desktop

* Added initial draft of build features

* [TMP] Sync between computers

* Is able to succesfully build stable extension with snaps feature

* Removing var context from builds.yml

* Add asssets to builds.yml

* Minor bug fixes and removing debug logs

* [WIP] Test changes

* Removed TODOs

* Fix regession bug

Also
* remove debug logs
* merge Variables.set and Variables.setMany with an overload

* Fix build, lint and a bunch of issues

* Update LavaMoat policies

* Re-add desktop build type

* Fix some tests

* Fix desktop build

* Define some env variables used by MV3

* Fix lint

* Fix remove-fenced-code tests

* Fix README typo

* Move new code

* Fix missing asset copy

* Move Jest env setup

* Fix path for test after rebase

* Fix code fences

* Fix fencing and LavaMoat policies

* Fix MMI code-fencing after rebase

* Fix MMI code fencing after merge

* Fix more MMI code fencing

---------

Co-authored-by: cryptotavares <joao.tavares@consensys.net>
Co-authored-by: Frederik Bolding <frederik.bolding@gmail.com>
Co-authored-by: Brad Decker <bhdecker84@gmail.com>
2023-04-25 16:32:51 +02:00

215 lines
7.0 KiB
YAML

# TODO(ritave): Add support for environments (<root>/development/build/constants.js:@ENVIRONMENT)
# TODO(ritave): Add support for build targets (<root>/development/build/constants.js:@BUILD_TARGETS)
# TODO(ritave): Warn if not all of declared variables have been defined / used
# The priority order of variable definitions (most important to least important):
# <hardcoded build code>; <environmental variables>; .metamaskprodrc; .metamaskrc; builds.yml:.buildTypes.<type>.env; builds.yml:.features.<feature>.env; builds.yml:.env
# The build type to use when no build type provided in the cli
default: &default main
# Declaration of build types
# Each build type is composed of features, env variables and assets.
# Also known as productFlavors in Android lingo
buildTypes:
main:
features:
- build-main
# Additional env variables that are specific to this build
env:
- INFURA_PROD_PROJECT_ID
- SEGMENT_PROD_WRITE_KEY
- INFURA_ENV_KEY_REF: INFURA_PROD_PROJECT_ID
- SEGMENT_WRITE_KEY_REF: SEGMENT_PROD_WRITE_KEY
beta:
features:
- build-beta
env:
- INFURA_BETA_PROJECT_ID
- SEGMENT_BETA_WRITE_KEY
- INFURA_ENV_KEY_REF: INFURA_BETA_PROJECT_ID
- SEGMENT_WRITE_KEY_REF: SEGMENT_BETA_WRITE_KEY
# Modifies how the version is displayed.
# eg. instead of 10.25.0 -> 10.25.0-beta.2
isPrerelease: true
# Folder which contains overrides to browser manifests
manifestOverrides: ./app/build-types/mmi/manifest/
flask:
# Code surrounded using code fences for that feature
# will not be removed
features:
- snaps
- desktop
- build-flask
env:
- INFURA_FLASK_PROJECT_ID
- SEGMENT_FLASK_WRITE_KEY
- ALLOW_LOCAL_SNAPS: true
- REQUIRE_SNAPS_ALLOWLIST: false
- SUPPORT_LINK: https://metamask-flask.zendesk.com/hc
- SUPPORT_REQUEST_LINK: https://metamask-flask.zendesk.com/hc/en-us/requests/new
- INFURA_ENV_KEY_REF: INFURA_FLASK_PROJECT_ID
- SEGMENT_WRITE_KEY_REF: SEGMENT_FLASK_WRITE_KEY
isPrerelease: true
desktop:
features:
- snaps
- desktop
- build-flask
env:
- INFURA_FLASK_PROJECT_ID
- SEGMENT_FLASK_WRITE_KEY
- ALLOW_LOCAL_SNAPS: true
- REQUIRE_SNAPS_ALLOWLIST: false
- SUPPORT_LINK: https://metamask-flask.zendesk.com/hc
- SUPPORT_REQUEST_LINK: https://metamask-flask.zendesk.com/hc/en-us/requests/new
- INFURA_ENV_KEY_REF: INFURA_FLASK_PROJECT_ID
- SEGMENT_WRITE_KEY_REF: SEGMENT_FLASK_WRITE_KEY
isPrerelease: true
mmi:
features:
- build-mmi
env:
- INFURA_MMI_PROJECT_ID
- SEGMENT_MMI_WRITE_KEY
- INFURA_ENV_KEY_REF: INFURA_MMI_PROJECT_ID
- SEGMENT_WRITE_KEY_REF: SEGMENT_MMI_WRITE_KEY
- SUPPORT_LINK: https://mmi-support.zendesk.com/hc/en-us
- SUPPORT_REQUEST_LINK: https://mmi-support.zendesk.com/hc/en-us/requests/new
# For some reason, MMI uses this type of versioning
# Leaving it on for backwards compatibility
isPrerelease: true
# Build types are composed of a set of features.
# Each feature can have code fences that add new code
# as well declaring, defining and overriding env variables
features:
snaps:
# Each feature might have variables that only exist when built with that feature active
env:
# Whether to allow snaps from localhost - local://localhost:8080/snap.manifest.json
# Enabled in Flask, will be disabled in Main
- ALLOW_LOCAL_SNAPS
# Whether to verify that a snap can be installed using an allow list
- REQUIRE_SNAPS_ALLOWLIST
assets:
- ./{app,shared,ui}/**/snaps/**
desktop:
env:
- COMPATIBILITY_VERSION_EXTENSION: 1
- DISABLE_WEB_SOCKET_ENCRYPTION: false
- SKIP_OTP_PAIRING_FLOW: false
- WEB_SOCKET_PORT: null
###
# Build Type code extensions. Things like different support links, warning pages, banners
###
build-main:
build-beta:
assets:
# Assets that will be copied
- src: ./app/build-types/beta/images/
dest: images
# Assets that are exclusively included in this feature and ignored in others
# Supports globs
- ./{app,shared,ui}/**/beta/**
build-mmi:
assets:
- src: ./app/build-types/mmi/images/
dest: images
- ./{app,shared,ui}/**/mmi/**
build-flask:
assets:
- src: ./app/build-types/flask/images/
dest: images
- ./{app,shared,ui}/**/flask/**
# Env variables that are required for all types of builds
#
# env object supports both declarations (- FOO), and definitions (- FOO: BAR).
# Variables that were declared have to be defined somewhere in the load chain before usage
env:
- SWAPS_USE_DEV_APIS: false
- PORTFOLIO_URL: https://portfolio.metamask.io
- TOKEN_ALLOWANCE_IMPROVEMENTS: false
- TRANSACTION_SECURITY_PROVIDER: false
# The unlock password
- PASSWORD: null
# Also see METAMASK_DEBUG and NODE_DEBUG
- DEBUG: null
- SUPPORT_LINK: https://support.metamask.io
- SUPPORT_REQUEST_LINK: https://metamask.zendesk.com/hc/en-us
- SKIP_BACKGROUND_INITIALIZATION: false
- MULTICHAIN: false
# TODO(ritave): Move ManifestV3 into a feature?
- ENABLE_MV3: false
- HARDWARE_WALLETS_MV3: false
# These are exclusively used for MV3
- APPLY_LAVAMOAT
- FILE_NAMES
###
# API keys to 3rd party services
###
- PUBNUB_PUB_KEY: null
- PUBNUB_SUB_KEY: null
- SEGMENT_HOST: null
- SENTRY_DSN: null
- SENTRY_DSN_DEV: null
- OPENSEA_KEY: null
- ETHERSCAN_KEY: null
# also INFURA_PROJECT_ID below
###
# Build system backwards compatibility
###
- INFURA_ENV_KEY_REF
- SEGMENT_WRITE_KEY_REF
###
# Variables that are modified with hardcoded code
###
# Used for debugging changes to the phishing warning page.
# Modified in <root>/development/build/scripts.js:@getPhishingWarningPageUrl
- PHISHING_WARNING_PAGE_URL: null
# Modified in <root>/development/build/scripts.js:@getInfuraProjectId
- INFURA_PROJECT_ID
# Modified in <root>/development/build/scripts.js:@getSegmentWriteKey
- SEGMENT_WRITE_KEY: ''
# Modified in <root>/development/build/scripts.js:@setEnvironmentVariables
# Also see DEBUG and NODE_DEBUG
- METAMASK_DEBUG: false
# Modified in <root>/development/build/scripts.js:@setEnvironmentVariables
- ICON_NAMES
# Modified in <root>/development/build/scripts.js:@setEnvironmentVariables
- IN_TEST
# Modified in <root>/development/build/scripts.js:@setEnvironmentVariables
- METAMASK_ENVIRONMENT
# Modified in <root>/development/build/scripts.js:@setEnvironmentVariables
- METAMASK_VERSION
# Modified in <root>/development/build/scripts.js:@setEnvironmentVariables
- METAMASK_BUILD_TYPE
# Modified in <root>/development/build/scripts.js:@setEnvironmentVariables
- NODE_ENV
# Defined by node itself
# For the purposes of the build system we define it as empty below
# if it's not inside process.env
# Also see DEBUG and METAMASK_DEBUG
- NODE_DEBUG: ''
###
# Meta variables
###
# Uses yaml anchors to DRY - https://juju.is/docs/sdk/yaml-anchors-and-aliases
- METAMASK_BUILD_TYPE_DEFAULT: *default