Files
linea-monorepo/bridge-ui
Julien Marchand a001342170 chore: Initial commit
Co-authored-by: Franklin Delehelle <franklin.delehelle@odena.eu>
Co-authored-by: Alexandre Belling <alexandrebelling8@gmail.com>
Co-authored-by: Pedro Novais <jpvnovais@gmail.com>
Co-authored-by: Roman Vaseev <4833306+Filter94@users.noreply.github.com>
Co-authored-by: Bradley Bown <bradbown@googlemail.com>
Co-authored-by: Victorien Gauch <85494462+VGau@users.noreply.github.com>
Co-authored-by: Nikolai Golub <nikolai.golub@consensys.net>
Co-authored-by: The Dark Jester <thedarkjester@users.noreply.github.com>
Co-authored-by: jonesho <81145364+jonesho@users.noreply.github.com>
Co-authored-by: Gaurav Ahuja <gauravahuja9@gmail.com>
Co-authored-by: Azam Soleimanian <49027816+Soleimani193@users.noreply.github.com>
Co-authored-by: Andrei A <andrei.alexandru@consensys.net>
Co-authored-by: Arijit Dutta <37040536+arijitdutta67@users.noreply.github.com>
Co-authored-by: Gautam Botrel <gautam.botrel@gmail.com>
Co-authored-by: Ivo Kubjas <ivo.kubjas@consensys.net>
Co-authored-by: gusiri <dreamerty@postech.ac.kr>
Co-authored-by: FlorianHuc <florian.huc@gmail.com>
Co-authored-by: Arya Tabaie <arya.pourtabatabaie@gmail.com>
Co-authored-by: Julink <julien.fontanel@consensys.net>
Co-authored-by: Bogdan Ursu <bogdanursuoffice@gmail.com>
Co-authored-by: Jakub Trąd <jakubtrad@gmail.com>
Co-authored-by: Alessandro Sforzin <alessandro.sforzin@consensys.net>
Co-authored-by: Olivier Bégassat <olivier.begassat.cours@gmail.com>
Co-authored-by: Steve Huang <97596526+stevehuangc7s@users.noreply.github.com>
Co-authored-by: bkolad <blazejkolad@gmail.com>
Co-authored-by: fadyabuhatoum1 <139905934+fadyabuhatoum1@users.noreply.github.com>
Co-authored-by: Blas Rodriguez Irizar <rodrigblas@gmail.com>
Co-authored-by: Eduardo Andrade <eduardofandrade@gmail.com>
Co-authored-by: Ivo Kubjas <tsimmm@gmail.com>
Co-authored-by: Ludcour <ludovic.courcelas@consensys.net>
Co-authored-by: m4sterbunny <harrie.bickle@consensys.net>
Co-authored-by: Alex Panayi <145478258+alexandrospanayi@users.noreply.github.com>
Co-authored-by: Diana Borbe - ConsenSys <diana.borbe@consensys.net>
Co-authored-by: ThomasPiellard <thomas.piellard@gmail.com>
2024-07-31 18:17:20 +02:00
..
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00
2024-07-31 18:17:20 +02:00

Linea Bridge UI

Deployment

Config

The config file .env.production is used for public configuration variables.

Private configuration variables are store on GitHub Secrets.

Get a Frontend Tag

  • Retrieve an existing tag.
    • Get a Tag from GitHub Actions on Bridge UI Build and Publish job, Set Docker Tag action.
  • Or create a new tag.
    • Create a PR and merge the last version to develop branch, and get a Tag from GitHub Actions on Bridge UI Build and Publish job, Set Docker Tag action.

Example:

In Set Docker Tag

Run echo "DOCKER_TAG=${GITHUB_SHA:0:7}-$(date +%s)-bridge-ui-${{ steps.package-version.outputs.current-version }}" | tee $GITHUB_ENV
DOCKER_TAG=f3afe33-1705598198-bridge-ui-0.5.3

The Tag is f3afe33-1705598198-bridge-ui-0.5.3

Deployment on Dev

To publish updates to https://bridge.dev.linea.build/:

Update a Frontend Tag on Linea cluster

  1. Get a Frontend Tag
  2. Go to zk-apps-dev project, create a branch from main branch.
  3. Modify values.yaml by replacing it with the specified tag.
---
image:
  bridge_ui:
    repository: consensys/bridge-ui
    tag: f3afe33-1705598198-bridge-ui-0.5.3
    [...]
  • Push the branch and create a merge request

The update should appear on https://bridge.dev.linea.build/.

Check ArgoCD deployment

To check the deployment, go to: argocd.dev.zkevm.consensys.net

Access are in 1password

Deployment on Production

To publish updates to https://bridge.linea.build/:

Update a Frontend Tag on Linea cluster

  1. Get a Frontend Tag
  2. Go to zk-apps-prod project, create a branch from main branch.
  3. Modify values.yaml by replacing it with the specified tag.

Example:

---
image:
  bridge_ui:
    repository: consensys/bridge-ui
    tag: f3afe33-1705598198-bridge-ui-0.5.3
    [...]
  1. Push the branch and create a merge request

The update should appear on https://bridge.linea.build/.

Development

Run development server

