1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-21 17:37:01 +01:00
metamask-extension/builds.yml
2023-08-29 15:45:41 +02:00

249 lines
8.5 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
# Note: These build types should be kept in sync with the list in `.github/workflows/update-lavamoat-policies.yml`
buildTypes:
main:
features:
- build-main
- snaps
# 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
- ALLOW_LOCAL_SNAPS: false
- REQUIRE_SNAPS_ALLOWLIST: true
- IFRAME_EXECUTION_ENVIRONMENT_URL: https://execution.consensys.io/1.0.2/index.html
# Main build uses the default browser manifest
manifestOverrides: false
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/beta/manifest/
flask:
# Code surrounded using code fences for that feature
# will not be removed
features:
- snaps
- desktop
- build-flask
- keyring-snaps
- blockaid
env:
- INFURA_FLASK_PROJECT_ID
- SEGMENT_FLASK_WRITE_KEY
- ALLOW_LOCAL_SNAPS: true
- REQUIRE_SNAPS_ALLOWLIST: false
- IFRAME_EXECUTION_ENVIRONMENT_URL: https://execution.consensys.io/0.38.1-flask.1/index.html
- 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
manifestOverrides: ./app/build-types/flask/manifest/
desktop:
features:
- snaps
- desktop
- build-flask
- keyring-snaps
env:
- INFURA_FLASK_PROJECT_ID
- SEGMENT_FLASK_WRITE_KEY
- ALLOW_LOCAL_SNAPS: true
- REQUIRE_SNAPS_ALLOWLIST: false
- IFRAME_EXECUTION_ENVIRONMENT_URL: https://execution.consensys.io/0.38.1-flask.1/index.html
- 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
manifestOverrides: ./app/build-types/desktop/manifest/
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
- MMI_CONFIGURATION_SERVICE_URL: https://configuration.metamask-institutional.io/v1/configuration/default
- 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
manifestOverrides: ./app/build-types/mmi/manifest/
# 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
- IFRAME_EXECUTION_ENVIRONMENT_URL
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
blockaid:
env:
- BLOCKAID_FILE_CDN: null
- BLOCKAID_PUBLIC_KEY: 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}/**/institutional/**
build-flask:
assets:
- src: ./app/build-types/flask/images/
dest: images
- ./{app,shared,ui}/**/flask/**
keyring-snaps:
env:
- KEYRING_SNAPS_REGISTRY_URL: https://metamask.github.io/keyring-snaps-registry/prod/registry.json
assets:
- ./{app,shared,ui}/**/keyring-snaps/**
# 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
# TODO(ritave): Move ManifestV3 into a feature?
- ENABLE_MV3: false
- HARDWARE_WALLETS_MV3: false
# These are exclusively used for MV3
- APPLY_LAVAMOAT
- FILE_NAMES
# This variable is read by Trezor's source and breaks build if not included
- ASSET_PREFIX: null
###
# 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
- 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: ''
# Used by react-devtools-core
- EDITOR_URL: ''
# CDN for blockaid files
- BLOCKAID_FILE_CDN
# Blockaid public key for verifying signatures of data files downloaded from CDN
- BLOCKAID_PUBLIC_KEY
# Determines if feature flagged Multichain UI should be used
- MULTICHAIN: ''
###
# Meta variables
###
# Uses yaml anchors to DRY - https://juju.is/docs/sdk/yaml-anchors-and-aliases
- METAMASK_BUILD_TYPE_DEFAULT: *default