From fc2a1445ea1088e9c55708a8e52d097f86f733b9 Mon Sep 17 00:00:00 2001 From: Nabarun Date: Wed, 29 Nov 2023 17:42:40 +0530 Subject: [PATCH 01/25] Create uniswap-frontend stack --- .../data/stacks/uniswap-frontend/README.md | 15 +++++++++++++++ .../data/stacks/uniswap-frontend/stack.yml | 10 ++++++++++ 2 files changed, 25 insertions(+) create mode 100644 stack_orchestrator/data/stacks/uniswap-frontend/README.md create mode 100644 stack_orchestrator/data/stacks/uniswap-frontend/stack.yml diff --git a/stack_orchestrator/data/stacks/uniswap-frontend/README.md b/stack_orchestrator/data/stacks/uniswap-frontend/README.md new file mode 100644 index 00000000..d567e126 --- /dev/null +++ b/stack_orchestrator/data/stacks/uniswap-frontend/README.md @@ -0,0 +1,15 @@ +# self-hosted uniswap frontend + +Build and deploy: + +- Uniswap front end +- Urbit + + +``` +laconic-so --stack uniswap-frontend setup-repositories + +laconic-so --stack uniswap-frontend build-containers + +laconic-so --stack uniswap-frontend deploy up +``` diff --git a/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml b/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml new file mode 100644 index 00000000..e7097385 --- /dev/null +++ b/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml @@ -0,0 +1,10 @@ +version: "0.1" +name: urbit-frontend +repos: + # Uniswap frontend + - github.com/cerc-io/uniswap-interface +containers: + - cerc/uniswap-interface + # TODO: Add container foi urbit +# pods: + # TODO: Add compose file and pods -- 2.45.2 From e935cf011c776b4fb8abc7deb84c6842d5079827 Mon Sep 17 00:00:00 2001 From: Nabarun Date: Wed, 29 Nov 2023 19:05:32 +0530 Subject: [PATCH 02/25] Add stack for building uniswap frontend app --- .../docker-compose-uniswap-interface.yml | 23 +++++++++++++++++++ .../data/config/uniswap-frontend/build.sh | 14 +++++++++++ .../cerc-uniswap-interface/Dockerfile | 10 ++++++++ .../cerc-uniswap-interface/build.sh | 8 +++++++ .../data/container-image-list.txt | 1 + stack_orchestrator/data/repository-list.txt | 1 + .../data/stacks/uniswap-frontend/stack.yml | 12 ++++++---- 7 files changed, 64 insertions(+), 5 deletions(-) create mode 100644 stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml create mode 100755 stack_orchestrator/data/config/uniswap-frontend/build.sh create mode 100644 stack_orchestrator/data/container-build/cerc-uniswap-interface/Dockerfile create mode 100755 stack_orchestrator/data/container-build/cerc-uniswap-interface/build.sh diff --git a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml new file mode 100644 index 00000000..4df1a89c --- /dev/null +++ b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml @@ -0,0 +1,23 @@ +version: "3.2" + +services: + uniswap-interface: + image: cerc/uniswap-interface:local + restart: unless-stopped + environment: + - REACT_APP_INFURA_KEY=${CERC_INFURA_KEY} + command: ["./build.sh"] + volumes: + - uniswap_build:/app/build + - ../config/uniswap-frontend/build.sh:/app/build.sh + ports: + - "3000" + healthcheck: + test: ["CMD", "nc", "-vz", "localhost", "3000"] + interval: 20s + timeout: 5s + retries: 15 + start_period: 5s + +volumes: + uniswap_build: diff --git a/stack_orchestrator/data/config/uniswap-frontend/build.sh b/stack_orchestrator/data/config/uniswap-frontend/build.sh new file mode 100755 index 00000000..e1ca3fbd --- /dev/null +++ b/stack_orchestrator/data/config/uniswap-frontend/build.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -e +if [ -n "$CERC_SCRIPT_DEBUG" ]; then + set -x +fi + +yarn build + +# Create symlink to host built files with correct URL path +mkdir ./urbit/apps +ln -s ./build/ ./urbit/apps/uniswap + +yarn serve build -s -l 3000 diff --git a/stack_orchestrator/data/container-build/cerc-uniswap-interface/Dockerfile b/stack_orchestrator/data/container-build/cerc-uniswap-interface/Dockerfile new file mode 100644 index 00000000..59804896 --- /dev/null +++ b/stack_orchestrator/data/container-build/cerc-uniswap-interface/Dockerfile @@ -0,0 +1,10 @@ +FROM node:18.17.1-alpine3.18 + +RUN apk --update --no-cache add git make alpine-sdk bash + +WORKDIR /app + +COPY . . + +RUN echo "Building uniswap-interface" && \ + yarn diff --git a/stack_orchestrator/data/container-build/cerc-uniswap-interface/build.sh b/stack_orchestrator/data/container-build/cerc-uniswap-interface/build.sh new file mode 100755 index 00000000..af1971b5 --- /dev/null +++ b/stack_orchestrator/data/container-build/cerc-uniswap-interface/build.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Build the uniswap-interface image +source ${CERC_CONTAINER_BASE_DIR}/build-base.sh + +# See: https://stackoverflow.com/a/246128/1701505 +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + +docker build -t cerc/uniswap-interface:local -f ${SCRIPT_DIR}/Dockerfile ${build_command_args} ${CERC_REPO_BASE_DIR}/uniswap-interface diff --git a/stack_orchestrator/data/container-image-list.txt b/stack_orchestrator/data/container-image-list.txt index 41dd8b21..fd295be5 100644 --- a/stack_orchestrator/data/container-image-list.txt +++ b/stack_orchestrator/data/container-image-list.txt @@ -59,3 +59,4 @@ cerc/ponder cerc/nitro-rpc-client cerc/watcher-merkl-sushiswap-v3 cerc/watcher-sushiswap-v3 +cerc/uniswap-interface diff --git a/stack_orchestrator/data/repository-list.txt b/stack_orchestrator/data/repository-list.txt index 192a831e..cddaccce 100644 --- a/stack_orchestrator/data/repository-list.txt +++ b/stack_orchestrator/data/repository-list.txt @@ -49,3 +49,4 @@ github.com/cerc-io/mobymask-snap github.com/cerc-io/ponder github.com/cerc-io/merkl-sushiswap-v3-watcher-ts github.com/cerc-io/sushiswap-v3-watcher-ts +github.com/cerc-io/uniswap-interface diff --git a/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml b/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml index e7097385..df6396b2 100644 --- a/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml +++ b/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml @@ -1,10 +1,12 @@ version: "0.1" name: urbit-frontend repos: - # Uniswap frontend - - github.com/cerc-io/uniswap-interface + # Uniswap interface + # TODO: Use release + - github.com/cerc-io/uniswap-interface@pm-urbit-hosting containers: - cerc/uniswap-interface - # TODO: Add container foi urbit -# pods: - # TODO: Add compose file and pods + # TODO: Add container for urbit +pods: + - uniswap-interface + # TODO: Add pod for urbit -- 2.45.2 From 4461137948223a9dc5aed500e05ce80ddcd0a78b Mon Sep 17 00:00:00 2001 From: Prathamesh Musale Date: Wed, 29 Nov 2023 20:01:30 +0530 Subject: [PATCH 03/25] Add a container for Urbit fake ship --- .../data/compose/docker-compose-urbit.yml | 19 +++++++++++++++++++ .../data/stacks/uniswap-frontend/stack.yml | 1 + 2 files changed, 20 insertions(+) create mode 100644 stack_orchestrator/data/compose/docker-compose-urbit.yml diff --git a/stack_orchestrator/data/compose/docker-compose-urbit.yml b/stack_orchestrator/data/compose/docker-compose-urbit.yml new file mode 100644 index 00000000..8e4a9f1c --- /dev/null +++ b/stack_orchestrator/data/compose/docker-compose-urbit.yml @@ -0,0 +1,19 @@ +version: '3.7' + +services: + urbit-fake-ship: + restart: unless-stopped + image: tloncorp/vere + entrypoint: ["bash", "-c", "urbit -t -F zod"] + ports: + - "8080:80" + - "12321:12321" + healthcheck: + test: ["CMD", "nc", "-v", "localhost", "80"] + interval: 20s + timeout: 5s + retries: 15 + start_period: 10s + +# volumes: + # pier: diff --git a/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml b/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml index df6396b2..e3b9e9f3 100644 --- a/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml +++ b/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml @@ -9,4 +9,5 @@ containers: # TODO: Add container for urbit pods: - uniswap-interface + - urbit # TODO: Add pod for urbit -- 2.45.2 From 77c911c03b4e0b25826c68a3f2d3a28688affc7e Mon Sep 17 00:00:00 2001 From: Nabarun Date: Wed, 29 Nov 2023 20:06:59 +0530 Subject: [PATCH 04/25] Update with deployment command --- .../data/config/uniswap-frontend/build.sh | 6 +- .../data/stacks/uniswap-frontend/README.md | 78 +++++++++++++++++-- .../data/stacks/uniswap-frontend/stack.yml | 2 +- 3 files changed, 76 insertions(+), 10 deletions(-) diff --git a/stack_orchestrator/data/config/uniswap-frontend/build.sh b/stack_orchestrator/data/config/uniswap-frontend/build.sh index e1ca3fbd..a258ab54 100755 --- a/stack_orchestrator/data/config/uniswap-frontend/build.sh +++ b/stack_orchestrator/data/config/uniswap-frontend/build.sh @@ -8,7 +8,7 @@ fi yarn build # Create symlink to host built files with correct URL path -mkdir ./urbit/apps -ln -s ./build/ ./urbit/apps/uniswap +mkdir -p /app/urbit/apps +ln -s /app/build /app/urbit/apps/uniswap -yarn serve build -s -l 3000 +node_modules/.bin/serve urbit -s -l 3000 diff --git a/stack_orchestrator/data/stacks/uniswap-frontend/README.md b/stack_orchestrator/data/stacks/uniswap-frontend/README.md index d567e126..a4508a66 100644 --- a/stack_orchestrator/data/stacks/uniswap-frontend/README.md +++ b/stack_orchestrator/data/stacks/uniswap-frontend/README.md @@ -1,15 +1,81 @@ # self-hosted uniswap frontend +Instructions to setup and deploy uniswap app on urbit + Build and deploy: -- Uniswap front end - Urbit +- Uniswap app - -``` +## Setup + +Clone required repositories: + +```bash laconic-so --stack uniswap-frontend setup-repositories -laconic-so --stack uniswap-frontend build-containers - -laconic-so --stack uniswap-frontend deploy up +# If this throws an error as a result of being already checked out to a branch/tag in a repo, remove the repositories mentioned below and re-run the command +``` + +Build the container images: + +```bash +laconic-so --stack uniswap-frontend build-containers +``` + +## Create a deployment + +First, create a spec file for the deployment, which will map the stack's ports and volumes to the host: +```bash +laconic-so --stack uniswap-frontend deploy init --output uniswap-frontend-spec.yml +``` + +### Ports + +Edit `network` in spec file to map container ports to same ports in host + + + +### Data volumes +Container data volumes are bind-mounted to specified paths in the host filesystem. +The default setup (generated by `laconic-so deploy init`) places the volumes in the `./data` subdirectory of the deployment directory. The default mappings can be customized by editing the "spec" file generated by `laconic-so deploy init`. + +--- + +Once you've made any needed changes to the spec file, create a deployment from it: +```bash +laconic-so --stack uniswap-frontend deploy create --spec-file uniswap-frontend-spec.yml --deployment-dir uniswap-frontend-deployment +``` + +## Set env variables + +Inside the deployment directory, open the file `config.env` and add variable for infura key : + + ```bash + # External RPC endpoints + # https://docs.infura.io/getting-started#2-create-an-api-key + CERC_INFURA_KEY= + ``` + +## Start the stack + +Start the deployment: +```bash +laconic-so deployment --dir uniswap-frontend-deployment start +``` + +* List and check the health status of all the containers using `docker ps` and wait for them to be `healthy` + +## Clean up + +To stop all azimuth services running in the background, while preserving chain data: + +```bash +laconic-so deployment --dir uniswap-frontend-deployment stop +``` + +To stop all azimuth services and also delete data: + +```bash +laconic-so deployment --dir uniswap-frontend-deployment stop --delete-volumes ``` diff --git a/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml b/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml index e3b9e9f3..476fd3b3 100644 --- a/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml +++ b/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml @@ -1,5 +1,5 @@ version: "0.1" -name: urbit-frontend +name: uniswap-frontend repos: # Uniswap interface # TODO: Use release -- 2.45.2 From 156e3611a0191f320ffc8f752bf20de3f2e3e049 Mon Sep 17 00:00:00 2001 From: Prathamesh Musale Date: Thu, 30 Nov 2023 10:40:45 +0530 Subject: [PATCH 05/25] Add a service for uniswap app deployment to urbit --- .../compose/docker-compose-uniswap-interface.yml | 15 +++++++++++++++ .../data/compose/docker-compose-urbit.yml | 6 ++++-- .../data/config/uniswap-frontend/build.sh | 6 +++--- .../config/uniswap-frontend/deploy-to-urbit.sh | 14 ++++++++++++++ .../cerc-uniswap-urbit-deployment/Dockerfile | 7 +++++++ .../cerc-uniswap-urbit-deployment/build.sh | 9 +++++++++ .../data/stacks/uniswap-frontend/README.md | 1 + .../data/stacks/uniswap-frontend/stack.yml | 1 + 8 files changed, 54 insertions(+), 5 deletions(-) create mode 100644 stack_orchestrator/data/config/uniswap-frontend/deploy-to-urbit.sh create mode 100644 stack_orchestrator/data/container-build/cerc-uniswap-urbit-deployment/Dockerfile create mode 100755 stack_orchestrator/data/container-build/cerc-uniswap-urbit-deployment/build.sh diff --git a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml index 4df1a89c..77c22c7f 100644 --- a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml +++ b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml @@ -19,5 +19,20 @@ services: retries: 15 start_period: 5s + uniswap-urbit-deployment: + image: cerc/uniswap-urbit-deployment:local + restart: unless-stopped + depends_on: + uniswap-interface: + condition: service_completed_successfully + # environment: + # - REACT_APP_INFURA_KEY=${CERC_INFURA_KEY} + command: ["./deploy-to-urbit.sh"] + volumes: + - uniswap_build:/app/build + - pier_data: /app/pier + - ../config/uniswap-frontend/deploy-to-urbit.sh:/app/deploy-to-urbit.sh + volumes: uniswap_build: + pier_data: diff --git a/stack_orchestrator/data/compose/docker-compose-urbit.yml b/stack_orchestrator/data/compose/docker-compose-urbit.yml index 8e4a9f1c..aee61a9e 100644 --- a/stack_orchestrator/data/compose/docker-compose-urbit.yml +++ b/stack_orchestrator/data/compose/docker-compose-urbit.yml @@ -5,6 +5,8 @@ services: restart: unless-stopped image: tloncorp/vere entrypoint: ["bash", "-c", "urbit -t -F zod"] + volumes: + - pier_data:/urbit/zod/ ports: - "8080:80" - "12321:12321" @@ -15,5 +17,5 @@ services: retries: 15 start_period: 10s -# volumes: - # pier: +volumes: + pier_data: diff --git a/stack_orchestrator/data/config/uniswap-frontend/build.sh b/stack_orchestrator/data/config/uniswap-frontend/build.sh index a258ab54..16c517ea 100755 --- a/stack_orchestrator/data/config/uniswap-frontend/build.sh +++ b/stack_orchestrator/data/config/uniswap-frontend/build.sh @@ -8,7 +8,7 @@ fi yarn build # Create symlink to host built files with correct URL path -mkdir -p /app/urbit/apps -ln -s /app/build /app/urbit/apps/uniswap +# mkdir -p /app/urbit/apps +# ln -s /app/build /app/urbit/apps/uniswap -node_modules/.bin/serve urbit -s -l 3000 +# node_modules/.bin/serve urbit -s -l 3000 diff --git a/stack_orchestrator/data/config/uniswap-frontend/deploy-to-urbit.sh b/stack_orchestrator/data/config/uniswap-frontend/deploy-to-urbit.sh new file mode 100644 index 00000000..56ab2445 --- /dev/null +++ b/stack_orchestrator/data/config/uniswap-frontend/deploy-to-urbit.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -e +if [ -n "$CERC_SCRIPT_DEBUG" ]; then + set -x +fi + +tail -f /dev/null + +# TODO: +# Take urbit endpoint from env +# Check if urbit endpoint is up +# Fire curl requests to create/mount a uniswap desk +# Copy over build to desk data dir diff --git a/stack_orchestrator/data/container-build/cerc-uniswap-urbit-deployment/Dockerfile b/stack_orchestrator/data/container-build/cerc-uniswap-urbit-deployment/Dockerfile new file mode 100644 index 00000000..7a3ca9b7 --- /dev/null +++ b/stack_orchestrator/data/container-build/cerc-uniswap-urbit-deployment/Dockerfile @@ -0,0 +1,7 @@ +FROM python:3.13.0a2-alpine3.18 + +RUN apk --update --no-cache add alpine-sdk jq bash curl wget + +WORKDIR /app + +ENTRYPOINT [ "bash" ] diff --git a/stack_orchestrator/data/container-build/cerc-uniswap-urbit-deployment/build.sh b/stack_orchestrator/data/container-build/cerc-uniswap-urbit-deployment/build.sh new file mode 100755 index 00000000..65192d95 --- /dev/null +++ b/stack_orchestrator/data/container-build/cerc-uniswap-urbit-deployment/build.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# Build the uniswap-urbit-deployment image + +source ${CERC_CONTAINER_BASE_DIR}/build-base.sh + +# See: https://stackoverflow.com/a/246128/1701505 +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + +docker build -t cerc/uniswap-urbit-deployment:local -f ${SCRIPT_DIR}/Dockerfile ${build_command_args} diff --git a/stack_orchestrator/data/stacks/uniswap-frontend/README.md b/stack_orchestrator/data/stacks/uniswap-frontend/README.md index a4508a66..17a91886 100644 --- a/stack_orchestrator/data/stacks/uniswap-frontend/README.md +++ b/stack_orchestrator/data/stacks/uniswap-frontend/README.md @@ -26,6 +26,7 @@ laconic-so --stack uniswap-frontend build-containers ## Create a deployment First, create a spec file for the deployment, which will map the stack's ports and volumes to the host: + ```bash laconic-so --stack uniswap-frontend deploy init --output uniswap-frontend-spec.yml ``` diff --git a/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml b/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml index 476fd3b3..061d52a6 100644 --- a/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml +++ b/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml @@ -6,6 +6,7 @@ repos: - github.com/cerc-io/uniswap-interface@pm-urbit-hosting containers: - cerc/uniswap-interface + - cerc/uniswap-urbit-deployment # TODO: Add container for urbit pods: - uniswap-interface -- 2.45.2 From 92c86b2cf40745a7774ba84c093257d919d07770 Mon Sep 17 00:00:00 2001 From: Prathamesh Musale Date: Thu, 30 Nov 2023 11:54:52 +0530 Subject: [PATCH 06/25] Use a script to start urbit ship to handle restarts --- .../docker-compose-uniswap-interface.yml | 4 ++-- .../data/compose/docker-compose-urbit.yml | 7 ++++--- .../config/uniswap-frontend/deploy-to-urbit.sh | 0 .../config/uniswap-frontend/run-urbit-ship.sh | 17 +++++++++++++++++ .../cerc-uniswap-urbit-deployment/build.sh | 2 +- 5 files changed, 24 insertions(+), 6 deletions(-) mode change 100644 => 100755 stack_orchestrator/data/config/uniswap-frontend/deploy-to-urbit.sh create mode 100755 stack_orchestrator/data/config/uniswap-frontend/run-urbit-ship.sh diff --git a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml index 77c22c7f..5025a85d 100644 --- a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml +++ b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml @@ -30,9 +30,9 @@ services: command: ["./deploy-to-urbit.sh"] volumes: - uniswap_build:/app/build - - pier_data: /app/pier + - urbit_data:/urbit - ../config/uniswap-frontend/deploy-to-urbit.sh:/app/deploy-to-urbit.sh volumes: uniswap_build: - pier_data: + urbit_data: diff --git a/stack_orchestrator/data/compose/docker-compose-urbit.yml b/stack_orchestrator/data/compose/docker-compose-urbit.yml index aee61a9e..71244da2 100644 --- a/stack_orchestrator/data/compose/docker-compose-urbit.yml +++ b/stack_orchestrator/data/compose/docker-compose-urbit.yml @@ -4,9 +4,10 @@ services: urbit-fake-ship: restart: unless-stopped image: tloncorp/vere - entrypoint: ["bash", "-c", "urbit -t -F zod"] + entrypoint: ["bash", "-c", "./run-urbit-ship.sh"] volumes: - - pier_data:/urbit/zod/ + - urbit_data:/urbit + - ../config/uniswap-frontend/run-urbit-ship.sh:/urbit/run-urbit-ship.sh ports: - "8080:80" - "12321:12321" @@ -18,4 +19,4 @@ services: start_period: 10s volumes: - pier_data: + urbit_data: diff --git a/stack_orchestrator/data/config/uniswap-frontend/deploy-to-urbit.sh b/stack_orchestrator/data/config/uniswap-frontend/deploy-to-urbit.sh old mode 100644 new mode 100755 diff --git a/stack_orchestrator/data/config/uniswap-frontend/run-urbit-ship.sh b/stack_orchestrator/data/config/uniswap-frontend/run-urbit-ship.sh new file mode 100755 index 00000000..bb3445dd --- /dev/null +++ b/stack_orchestrator/data/config/uniswap-frontend/run-urbit-ship.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +set -e +if [ -n "$CERC_SCRIPT_DEBUG" ]; then + set -x +fi + +pier_dir="/urbit/zod" + +# Check if the directory exists +if [ -d "$pier_dir" ]; then + echo "Pier directory already exists, rebooting..." + urbit -t zod +else + echo "Creating a new fake ship..." + urbit -t -F zod +fi diff --git a/stack_orchestrator/data/container-build/cerc-uniswap-urbit-deployment/build.sh b/stack_orchestrator/data/container-build/cerc-uniswap-urbit-deployment/build.sh index 65192d95..c8921f19 100755 --- a/stack_orchestrator/data/container-build/cerc-uniswap-urbit-deployment/build.sh +++ b/stack_orchestrator/data/container-build/cerc-uniswap-urbit-deployment/build.sh @@ -6,4 +6,4 @@ source ${CERC_CONTAINER_BASE_DIR}/build-base.sh # See: https://stackoverflow.com/a/246128/1701505 SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -docker build -t cerc/uniswap-urbit-deployment:local -f ${SCRIPT_DIR}/Dockerfile ${build_command_args} +docker build -t cerc/uniswap-urbit-deployment:local -f ${SCRIPT_DIR}/Dockerfile ${build_command_args} ${SCRIPT_DIR} -- 2.45.2 From 72d48df24d630838ff7f427ba8308e0fbfb3421b Mon Sep 17 00:00:00 2001 From: Nabarun Date: Thu, 30 Nov 2023 11:24:43 +0530 Subject: [PATCH 07/25] Rename stack name to uniswap-urbit-app --- .../compose/docker-compose-uniswap-interface.yml | 4 ++-- .../build.sh | 0 .../deploy-to-urbit.sh | 0 .../run-urbit-ship.sh | 0 .../data/stacks/uniswap-frontend/README.md | 14 +++++++------- .../data/stacks/uniswap-frontend/stack.yml | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) rename stack_orchestrator/data/config/{uniswap-frontend => uniswap-interface}/build.sh (100%) rename stack_orchestrator/data/config/{uniswap-frontend => uniswap-interface}/deploy-to-urbit.sh (100%) rename stack_orchestrator/data/config/{uniswap-frontend => uniswap-interface}/run-urbit-ship.sh (100%) diff --git a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml index 5025a85d..6e53317e 100644 --- a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml +++ b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml @@ -9,7 +9,7 @@ services: command: ["./build.sh"] volumes: - uniswap_build:/app/build - - ../config/uniswap-frontend/build.sh:/app/build.sh + - ../config/uniswap-interface/build.sh:/app/build.sh ports: - "3000" healthcheck: @@ -31,7 +31,7 @@ services: volumes: - uniswap_build:/app/build - urbit_data:/urbit - - ../config/uniswap-frontend/deploy-to-urbit.sh:/app/deploy-to-urbit.sh + - ../config/uniswap-interface/deploy-to-urbit.sh:/app/deploy-to-urbit.sh volumes: uniswap_build: diff --git a/stack_orchestrator/data/config/uniswap-frontend/build.sh b/stack_orchestrator/data/config/uniswap-interface/build.sh similarity index 100% rename from stack_orchestrator/data/config/uniswap-frontend/build.sh rename to stack_orchestrator/data/config/uniswap-interface/build.sh diff --git a/stack_orchestrator/data/config/uniswap-frontend/deploy-to-urbit.sh b/stack_orchestrator/data/config/uniswap-interface/deploy-to-urbit.sh similarity index 100% rename from stack_orchestrator/data/config/uniswap-frontend/deploy-to-urbit.sh rename to stack_orchestrator/data/config/uniswap-interface/deploy-to-urbit.sh diff --git a/stack_orchestrator/data/config/uniswap-frontend/run-urbit-ship.sh b/stack_orchestrator/data/config/uniswap-interface/run-urbit-ship.sh similarity index 100% rename from stack_orchestrator/data/config/uniswap-frontend/run-urbit-ship.sh rename to stack_orchestrator/data/config/uniswap-interface/run-urbit-ship.sh diff --git a/stack_orchestrator/data/stacks/uniswap-frontend/README.md b/stack_orchestrator/data/stacks/uniswap-frontend/README.md index 17a91886..504f5766 100644 --- a/stack_orchestrator/data/stacks/uniswap-frontend/README.md +++ b/stack_orchestrator/data/stacks/uniswap-frontend/README.md @@ -12,7 +12,7 @@ Build and deploy: Clone required repositories: ```bash -laconic-so --stack uniswap-frontend setup-repositories +laconic-so --stack uniswap-urbit-app setup-repositories # If this throws an error as a result of being already checked out to a branch/tag in a repo, remove the repositories mentioned below and re-run the command ``` @@ -20,7 +20,7 @@ laconic-so --stack uniswap-frontend setup-repositories Build the container images: ```bash -laconic-so --stack uniswap-frontend build-containers +laconic-so --stack uniswap-urbit-app build-containers ``` ## Create a deployment @@ -28,7 +28,7 @@ laconic-so --stack uniswap-frontend build-containers First, create a spec file for the deployment, which will map the stack's ports and volumes to the host: ```bash -laconic-so --stack uniswap-frontend deploy init --output uniswap-frontend-spec.yml +laconic-so --stack uniswap-urbit-app deploy init --output uniswap-urbit-app-spec.yml ``` ### Ports @@ -45,7 +45,7 @@ The default setup (generated by `laconic-so deploy init`) places the volumes in Once you've made any needed changes to the spec file, create a deployment from it: ```bash -laconic-so --stack uniswap-frontend deploy create --spec-file uniswap-frontend-spec.yml --deployment-dir uniswap-frontend-deployment +laconic-so --stack uniswap-urbit-app deploy create --spec-file uniswap-urbit-app-spec.yml --deployment-dir uniswap-urbit-app-deployment ``` ## Set env variables @@ -62,7 +62,7 @@ Inside the deployment directory, open the file `config.env` and add variable for Start the deployment: ```bash -laconic-so deployment --dir uniswap-frontend-deployment start +laconic-so deployment --dir uniswap-urbit-app-deployment start ``` * List and check the health status of all the containers using `docker ps` and wait for them to be `healthy` @@ -72,11 +72,11 @@ laconic-so deployment --dir uniswap-frontend-deployment start To stop all azimuth services running in the background, while preserving chain data: ```bash -laconic-so deployment --dir uniswap-frontend-deployment stop +laconic-so deployment --dir uniswap-urbit-app-deployment stop ``` To stop all azimuth services and also delete data: ```bash -laconic-so deployment --dir uniswap-frontend-deployment stop --delete-volumes +laconic-so deployment --dir uniswap-urbit-app-deployment stop --delete-volumes ``` diff --git a/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml b/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml index 061d52a6..16e94786 100644 --- a/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml +++ b/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml @@ -1,5 +1,5 @@ version: "0.1" -name: uniswap-frontend +name: uniswap-urbit-app repos: # Uniswap interface # TODO: Use release -- 2.45.2 From 8a00891a53fb3cfc55f8d60ea715f0d059bf482e Mon Sep 17 00:00:00 2001 From: Nabarun Date: Thu, 30 Nov 2023 11:58:06 +0530 Subject: [PATCH 08/25] Rename build.sh to build-app.sh and check if build already exists --- .../data/compose/docker-compose-uniswap-interface.yml | 4 ++-- .../config/uniswap-interface/{build.sh => build-app.sh} | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) rename stack_orchestrator/data/config/uniswap-interface/{build.sh => build-app.sh} (62%) diff --git a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml index 6e53317e..9bf7888d 100644 --- a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml +++ b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml @@ -6,10 +6,10 @@ services: restart: unless-stopped environment: - REACT_APP_INFURA_KEY=${CERC_INFURA_KEY} - command: ["./build.sh"] + command: ["./build-app.sh"] volumes: - uniswap_build:/app/build - - ../config/uniswap-interface/build.sh:/app/build.sh + - ../config/uniswap-interface/build-app.sh:/app/build-app.sh ports: - "3000" healthcheck: diff --git a/stack_orchestrator/data/config/uniswap-interface/build.sh b/stack_orchestrator/data/config/uniswap-interface/build-app.sh similarity index 62% rename from stack_orchestrator/data/config/uniswap-interface/build.sh rename to stack_orchestrator/data/config/uniswap-interface/build-app.sh index 16c517ea..7f8748b4 100755 --- a/stack_orchestrator/data/config/uniswap-interface/build.sh +++ b/stack_orchestrator/data/config/uniswap-interface/build-app.sh @@ -5,6 +5,12 @@ if [ -n "$CERC_SCRIPT_DEBUG" ]; then set -x fi +# Check and exit if a deployment already exists (on restarts) +if [ -f ./build ]; then + echo "build already exists, remove volume to rebuild" + exit 0 +fi + yarn build # Create symlink to host built files with correct URL path -- 2.45.2 From b8d63fc4a46391cc84a8544f73ecde70206e9852 Mon Sep 17 00:00:00 2001 From: Nabarun Date: Thu, 30 Nov 2023 12:05:13 +0530 Subject: [PATCH 09/25] Rename stack directory name --- stack_orchestrator/data/compose/docker-compose-urbit.yml | 2 +- .../stacks/{uniswap-frontend => uniswap-urbit-app}/README.md | 0 .../stacks/{uniswap-frontend => uniswap-urbit-app}/stack.yml | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename stack_orchestrator/data/stacks/{uniswap-frontend => uniswap-urbit-app}/README.md (100%) rename stack_orchestrator/data/stacks/{uniswap-frontend => uniswap-urbit-app}/stack.yml (100%) diff --git a/stack_orchestrator/data/compose/docker-compose-urbit.yml b/stack_orchestrator/data/compose/docker-compose-urbit.yml index 71244da2..067c7f3b 100644 --- a/stack_orchestrator/data/compose/docker-compose-urbit.yml +++ b/stack_orchestrator/data/compose/docker-compose-urbit.yml @@ -7,7 +7,7 @@ services: entrypoint: ["bash", "-c", "./run-urbit-ship.sh"] volumes: - urbit_data:/urbit - - ../config/uniswap-frontend/run-urbit-ship.sh:/urbit/run-urbit-ship.sh + - ../config/uniswap-interface/run-urbit-ship.sh:/urbit/run-urbit-ship.sh ports: - "8080:80" - "12321:12321" diff --git a/stack_orchestrator/data/stacks/uniswap-frontend/README.md b/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md similarity index 100% rename from stack_orchestrator/data/stacks/uniswap-frontend/README.md rename to stack_orchestrator/data/stacks/uniswap-urbit-app/README.md diff --git a/stack_orchestrator/data/stacks/uniswap-frontend/stack.yml b/stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml similarity index 100% rename from stack_orchestrator/data/stacks/uniswap-frontend/stack.yml rename to stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml -- 2.45.2 From 3a65794f93b0373beba54c7c9d2afc65569acb9d Mon Sep 17 00:00:00 2001 From: Nabarun Date: Thu, 30 Nov 2023 12:39:39 +0530 Subject: [PATCH 10/25] Update uniswap build restart on failure --- .../compose/docker-compose-uniswap-interface.yml | 2 +- .../data/stacks/uniswap-urbit-app/README.md | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml index 9bf7888d..429cf40c 100644 --- a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml +++ b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml @@ -3,7 +3,7 @@ version: "3.2" services: uniswap-interface: image: cerc/uniswap-interface:local - restart: unless-stopped + restart: on-failure environment: - REACT_APP_INFURA_KEY=${CERC_INFURA_KEY} command: ["./build-app.sh"] diff --git a/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md b/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md index 504f5766..2a813741 100644 --- a/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md +++ b/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md @@ -35,7 +35,17 @@ laconic-so --stack uniswap-urbit-app deploy init --output uniswap-urbit-app-spec Edit `network` in spec file to map container ports to same ports in host - +``` +... +network: + ports: + uniswap-interface: + - 3000:3000 + urbit-fake-ship: + - 8080:80 + - 12321:12321 +... +``` ### Data volumes Container data volumes are bind-mounted to specified paths in the host filesystem. -- 2.45.2 From 39fc53656281aca239b339cd5cd02a51feeadb08 Mon Sep 17 00:00:00 2001 From: Prathamesh Musale Date: Thu, 30 Nov 2023 15:39:07 +0530 Subject: [PATCH 11/25] Perform uniswap app deployment in the urbit container --- .../docker-compose-uniswap-interface.yml | 14 +--- .../data/compose/docker-compose-urbit.yml | 7 +- .../config/uniswap-interface/build-app.sh | 12 ++- .../uniswap-interface/deploy-to-urbit.sh | 5 +- .../uniswap-interface/deploy-uniswap-app.sh | 79 +++++++++++++++++++ .../run-urbit-ship.sh | 5 +- 6 files changed, 96 insertions(+), 26 deletions(-) create mode 100755 stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh rename stack_orchestrator/data/config/{uniswap-interface => urbit}/run-urbit-ship.sh (79%) diff --git a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml index 429cf40c..b41bb865 100644 --- a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml +++ b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml @@ -8,16 +8,8 @@ services: - REACT_APP_INFURA_KEY=${CERC_INFURA_KEY} command: ["./build-app.sh"] volumes: - - uniswap_build:/app/build + - app_builds:/app-builds - ../config/uniswap-interface/build-app.sh:/app/build-app.sh - ports: - - "3000" - healthcheck: - test: ["CMD", "nc", "-vz", "localhost", "3000"] - interval: 20s - timeout: 5s - retries: 15 - start_period: 5s uniswap-urbit-deployment: image: cerc/uniswap-urbit-deployment:local @@ -29,10 +21,10 @@ services: # - REACT_APP_INFURA_KEY=${CERC_INFURA_KEY} command: ["./deploy-to-urbit.sh"] volumes: - - uniswap_build:/app/build + - app_builds:/app-builds - urbit_data:/urbit - ../config/uniswap-interface/deploy-to-urbit.sh:/app/deploy-to-urbit.sh volumes: - uniswap_build: + app_builds: urbit_data: diff --git a/stack_orchestrator/data/compose/docker-compose-urbit.yml b/stack_orchestrator/data/compose/docker-compose-urbit.yml index 067c7f3b..6b12e31c 100644 --- a/stack_orchestrator/data/compose/docker-compose-urbit.yml +++ b/stack_orchestrator/data/compose/docker-compose-urbit.yml @@ -4,10 +4,12 @@ services: urbit-fake-ship: restart: unless-stopped image: tloncorp/vere - entrypoint: ["bash", "-c", "./run-urbit-ship.sh"] + entrypoint: ["bash", "-c", "./run-urbit-ship.sh && deploy-uniswap-app.sh"] volumes: - urbit_data:/urbit - - ../config/uniswap-interface/run-urbit-ship.sh:/urbit/run-urbit-ship.sh + - app_builds:/app-builds + - ../config/urbit/run-urbit-ship.sh:/urbit/run-urbit-ship.sh + - ../config/uniswap-interface/deploy-uniswap-app.sh:/urbit/deploy-uniswap-app.sh ports: - "8080:80" - "12321:12321" @@ -20,3 +22,4 @@ services: volumes: urbit_data: + app_builds: diff --git a/stack_orchestrator/data/config/uniswap-interface/build-app.sh b/stack_orchestrator/data/config/uniswap-interface/build-app.sh index 7f8748b4..d3b012e6 100755 --- a/stack_orchestrator/data/config/uniswap-interface/build-app.sh +++ b/stack_orchestrator/data/config/uniswap-interface/build-app.sh @@ -6,15 +6,13 @@ if [ -n "$CERC_SCRIPT_DEBUG" ]; then fi # Check and exit if a deployment already exists (on restarts) -if [ -f ./build ]; then - echo "build already exists, remove volume to rebuild" +if [ -d /app-builds/uniswap/build ]; then + echo "Build already exists, remove volume to rebuild" exit 0 fi yarn build -# Create symlink to host built files with correct URL path -# mkdir -p /app/urbit/apps -# ln -s /app/build /app/urbit/apps/uniswap - -# node_modules/.bin/serve urbit -s -l 3000 +# Move build to app-builds so urbit can deploy it +mkdir /app-builds/uniswap +cp -r ./build /app-builds/uniswap/ diff --git a/stack_orchestrator/data/config/uniswap-interface/deploy-to-urbit.sh b/stack_orchestrator/data/config/uniswap-interface/deploy-to-urbit.sh index 56ab2445..04ce5e7e 100755 --- a/stack_orchestrator/data/config/uniswap-interface/deploy-to-urbit.sh +++ b/stack_orchestrator/data/config/uniswap-interface/deploy-to-urbit.sh @@ -8,7 +8,4 @@ fi tail -f /dev/null # TODO: -# Take urbit endpoint from env -# Check if urbit endpoint is up -# Fire curl requests to create/mount a uniswap desk -# Copy over build to desk data dir +# Wait for glob to exist, copy it over and host it diff --git a/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh b/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh new file mode 100755 index 00000000..acbc755c --- /dev/null +++ b/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +set -e +if [ -n "$CERC_SCRIPT_DEBUG" ]; then + set -x +fi + +uniswap_desk_dir='/urbit/zod/uniswap' + +dojo () { + curl -s --data '{"source":{"dojo":"'"$1"'"},"sink":{"stdout":null}}' http://localhost:12321 +} + +hood () { + curl -s --data '{"source":{"dojo":"+hood/'"$1"'"},"sink":{"app":"hood"}}' http://localhost:12321 +} + +# Fire curl requests to create/mount a uniswap desk +curl -s --data '{"source":{"dojo":"+hood/merge %uniswap our %landscape"},"sink":{"app":"hood"}}' http://localhost:12321 +hood "mount %uniswap" + +tail -f /dev/null + + +# Wait for uniswap build to appear +# Copy over build to desk data dir + +# cat << EOF > file.txt +# :: +# :::: /hoon/map/mar +# :: Mark for js source maps +# /? 310 +# :: +# =, eyre +# |_ mud=@ +# ++ grow +# |% +# ++ mime [/application/octet-stream (as-octs:mimes:html (@t mud))] +# -- +# ++ grab +# |% :: convert from +# ++ mime |=([p=mite q=octs] (@t q.q)) +# ++ noun cord :: clam from %noun +# -- +# ++ grad %mime +# -- +# EOF + +# cp ~/zod/uniswap/mar/woff2.hoon ~/zod/uniswap/mar/woff.hoon and edit the only line that has woff2 to woff +# cp ~/zod/uniswap/mar/woff2.hoon ~/zod/uniswap/mar/ttf.hoon and edit woff2 to ttf + +# rm ~/zod/uniswap/desk.bill +# rm ~/zod/uniswap/desk.ship + +# |commit %uniswap + +# -landscape!make-glob %uniswap /build + +# Curl and wait for the glob to be hosted + +# From landscape CI: +# $1: the folder of files to glob +# $2: the location of the docket file +# hash=$(ls -1 -c zod/.urb/put | head -1 | sed "s/glob-\([a-z0-9\.]*\).glob/\1/") +# sed -i "s/glob\-[a-z0-9\.]*glob' *[a-z0-9\.]*\]/glob-$hash.glob' $hash]/g" $2 + +# :~ title+'Uniswap' +# info+'Self-hosted uniswap frontend.' +# color+0xcd.75df +# image+'https://logowik.com/content/uploads/images/uniswap-uni7403.jpg' +# base+'uniswap' +# glob-http+['https://urbit-uniswap-laconic.nyc3.digitaloceanspaces.com/glob-0v3.5in3n.an2ft.c89g2.b6nu6.qek41.glob' 0v3.5in3n.an2ft.c89g2.b6nu6.qek41] +# version+[0 0 1] +# website+'https://uniswap.org/' +# license+'MIT' +# == + +# |commit %uniswap +# |install our %uniswap diff --git a/stack_orchestrator/data/config/uniswap-interface/run-urbit-ship.sh b/stack_orchestrator/data/config/urbit/run-urbit-ship.sh similarity index 79% rename from stack_orchestrator/data/config/uniswap-interface/run-urbit-ship.sh rename to stack_orchestrator/data/config/urbit/run-urbit-ship.sh index bb3445dd..bb301c81 100755 --- a/stack_orchestrator/data/config/uniswap-interface/run-urbit-ship.sh +++ b/stack_orchestrator/data/config/urbit/run-urbit-ship.sh @@ -7,11 +7,12 @@ fi pier_dir="/urbit/zod" +# Run urbit ship in daemon mode # Check if the directory exists if [ -d "$pier_dir" ]; then echo "Pier directory already exists, rebooting..." - urbit -t zod + urbit -d zod else echo "Creating a new fake ship..." - urbit -t -F zod + urbit -d -F zod fi -- 2.45.2 From c2be02a06bd26968f66e9224a397f15a4ddfbd02 Mon Sep 17 00:00:00 2001 From: Prathamesh Musale Date: Thu, 30 Nov 2023 16:10:06 +0530 Subject: [PATCH 12/25] Add steps to create glob for the app --- .../docker-compose-uniswap-interface.yml | 2 - .../data/compose/docker-compose-urbit.yml | 2 +- .../uniswap-interface/deploy-uniswap-app.sh | 103 ++++++++++++------ 3 files changed, 73 insertions(+), 34 deletions(-) diff --git a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml index b41bb865..e04255d4 100644 --- a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml +++ b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml @@ -22,9 +22,7 @@ services: command: ["./deploy-to-urbit.sh"] volumes: - app_builds:/app-builds - - urbit_data:/urbit - ../config/uniswap-interface/deploy-to-urbit.sh:/app/deploy-to-urbit.sh volumes: app_builds: - urbit_data: diff --git a/stack_orchestrator/data/compose/docker-compose-urbit.yml b/stack_orchestrator/data/compose/docker-compose-urbit.yml index 6b12e31c..9a52d96d 100644 --- a/stack_orchestrator/data/compose/docker-compose-urbit.yml +++ b/stack_orchestrator/data/compose/docker-compose-urbit.yml @@ -4,7 +4,7 @@ services: urbit-fake-ship: restart: unless-stopped image: tloncorp/vere - entrypoint: ["bash", "-c", "./run-urbit-ship.sh && deploy-uniswap-app.sh"] + entrypoint: ["bash", "-c", "./run-urbit-ship.sh && ./deploy-uniswap-app.sh"] volumes: - urbit_data:/urbit - app_builds:/app-builds diff --git a/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh b/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh index acbc755c..53a61eb7 100755 --- a/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh +++ b/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh @@ -5,8 +5,15 @@ if [ -n "$CERC_SCRIPT_DEBUG" ]; then set -x fi +uniswap_app_build='/app-builds/uniswap/build' uniswap_desk_dir='/urbit/zod/uniswap' +if [ -d ${uniswap_desk_dir} ]; then + echo "Uniswap desk dir already exists, exiting" + exit 0 +fi + +# Fire curl requests to perform operations on the ship dojo () { curl -s --data '{"source":{"dojo":"'"$1"'"},"sink":{"stdout":null}}' http://localhost:12321 } @@ -15,46 +22,80 @@ hood () { curl -s --data '{"source":{"dojo":"+hood/'"$1"'"},"sink":{"app":"hood"}}' http://localhost:12321 } -# Fire curl requests to create/mount a uniswap desk -curl -s --data '{"source":{"dojo":"+hood/merge %uniswap our %landscape"},"sink":{"app":"hood"}}' http://localhost:12321 +# Create/mount a uniswap desk +hood "merge %uniswap our %landscape" hood "mount %uniswap" -tail -f /dev/null +# Loop until the uniswap build appears +while [ ! -d ${uniswap_app_build} ]; do + echo "Uniswap app build not found, retrying in 5s..." + sleep 5 +done +echo "Build found..." - -# Wait for uniswap build to appear # Copy over build to desk data dir +cp -r ${uniswap_app_build} ${uniswap_desk_dir} -# cat << EOF > file.txt -# :: -# :::: /hoon/map/mar -# :: Mark for js source maps -# /? 310 -# :: -# =, eyre -# |_ mud=@ -# ++ grow -# |% -# ++ mime [/application/octet-stream (as-octs:mimes:html (@t mud))] -# -- -# ++ grab -# |% :: convert from -# ++ mime |=([p=mite q=octs] (@t q.q)) -# ++ noun cord :: clam from %noun -# -- -# ++ grad %mime -# -- -# EOF +# Create a mark file for .map file type +cat << EOF > "${uniswap_desk_dir}/mar/map.hoon" +:: +:::: /hoon/map/mar + :: Mark for js source maps +/? 310 +:: +=, eyre +|_ mud=@ +++ grow + |% + ++ mime [/application/octet-stream (as-octs:mimes:html (@t mud))] + -- +++ grab + |% :: convert from + ++ mime |=([p=mite q=octs] (@t q.q)) + ++ noun cord :: clam from %noun + -- +++ grad %mime +-- +EOF -# cp ~/zod/uniswap/mar/woff2.hoon ~/zod/uniswap/mar/woff.hoon and edit the only line that has woff2 to woff -# cp ~/zod/uniswap/mar/woff2.hoon ~/zod/uniswap/mar/ttf.hoon and edit woff2 to ttf +# Create a mark file for .woff file type +cat << EOF > "${uniswap_desk_dir}/mar/woff.hoon" +|_ dat=octs +++ grow + |% + ++ mime [/font/woff dat] + -- +++ grab + |% + ++ mime |=([=mite =octs] octs) + ++ noun octs + -- +++ grad %mime +-- +EOF -# rm ~/zod/uniswap/desk.bill -# rm ~/zod/uniswap/desk.ship +# Create a mark file for .ttf file type +cat << EOF > "${uniswap_desk_dir}/mar/ttf.hoon" +|_ dat=octs +++ grow + |% + ++ mime [/font/ttf dat] + -- +++ grab + |% + ++ mime |=([=mite =octs] octs) + ++ noun octs + -- +++ grad %mime +-- +EOF -# |commit %uniswap +rm "${uniswap_desk_dir}/desk.bill" +rm "${uniswap_desk_dir}/desk.ship" -# -landscape!make-glob %uniswap /build +# Commit changes and create a glob +hood "commit %uniswap" +dojo "-landscape!make-glob %uniswap /build" # Curl and wait for the glob to be hosted -- 2.45.2 From 636870783c2c3f8e818aa578b14ba3b4b8eea62e Mon Sep 17 00:00:00 2001 From: Prathamesh Musale Date: Thu, 30 Nov 2023 16:24:52 +0530 Subject: [PATCH 13/25] Tail /dev/null after deployment --- stack_orchestrator/data/compose/docker-compose-urbit.yml | 2 +- .../data/config/uniswap-interface/deploy-uniswap-app.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/stack_orchestrator/data/compose/docker-compose-urbit.yml b/stack_orchestrator/data/compose/docker-compose-urbit.yml index 9a52d96d..51796132 100644 --- a/stack_orchestrator/data/compose/docker-compose-urbit.yml +++ b/stack_orchestrator/data/compose/docker-compose-urbit.yml @@ -4,7 +4,7 @@ services: urbit-fake-ship: restart: unless-stopped image: tloncorp/vere - entrypoint: ["bash", "-c", "./run-urbit-ship.sh && ./deploy-uniswap-app.sh"] + entrypoint: ["bash", "-c", "./run-urbit-ship.sh && ./deploy-uniswap-app.sh && tail -f /dev/null"] volumes: - urbit_data:/urbit - app_builds:/app-builds diff --git a/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh b/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh index 53a61eb7..c0dd2d7f 100755 --- a/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh +++ b/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh @@ -9,7 +9,7 @@ uniswap_app_build='/app-builds/uniswap/build' uniswap_desk_dir='/urbit/zod/uniswap' if [ -d ${uniswap_desk_dir} ]; then - echo "Uniswap desk dir already exists, exiting" + echo "Uniswap desk dir already exists, skipping deployment..." exit 0 fi -- 2.45.2 From 82bd927f3a113a22387fb0f68bef8413416216e7 Mon Sep 17 00:00:00 2001 From: Prathamesh Musale Date: Thu, 30 Nov 2023 16:58:27 +0530 Subject: [PATCH 14/25] Add steps to install the app to desk --- .../uniswap-interface/deploy-uniswap-app.sh | 38 ++++++++++--------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh b/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh index c0dd2d7f..2ce4d043 100755 --- a/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh +++ b/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh @@ -97,24 +97,28 @@ rm "${uniswap_desk_dir}/desk.ship" hood "commit %uniswap" dojo "-landscape!make-glob %uniswap /build" +glob_file=$(ls -1 -c zod/.urb/put | head -1) +glob_hash=$($glob_file | sed "s/glob-\([a-z0-9\.]*\).glob/\1/") + +glob_url="http://uniswap-glob-host:3000/${glob_file}" # Curl and wait for the glob to be hosted -# From landscape CI: -# $1: the folder of files to glob -# $2: the location of the docket file -# hash=$(ls -1 -c zod/.urb/put | head -1 | sed "s/glob-\([a-z0-9\.]*\).glob/\1/") -# sed -i "s/glob\-[a-z0-9\.]*glob' *[a-z0-9\.]*\]/glob-$hash.glob' $hash]/g" $2 +# Update the docket file +cat << EOF > "${uniswap_desk_dir}/desk.docket-0" +:~ title+'Uniswap' + info+'Self-hosted uniswap frontend.' + color+0xcd.75df + image+'https://logowik.com/content/uploads/images/uniswap-uni7403.jpg' + base+'uniswap' + glob-http+['http://uniswap-glob-host:3000/${glob_file}' ${glob_hash}] + version+[0 0 1] + website+'https://uniswap.org/' + license+'MIT' +== +EOF -# :~ title+'Uniswap' -# info+'Self-hosted uniswap frontend.' -# color+0xcd.75df -# image+'https://logowik.com/content/uploads/images/uniswap-uni7403.jpg' -# base+'uniswap' -# glob-http+['https://urbit-uniswap-laconic.nyc3.digitaloceanspaces.com/glob-0v3.5in3n.an2ft.c89g2.b6nu6.qek41.glob' 0v3.5in3n.an2ft.c89g2.b6nu6.qek41] -# version+[0 0 1] -# website+'https://uniswap.org/' -# license+'MIT' -# == +# Commit changes and install the app +hood "commit %uniswap" +hood "install our %uniswap" -# |commit %uniswap -# |install our %uniswap +echo "Uniswap app installed" -- 2.45.2 From d80f81854aa87768ff18ee1e41acb9d39d97bb77 Mon Sep 17 00:00:00 2001 From: Nabarun Date: Thu, 30 Nov 2023 17:06:08 +0530 Subject: [PATCH 15/25] Host glob files for uniswap --- .../docker-compose-uniswap-interface.yml | 19 ++++++++------ .../data/compose/docker-compose-urbit.yml | 2 ++ .../uniswap-interface/deploy-to-urbit.sh | 11 -------- .../uniswap-interface/deploy-uniswap-app.sh | 25 ++++++++++++++++--- .../uniswap-interface/host-uniswap-glob.sh | 22 ++++++++++++++++ .../Dockerfile | 0 .../build.sh | 4 +-- .../data/stacks/uniswap-urbit-app/stack.yml | 2 +- 8 files changed, 61 insertions(+), 24 deletions(-) delete mode 100755 stack_orchestrator/data/config/uniswap-interface/deploy-to-urbit.sh create mode 100755 stack_orchestrator/data/config/uniswap-interface/host-uniswap-glob.sh rename stack_orchestrator/data/container-build/{cerc-uniswap-urbit-deployment => cerc-urbit-globs-host}/Dockerfile (100%) rename stack_orchestrator/data/container-build/{cerc-uniswap-urbit-deployment => cerc-urbit-globs-host}/build.sh (55%) diff --git a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml index e04255d4..368f8269 100644 --- a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml +++ b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml @@ -11,18 +11,23 @@ services: - app_builds:/app-builds - ../config/uniswap-interface/build-app.sh:/app/build-app.sh - uniswap-urbit-deployment: - image: cerc/uniswap-urbit-deployment:local + uniswap-glob-host: + image: cerc/urbit-globs-host:local restart: unless-stopped depends_on: uniswap-interface: condition: service_completed_successfully - # environment: - # - REACT_APP_INFURA_KEY=${CERC_INFURA_KEY} - command: ["./deploy-to-urbit.sh"] + command: ["./host-uniswap-glob.sh"] volumes: - - app_builds:/app-builds - - ../config/uniswap-interface/deploy-to-urbit.sh:/app/deploy-to-urbit.sh + - app_globs:/app-globs + - ../config/uniswap-interface/host-uniswap-glob.sh:/app/host-uniswap-glob.sh + healthcheck: + test: ["CMD", "nc", "-v", "localhost", "3000"] + interval: 20s + timeout: 5s + retries: 15 + start_period: 10s volumes: app_builds: + app_globs: diff --git a/stack_orchestrator/data/compose/docker-compose-urbit.yml b/stack_orchestrator/data/compose/docker-compose-urbit.yml index 51796132..8ae96eaf 100644 --- a/stack_orchestrator/data/compose/docker-compose-urbit.yml +++ b/stack_orchestrator/data/compose/docker-compose-urbit.yml @@ -8,6 +8,7 @@ services: volumes: - urbit_data:/urbit - app_builds:/app-builds + - app_globs:/app-globs - ../config/urbit/run-urbit-ship.sh:/urbit/run-urbit-ship.sh - ../config/uniswap-interface/deploy-uniswap-app.sh:/urbit/deploy-uniswap-app.sh ports: @@ -23,3 +24,4 @@ services: volumes: urbit_data: app_builds: + app_globs: diff --git a/stack_orchestrator/data/config/uniswap-interface/deploy-to-urbit.sh b/stack_orchestrator/data/config/uniswap-interface/deploy-to-urbit.sh deleted file mode 100755 index 04ce5e7e..00000000 --- a/stack_orchestrator/data/config/uniswap-interface/deploy-to-urbit.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -set -e -if [ -n "$CERC_SCRIPT_DEBUG" ]; then - set -x -fi - -tail -f /dev/null - -# TODO: -# Wait for glob to exist, copy it over and host it diff --git a/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh b/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh index 2ce4d043..aae473fe 100755 --- a/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh +++ b/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh @@ -97,11 +97,30 @@ rm "${uniswap_desk_dir}/desk.ship" hood "commit %uniswap" dojo "-landscape!make-glob %uniswap /build" -glob_file=$(ls -1 -c zod/.urb/put | head -1) -glob_hash=$($glob_file | sed "s/glob-\([a-z0-9\.]*\).glob/\1/") +echo "Copying over glob file to mounted volume" +mkdir -p /app-globs/uniswap +cp /urbit/zod/.urb/put/* /app-globs/uniswap/ + +glob_file=$(ls -1 -c zod/.urb/put | head -1) +echo "Glob filename: ${glob_file}" -glob_url="http://uniswap-glob-host:3000/${glob_file}" # Curl and wait for the glob to be hosted +glob_url="http://uniswap-glob-host:3000/${glob_file}" + +echo "Checking if glob file hosted at ${glob_url}" +while true; do + response=$(curl -sL -w "%{http_code}" -o /dev/null "$glob_url") + + if [ $response -eq 200 ]; then + echo "File found at $glob_url" + break # Exit the loop if the file is found + else + echo "File not found. Retrying in a few seconds..." + sleep 5 + fi +done + +glob_hash=$($glob_file | sed "s/glob-\([a-z0-9\.]*\).glob/\1/") # Update the docket file cat << EOF > "${uniswap_desk_dir}/desk.docket-0" diff --git a/stack_orchestrator/data/config/uniswap-interface/host-uniswap-glob.sh b/stack_orchestrator/data/config/uniswap-interface/host-uniswap-glob.sh new file mode 100755 index 00000000..8651e25c --- /dev/null +++ b/stack_orchestrator/data/config/uniswap-interface/host-uniswap-glob.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +set -e +if [ -n "$CERC_SCRIPT_DEBUG" ]; then + set -x +fi + +# Use config from mounted volume (when running web-app along with watcher stack) +echo "Waiting for uniswap app glob" +while [ ! -d /app-globs/uniswap ]; do + echo "Glob directory not found, retrying in 5 seconds..." + sleep 5 +done + + +# Copy to a new globs directory +mkdir -p globs +cp -r /app-globs/uniswap/* ./globs + +# Serve the glob file +cd globs +python3 -m http.server 3000 --bind 0.0.0.0 diff --git a/stack_orchestrator/data/container-build/cerc-uniswap-urbit-deployment/Dockerfile b/stack_orchestrator/data/container-build/cerc-urbit-globs-host/Dockerfile similarity index 100% rename from stack_orchestrator/data/container-build/cerc-uniswap-urbit-deployment/Dockerfile rename to stack_orchestrator/data/container-build/cerc-urbit-globs-host/Dockerfile diff --git a/stack_orchestrator/data/container-build/cerc-uniswap-urbit-deployment/build.sh b/stack_orchestrator/data/container-build/cerc-urbit-globs-host/build.sh similarity index 55% rename from stack_orchestrator/data/container-build/cerc-uniswap-urbit-deployment/build.sh rename to stack_orchestrator/data/container-build/cerc-urbit-globs-host/build.sh index c8921f19..ebd396f1 100755 --- a/stack_orchestrator/data/container-build/cerc-uniswap-urbit-deployment/build.sh +++ b/stack_orchestrator/data/container-build/cerc-urbit-globs-host/build.sh @@ -1,9 +1,9 @@ #!/usr/bin/env bash -# Build the uniswap-urbit-deployment image +# Build the urbit-globs-host image source ${CERC_CONTAINER_BASE_DIR}/build-base.sh # See: https://stackoverflow.com/a/246128/1701505 SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -docker build -t cerc/uniswap-urbit-deployment:local -f ${SCRIPT_DIR}/Dockerfile ${build_command_args} ${SCRIPT_DIR} +docker build -t cerc/urbit-globs-host:local -f ${SCRIPT_DIR}/Dockerfile ${build_command_args} ${SCRIPT_DIR} diff --git a/stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml b/stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml index 16e94786..08217416 100644 --- a/stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml +++ b/stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml @@ -6,7 +6,7 @@ repos: - github.com/cerc-io/uniswap-interface@pm-urbit-hosting containers: - cerc/uniswap-interface - - cerc/uniswap-urbit-deployment + - cerc/urbit-globs-host # TODO: Add container for urbit pods: - uniswap-interface -- 2.45.2 From 59bf8e384f48bb40e901777bf64a68b890519d42 Mon Sep 17 00:00:00 2001 From: Prathamesh Musale Date: Thu, 30 Nov 2023 17:24:52 +0530 Subject: [PATCH 16/25] Update repo branch --- .../data/config/uniswap-interface/deploy-uniswap-app.sh | 3 +-- stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml | 6 +----- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh b/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh index aae473fe..6c147083 100755 --- a/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh +++ b/stack_orchestrator/data/config/uniswap-interface/deploy-uniswap-app.sh @@ -1,6 +1,5 @@ #!/bin/bash -set -e if [ -n "$CERC_SCRIPT_DEBUG" ]; then set -x fi @@ -120,7 +119,7 @@ while true; do fi done -glob_hash=$($glob_file | sed "s/glob-\([a-z0-9\.]*\).glob/\1/") +glob_hash=$(echo "$glob_file" | sed "s/glob-\([a-z0-9\.]*\).glob/\1/") # Update the docket file cat << EOF > "${uniswap_desk_dir}/desk.docket-0" diff --git a/stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml b/stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml index 08217416..cc9643da 100644 --- a/stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml +++ b/stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml @@ -1,14 +1,10 @@ version: "0.1" name: uniswap-urbit-app repos: - # Uniswap interface - # TODO: Use release - - github.com/cerc-io/uniswap-interface@pm-urbit-hosting + - github.com/cerc-io/uniswap-interface@laconic # TODO: Use release containers: - cerc/uniswap-interface - cerc/urbit-globs-host - # TODO: Add container for urbit pods: - uniswap-interface - urbit - # TODO: Add pod for urbit -- 2.45.2 From 87e296d2483dd7a5925e4b24b24adadd00fa1cfe Mon Sep 17 00:00:00 2001 From: Nabarun Date: Thu, 30 Nov 2023 17:36:12 +0530 Subject: [PATCH 17/25] Update readme with command to get urbit password --- .../data/config/uniswap-interface/host-uniswap-glob.sh | 1 + stack_orchestrator/data/stacks/uniswap-urbit-app/README.md | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/stack_orchestrator/data/config/uniswap-interface/host-uniswap-glob.sh b/stack_orchestrator/data/config/uniswap-interface/host-uniswap-glob.sh index 8651e25c..37605794 100755 --- a/stack_orchestrator/data/config/uniswap-interface/host-uniswap-glob.sh +++ b/stack_orchestrator/data/config/uniswap-interface/host-uniswap-glob.sh @@ -19,4 +19,5 @@ cp -r /app-globs/uniswap/* ./globs # Serve the glob file cd globs +echo "Hosting glob file at port 3000" python3 -m http.server 3000 --bind 0.0.0.0 diff --git a/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md b/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md index 2a813741..7092d250 100644 --- a/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md +++ b/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md @@ -39,8 +39,6 @@ Edit `network` in spec file to map container ports to same ports in host ... network: ports: - uniswap-interface: - - 3000:3000 urbit-fake-ship: - 8080:80 - 12321:12321 @@ -77,6 +75,11 @@ laconic-so deployment --dir uniswap-urbit-app-deployment start * List and check the health status of all the containers using `docker ps` and wait for them to be `healthy` +* Run the following to get login password for urbit web interface + ```bash + laconic-so deployment --dir uniswap-urbit-app-deployment exec urbit-fake-ship "curl -s --data '{\"source\":{\"dojo\":\"+code\"},\"sink\":{\"stdout\":null}}' http://localhost:12321" + ``` + ## Clean up To stop all azimuth services running in the background, while preserving chain data: -- 2.45.2 From c5be2ebcff13abcaa92ef5d509118247003d48a0 Mon Sep 17 00:00:00 2001 From: Prathamesh Musale Date: Thu, 30 Nov 2023 17:43:48 +0530 Subject: [PATCH 18/25] Update readme --- .../data/stacks/uniswap-urbit-app/README.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md b/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md index 7092d250..9193fe10 100644 --- a/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md +++ b/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md @@ -1,6 +1,6 @@ -# self-hosted uniswap frontend +# Self-hosted Uniswap Frontend -Instructions to setup and deploy uniswap app on urbit +Instructions to setup and deploy Uniswap app on Urbit Build and deploy: @@ -46,12 +46,14 @@ network: ``` ### Data volumes + Container data volumes are bind-mounted to specified paths in the host filesystem. The default setup (generated by `laconic-so deploy init`) places the volumes in the `./data` subdirectory of the deployment directory. The default mappings can be customized by editing the "spec" file generated by `laconic-so deploy init`. --- Once you've made any needed changes to the spec file, create a deployment from it: + ```bash laconic-so --stack uniswap-urbit-app deploy create --spec-file uniswap-urbit-app-spec.yml --deployment-dir uniswap-urbit-app-deployment ``` @@ -69,13 +71,15 @@ Inside the deployment directory, open the file `config.env` and add variable for ## Start the stack Start the deployment: + ```bash laconic-so deployment --dir uniswap-urbit-app-deployment start ``` * List and check the health status of all the containers using `docker ps` and wait for them to be `healthy` -* Run the following to get login password for urbit web interface +* Run the following to get login password for Urbit web interface: + ```bash laconic-so deployment --dir uniswap-urbit-app-deployment exec urbit-fake-ship "curl -s --data '{\"source\":{\"dojo\":\"+code\"},\"sink\":{\"stdout\":null}}' http://localhost:12321" ``` -- 2.45.2 From d739a96ac1907146383044937d7aad77bfeea49c Mon Sep 17 00:00:00 2001 From: Nabarun Date: Thu, 30 Nov 2023 18:16:10 +0530 Subject: [PATCH 19/25] Update readme to open urbit web UI --- .../data/stacks/uniswap-urbit-app/README.md | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md b/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md index 9193fe10..24e710e1 100644 --- a/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md +++ b/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md @@ -12,7 +12,7 @@ Build and deploy: Clone required repositories: ```bash -laconic-so --stack uniswap-urbit-app setup-repositories +laconic-so --stack uniswap-urbit-app setup-repositories --pull # If this throws an error as a result of being already checked out to a branch/tag in a repo, remove the repositories mentioned below and re-run the command ``` @@ -82,17 +82,32 @@ laconic-so deployment --dir uniswap-urbit-app-deployment start ```bash laconic-so deployment --dir uniswap-urbit-app-deployment exec urbit-fake-ship "curl -s --data '{\"source\":{\"dojo\":\"+code\"},\"sink\":{\"stdout\":null}}' http://localhost:12321" + + # Expected output: "\n"% ``` +* Open the Urbit web UI at http://localhost:8080 and use the `PASSWORD` from previous step to login + +* The uniswap app is not available when starting stack for the first time. Check `urbit-fake-ship` logs to see that app has installed + ``` + laconic-so deployment --dir uniswap-urbit-app-deployment logs -f + + # Expected output: + # laconic-3ccf7ee79bdae874-urbit-fake-ship-1 | docket: fetching %http glob for %uniswap desk + # laconic-3ccf7ee79bdae874-urbit-fake-ship-1 | ">="">="Uniswap app installed + ``` + +* The uniswap app will be now visible at http://localhost:8080 + ## Clean up -To stop all azimuth services running in the background, while preserving chain data: +To stop all uniswap-urbit-app services running in the background, while preserving chain data: ```bash laconic-so deployment --dir uniswap-urbit-app-deployment stop ``` -To stop all azimuth services and also delete data: +To stop all uniswap-urbit-app services and also delete data: ```bash laconic-so deployment --dir uniswap-urbit-app-deployment stop --delete-volumes -- 2.45.2 From 59dc568237a6c47520d9cb8924e657cbacfafd50 Mon Sep 17 00:00:00 2001 From: Prathamesh Musale Date: Fri, 1 Dec 2023 11:52:29 +0530 Subject: [PATCH 20/25] Expose the port on glob hosting container --- .../data/compose/docker-compose-uniswap-interface.yml | 2 ++ stack_orchestrator/data/stacks/uniswap-urbit-app/README.md | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml index 368f8269..a904b48c 100644 --- a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml +++ b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml @@ -21,6 +21,8 @@ services: volumes: - app_globs:/app-globs - ../config/uniswap-interface/host-uniswap-glob.sh:/app/host-uniswap-glob.sh + ports: + - "3000" healthcheck: test: ["CMD", "nc", "-v", "localhost", "3000"] interval: 20s diff --git a/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md b/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md index 24e710e1..31f3dd8a 100644 --- a/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md +++ b/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md @@ -40,8 +40,10 @@ Edit `network` in spec file to map container ports to same ports in host network: ports: urbit-fake-ship: - - 8080:80 - - 12321:12321 + - 8080:80 + - 12321:12321 + uniswap-glob-host: + - 3000:3000 ... ``` -- 2.45.2 From 28bd4bb509e2cf0296cee8f44ff1b2b0d56a5b53 Mon Sep 17 00:00:00 2001 From: Prathamesh Musale Date: Fri, 1 Dec 2023 12:13:36 +0530 Subject: [PATCH 21/25] Avoid exposing urbit http port --- stack_orchestrator/data/compose/docker-compose-urbit.yml | 3 +-- stack_orchestrator/data/stacks/uniswap-urbit-app/README.md | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/stack_orchestrator/data/compose/docker-compose-urbit.yml b/stack_orchestrator/data/compose/docker-compose-urbit.yml index 8ae96eaf..ae0b3709 100644 --- a/stack_orchestrator/data/compose/docker-compose-urbit.yml +++ b/stack_orchestrator/data/compose/docker-compose-urbit.yml @@ -12,8 +12,7 @@ services: - ../config/urbit/run-urbit-ship.sh:/urbit/run-urbit-ship.sh - ../config/uniswap-interface/deploy-uniswap-app.sh:/urbit/deploy-uniswap-app.sh ports: - - "8080:80" - - "12321:12321" + - "80" healthcheck: test: ["CMD", "nc", "-v", "localhost", "80"] interval: 20s diff --git a/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md b/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md index 31f3dd8a..7640ca14 100644 --- a/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md +++ b/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md @@ -41,7 +41,6 @@ network: ports: urbit-fake-ship: - 8080:80 - - 12321:12321 uniswap-glob-host: - 3000:3000 ... -- 2.45.2 From 8020f1c6b56afa800aff6293b89d7bd0888f730d Mon Sep 17 00:00:00 2001 From: Prathamesh Musale Date: Fri, 1 Dec 2023 14:57:28 +0530 Subject: [PATCH 22/25] Add scripts for installing uniswap on remote urbit instance --- .../uniswap-interface/install-uniswap-app.sh | 109 ++++++++++++++++++ .../remote-deploy-uniswap.sh | 18 +++ 2 files changed, 127 insertions(+) create mode 100755 stack_orchestrator/data/config/uniswap-interface/install-uniswap-app.sh create mode 100755 stack_orchestrator/data/config/uniswap-interface/remote-deploy-uniswap.sh diff --git a/stack_orchestrator/data/config/uniswap-interface/install-uniswap-app.sh b/stack_orchestrator/data/config/uniswap-interface/install-uniswap-app.sh new file mode 100755 index 00000000..679bc27e --- /dev/null +++ b/stack_orchestrator/data/config/uniswap-interface/install-uniswap-app.sh @@ -0,0 +1,109 @@ +#!/bin/bash + +# $1: Glob file URL (eg. https://xyz.com/glob-abcd.glob) +# $2: Uniswap desk dir (default: ./zod/uniswap) + +if [ -z "$1" ]; then + echo "Glob file URL arg not provided" + exit 0 +fi + +glob_url=$1 +glob_file=$(basename "$glob_url") +glob_hash=$(echo "$glob_file" | sed "s/glob-\([a-z0-9\.]*\).glob/\1/") +echo "Using glob file ${glob_file}" + +# Default desk dir: ./zod/uniswap +uniswap_desk_dir="${2:-./zod/uniswap}" + +echo "Using ${uniswap_desk_dir} as the Uniswap desk dir path" + +# Fire curl requests to perform operations on the ship +dojo () { + curl -s --data '{"source":{"dojo":"'"$1"'"},"sink":{"stdout":null}}' http://localhost:12321 +} + +hood () { + curl -s --data '{"source":{"dojo":"+hood/'"$1"'"},"sink":{"app":"hood"}}' http://localhost:12321 +} + +# Create/mount a uniswap desk +hood "merge %uniswap our %landscape" +hood "mount %uniswap" + +# Create a mark file for .map file type +cat << EOF > "${uniswap_desk_dir}/mar/map.hoon" +:: +:::: /hoon/map/mar + :: Mark for js source maps +/? 310 +:: +=, eyre +|_ mud=@ +++ grow + |% + ++ mime [/application/octet-stream (as-octs:mimes:html (@t mud))] + -- +++ grab + |% :: convert from + ++ mime |=([p=mite q=octs] (@t q.q)) + ++ noun cord :: clam from %noun + -- +++ grad %mime +-- +EOF + +# Create a mark file for .woff file type +cat << EOF > "${uniswap_desk_dir}/mar/woff.hoon" +|_ dat=octs +++ grow + |% + ++ mime [/font/woff dat] + -- +++ grab + |% + ++ mime |=([=mite =octs] octs) + ++ noun octs + -- +++ grad %mime +-- +EOF + +# Create a mark file for .ttf file type +cat << EOF > "${uniswap_desk_dir}/mar/ttf.hoon" +|_ dat=octs +++ grow + |% + ++ mime [/font/ttf dat] + -- +++ grab + |% + ++ mime |=([=mite =octs] octs) + ++ noun octs + -- +++ grad %mime +-- +EOF + +rm "${uniswap_desk_dir}/desk.bill" +rm "${uniswap_desk_dir}/desk.ship" + +# Update the docket file +cat << EOF > "${uniswap_desk_dir}/desk.docket-0" +:~ title+'Uniswap' + info+'Self-hosted uniswap frontend.' + color+0xcd.75df + image+'https://logowik.com/content/uploads/images/uniswap-uni7403.jpg' + base+'uniswap' + glob-http+['${glob_url}' ${glob_hash}] + version+[0 0 1] + website+'https://uniswap.org/' + license+'MIT' +== +EOF + +# Commit changes and install the app +hood "commit %uniswap" +hood "install our %uniswap" + +echo "Uniswap app installed" diff --git a/stack_orchestrator/data/config/uniswap-interface/remote-deploy-uniswap.sh b/stack_orchestrator/data/config/uniswap-interface/remote-deploy-uniswap.sh new file mode 100755 index 00000000..528151e9 --- /dev/null +++ b/stack_orchestrator/data/config/uniswap-interface/remote-deploy-uniswap.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# $1: Remote user host +# $2: Path to run the app installation in (where urbit ship dir is located) +# $3: Glob file URL (eg. https://xyz.com/glob-abcd.glob) + +if [ "$#" -ne 3 ]; then + echo "Usage: $0 " + exit 1 +fi + +remote_user_host="$1" +remote_folder="$2" +glob_url="$3" + +installation_script="./install-uniswap-app.sh" + +ssh "$remote_user_host" "cd $remote_folder && bash -s $glob_url" < "$installation_script" -- 2.45.2 From f7b6cbe72bd290ad259c1e49112445d2c2eafa68 Mon Sep 17 00:00:00 2001 From: Nabarun Date: Mon, 4 Dec 2023 09:36:12 +0530 Subject: [PATCH 23/25] Configure GQL proxy for uniswap app --- .../compose/docker-compose-uniswap-interface.yml | 15 +++++++++++++++ .../data/stacks/uniswap-urbit-app/README.md | 6 ++++++ .../data/stacks/uniswap-urbit-app/stack.yml | 2 +- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml index a904b48c..067a4851 100644 --- a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml +++ b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml @@ -6,6 +6,7 @@ services: restart: on-failure environment: - REACT_APP_INFURA_KEY=${CERC_INFURA_KEY} + - REACT_APP_AWS_API_ENDPOINT=${CERC_UNISWAP_GQL} command: ["./build-app.sh"] volumes: - app_builds:/app-builds @@ -29,6 +30,20 @@ services: timeout: 5s retries: 15 start_period: 10s + + uniswap-gql-proxy: + image: cerc/uniswap-interface:local + restart: on-failure + command: ["bash", "-c", "yarn proxy-gql"] + ports: + - "4000" + healthcheck: + test: ["CMD", "nc", "-v", "localhost", "4000"] + interval: 20s + timeout: 5s + retries: 15 + start_period: 10s + volumes: app_builds: diff --git a/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md b/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md index 7640ca14..4a7e431f 100644 --- a/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md +++ b/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md @@ -43,6 +43,8 @@ network: - 8080:80 uniswap-glob-host: - 3000:3000 + uniswap-gql-proxy: + - 4000:4000 ... ``` @@ -67,6 +69,10 @@ Inside the deployment directory, open the file `config.env` and add variable for # External RPC endpoints # https://docs.infura.io/getting-started#2-create-an-api-key CERC_INFURA_KEY= + + # Uniswap API GQL Endpoint + # Set this to GQL proxy server endpoint for uniswap app + CERC_UNISWAP_GQL= ``` ## Start the stack diff --git a/stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml b/stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml index cc9643da..8a85da38 100644 --- a/stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml +++ b/stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml @@ -1,7 +1,7 @@ version: "0.1" name: uniswap-urbit-app repos: - - github.com/cerc-io/uniswap-interface@laconic # TODO: Use release + - github.com/cerc-io/uniswap-interface@ng-gql-proxy # TODO: Use release containers: - cerc/uniswap-interface - cerc/urbit-globs-host -- 2.45.2 From 4736a81e9628be3a9f23cf8c638ca8ef5a4afa88 Mon Sep 17 00:00:00 2001 From: Prathamesh Musale Date: Mon, 4 Dec 2023 14:21:25 +0530 Subject: [PATCH 24/25] Use laconic branch for app repo --- .../data/compose/docker-compose-uniswap-interface.yml | 3 +-- stack_orchestrator/data/stacks/uniswap-urbit-app/README.md | 7 ++++--- stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml index 067a4851..f6a5c53f 100644 --- a/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml +++ b/stack_orchestrator/data/compose/docker-compose-uniswap-interface.yml @@ -30,7 +30,7 @@ services: timeout: 5s retries: 15 start_period: 10s - + uniswap-gql-proxy: image: cerc/uniswap-interface:local restart: on-failure @@ -43,7 +43,6 @@ services: timeout: 5s retries: 15 start_period: 10s - volumes: app_builds: diff --git a/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md b/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md index 4a7e431f..cd6a9f3e 100644 --- a/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md +++ b/stack_orchestrator/data/stacks/uniswap-urbit-app/README.md @@ -40,11 +40,11 @@ Edit `network` in spec file to map container ports to same ports in host network: ports: urbit-fake-ship: - - 8080:80 + - '8080:80' uniswap-glob-host: - - 3000:3000 + - '3000:3000' uniswap-gql-proxy: - - 4000:4000 + - '4000:4000' ... ``` @@ -72,6 +72,7 @@ Inside the deployment directory, open the file `config.env` and add variable for # Uniswap API GQL Endpoint # Set this to GQL proxy server endpoint for uniswap app + # (Eg. http://localhost:4000/graphql) CERC_UNISWAP_GQL= ``` diff --git a/stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml b/stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml index 8a85da38..cc9643da 100644 --- a/stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml +++ b/stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml @@ -1,7 +1,7 @@ version: "0.1" name: uniswap-urbit-app repos: - - github.com/cerc-io/uniswap-interface@ng-gql-proxy # TODO: Use release + - github.com/cerc-io/uniswap-interface@laconic # TODO: Use release containers: - cerc/uniswap-interface - cerc/urbit-globs-host -- 2.45.2 From 729add223588403348645f37aa32883a1cc99288 Mon Sep 17 00:00:00 2001 From: Prathamesh Musale Date: Mon, 4 Dec 2023 14:53:12 +0530 Subject: [PATCH 25/25] Rename urbit pod for uniswap app deployment --- ...ocker-compose-urbit.yml => docker-compose-uniswap-urbit.yml} | 0 stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename stack_orchestrator/data/compose/{docker-compose-urbit.yml => docker-compose-uniswap-urbit.yml} (100%) diff --git a/stack_orchestrator/data/compose/docker-compose-urbit.yml b/stack_orchestrator/data/compose/docker-compose-uniswap-urbit.yml similarity index 100% rename from stack_orchestrator/data/compose/docker-compose-urbit.yml rename to stack_orchestrator/data/compose/docker-compose-uniswap-urbit.yml diff --git a/stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml b/stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml index cc9643da..1077b557 100644 --- a/stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml +++ b/stack_orchestrator/data/stacks/uniswap-urbit-app/stack.yml @@ -7,4 +7,4 @@ containers: - cerc/urbit-globs-host pods: - uniswap-interface - - urbit + - uniswap-urbit -- 2.45.2