To start Linea Bridge UI for development:

  1. Create a .env file by copying .env.template and add your private API keys.
cp .env.template .env
  1. Install packages:
npm i
  1. Start the development server, execute:
npm run dev

Frontend should be available at: http://localhost:3000

Build and test Docker image

Commands to test locally the Docker image used in production.

Build the image:

# build local image
docker build --build-arg ENV_FILE=.env.production -t linea/bridge-ui .

Replace with ENV_FILE=.env.production to test dev env.

Run the image:

# run local image
docker run -p 3000:3000 linea/bridge-ui

Frontend should be available at: http://localhost:3000

End to end tests

E2E tests are run in the CI but can also be run locally.
Make sure E2E_TEST_PRIVATE_KEY .env (The private key used needs to have some sepolia ETH, USDC and WETH to run the tests)

  1. Add NEXT_PUBLIC_WALLET_CONNECT_ID and NEXT_PUBLIC_INFURA_ID to your command line env
  2. Build the Bridge UI in local in a terminal: npm run build
  3. Run the command: npm test in another terminal

Config

The config variables are:

Var Description Values
NEXT_PUBLIC_MAINNET_L1_TOKEN_BRIDGE Linea Token Bridge on Ethereum mainnet 0x051F1D88f0aF5763fB888eC4378b4D8B29ea3319
NEXT_PUBLIC_MAINNET_LINEA_TOKEN_BRIDGE Linea Token Bridge on Linea mainnet 0x353012dc4a9A6cF55c941bADC267f82004A8ceB9
NEXT_PUBLIC_MAINNET_L1_MESSAGE_SERVICE Linea Message Service on Ethereum mainnet 0xd19d4B5d358258f05D7B411E21A1460D11B0876F
NEXT_PUBLIC_MAINNET_LINEA_MESSAGE_SERVICE Linea Message Service on Linea mainnet 0x508Ca82Df566dCD1B0DE8296e70a96332cD644ec
NEXT_PUBLIC_MAINNET_L1_USDC_BRIDGE Linea USDC Bridge on Ethereum mainnet 0x504A330327A089d8364C4ab3811Ee26976d388ce
NEXT_PUBLIC_MAINNET_LINEA_USDC_BRIDGE Linea USDC Bridge on Linea mainnet 0xA2Ee6Fce4ACB62D95448729cDb781e3BEb62504A
NEXT_PUBLIC_MAINNET_GAS_ESTIMATED Linea gas estimated on mainnet 100000
NEXT_PUBLIC_MAINNET_DEFAULT_GAS_LIMIT_SURPLUS Linea gas limit surplus on mainnet 6000
NEXT_PUBLIC_MAINNET_PROFIT_MARGIN Linea profit margin on mainnet 2
NEXT_PUBLIC_MAINNET_TOKEN_LIST Linea Token list on mainnet https://raw.githubusercontent.com/Consensys/linea-token-list/main/json/linea-mainnet-token-shortlist.json
NEXT_PUBLIC_SEPOLIA_L1_TOKEN_BRIDGE Linea Token Bridge on Ethereum Sepolia 0x5A0a48389BB0f12E5e017116c1105da97E129142
NEXT_PUBLIC_SEPOLIA_LINEA_TOKEN_BRIDGE Linea Token Bridge on Linea Sepolia 0x93DcAdf238932e6e6a85852caC89cBd71798F463
NEXT_PUBLIC_SEPOLIA_L1_MESSAGE_SERVICE Linea Message Service on Ethereum Sepolia 0xB218f8A4Bc926cF1cA7b3423c154a0D627Bdb7E5
NEXT_PUBLIC_SEPOLIA_LINEA_MESSAGE_SERVICE Linea Message Service on Linea Sepolia 0x971e727e956690b9957be6d51Ec16E73AcAC83A7
NEXT_PUBLIC_SEPOLIA_L1_USDC_BRIDGE Linea USDC Bridge on Ethereum Sepolia 0x32D123756d32d3eD6580935f8edF416e57b940f4
NEXT_PUBLIC_SEPOLIA_LINEA_USDC_BRIDGE Linea USDC Bridge on Linea Sepolia 0xDFa112375c9be9D124932b1d104b73f888655329
NEXT_PUBLIC_SEPOLIA_GAS_ESTIMATED Linea gas estimated on Sepolia 6100000000
NEXT_PUBLIC_SEPOLIA_DEFAULT_GAS_LIMIT_SURPLUS Linea gas limit surplus on Sepolia 6000
NEXT_PUBLIC_SEPOLIA_PROFIT_MARGIN Linea profit margin on Sepolia 2
NEXT_PUBLIC_SEPOLIA_TOKEN_LIST Linea Token list on Sepolia https://raw.githubusercontent.com/Consensys/linea-token-list/main/json/linea-sepolia-token-shortlist.json
NEXT_PUBLIC_WALLET_CONNECT_ID Wallet Connect Api Key
NEXT_PUBLIC_INFURA_ID Infura API Key
E2E_TEST_PRIVATE_KEY Private key to execute e2e on Sepolia
NEXT_PUBLIC_STORAGE_MIN_VERSION Local storage version for reseting the storage 0.4.14

About

This is a Next.js project bootstrapped with create-next-app.