From abc8c666ebbf29c3a5b7ec5d8a81cb7af861d847 Mon Sep 17 00:00:00 2001 From: Prathamesh Musale Date: Wed, 30 Oct 2024 05:00:17 +0000 Subject: [PATCH] Integrate shopify faucet into shopify stack (#35) Part of [Service provider auctions for web deployments](https://www.notion.so/Service-provider-auctions-for-web-deployments-104a6b22d47280dbad51d28aa3a91d75) Co-authored-by: Neeraj Reviewed-on: https://git.vdb.to/cerc-io/testnet-laconicd-stack/pulls/35 Co-authored-by: Prathamesh Musale Co-committed-by: Prathamesh Musale --- ops/deployments-from-scratch.md | 117 +++++++++++++++++ .../docker-compose-laconic-shopify-faucet.yml | 29 ----- .../docker-compose-laconic-shopify.yml | 34 ++++- .../config-template.toml | 0 .../laconic-shopify/product_pricings.json | 2 +- .../start-faucet.sh | 0 .../config/laconic-shopify/start-shopify.sh | 2 +- .../cerc-laconic-shopify/build.sh | 2 +- .../stacks/laconic-shopify-faucet/README.md | 121 ------------------ .../stacks/laconic-shopify-faucet/stack.yml | 9 -- .../stacks/laconic-shopify/README.md | 30 +++-- .../stacks/laconic-shopify/stack.yml | 4 +- 12 files changed, 175 insertions(+), 175 deletions(-) delete mode 100644 stack-orchestrator/compose/docker-compose-laconic-shopify-faucet.yml rename stack-orchestrator/config/{laconic-shopify-faucet => laconic-shopify}/config-template.toml (100%) rename stack-orchestrator/config/{laconic-shopify-faucet => laconic-shopify}/start-faucet.sh (100%) delete mode 100644 stack-orchestrator/stacks/laconic-shopify-faucet/README.md delete mode 100644 stack-orchestrator/stacks/laconic-shopify-faucet/stack.yml diff --git a/ops/deployments-from-scratch.md b/ops/deployments-from-scratch.md index 2833ba9..6130485 100644 --- a/ops/deployments-from-scratch.md +++ b/ops/deployments-from-scratch.md @@ -714,6 +714,123 @@ +
+ Shopify + +## Shopify + +* Stack: + +* Source repo: + +* Target dir: `/srv/shopify/laconic-shopify-deployment` + +* Cleanup an existing deployment if required: + + ```bash + cd /srv/shopify + + # Stop the deployment + laconic-so deployment --dir laconic-shopify-deployment stop + + # Remove the deployment dir + sudo rm -rf laconic-shopify-deployment + + # Remove the existing spec file + rm laconic-shopify-spec.yml + ``` + +### Setup + +* Clone the stack repo: + + ```bash + laconic-so fetch-stack git.vdb.to/cerc-io/testnet-laconicd-stack --pull + + # This should clone the testnet-laconicd-stack repo at `/home/dev/cerc/testnet-laconicd-stack` + ``` + +* Clone required repositories: + + ```bash + laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-shopify setup-repositories --pull + + # This should clone the laconicd repos at `/home/dev/cerc/shopify` and `/home/dev/cerc/laconic-faucet` + ``` + +* Build the container images: + + ```bash + laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-shopify build-containers --force-rebuild + + # This should create the "cerc/laconic-shopify" and "cerc/laconic-shopify-faucet" Docker images + ``` + +### Deployment + +* Create a spec file for the deployment: + + ```bash + cd /srv/shopify + + laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-shopify deploy init --output laconic-shopify-spec.yml + ``` + +* Create a deployment from the spec file: + + ```bash + laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-shopify deploy create --spec-file laconic-shopify-spec.yml --deployment-dir laconic-shopify-deployment + ``` + +* Inside the `laconic-shopify-deployment` deployment directory, open `config.env` file and set following env variables: + + ```bash + # Shopify GraphQL URL + CERC_SHOPIFY_GRAPHQL_URL='https://6h071x-zw.myshopify.com/admin/api/2024-10/graphql.json' + + # Access token for Shopify API + CERC_SHOPIFY_ACCESS_TOKEN= + + # Delay for fetching orders in milliseconds + CERC_FETCH_ORDER_DELAY=10000 + + # Number of line items per order in Get Orders GraphQL query + CERC_ITEMS_PER_ORDER=10 + + # Private key of a funded faucet account + CERC_FAUCET_KEY= + + # laconicd RPC endpoint + CERC_LACONICD_RPC_ENDPOINT='https://laconicd-sapo.laconic.com' + + # laconicd chain id + CERC_LACONICD_CHAIN_ID=laconic-testnet-2 + + # laconicd address prefix + CERC_LACONICD_PREFIX=laconic + + # laconicd gas price + CERC_LACONICD_GAS_PRICE=0.001 + ``` + +### Start + +* Start the deployment: + + ```bash + laconic-so deployment --dir laconic-shopify-deployment start + ``` + +* Check status: + + ```bash + # Check logs for faucet and shopify containers + laconic-so deployment --dir laconic-shopify-deployment logs shopify -f + laconic-so deployment --dir laconic-shopify-deployment logs faucet -f + ``` + +
+
testnet-onboarding-app diff --git a/stack-orchestrator/compose/docker-compose-laconic-shopify-faucet.yml b/stack-orchestrator/compose/docker-compose-laconic-shopify-faucet.yml deleted file mode 100644 index 0efa442..0000000 --- a/stack-orchestrator/compose/docker-compose-laconic-shopify-faucet.yml +++ /dev/null @@ -1,29 +0,0 @@ -services: - faucet: - restart: unless-stopped - image: cerc/laconic-shopify-faucet:local - command: ["bash", "-c", "./start-faucet.sh"] - environment: - CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG} - CERC_LACONICD_RPC_ENDPOINT: ${CERC_LACONICD_RPC_ENDPOINT:-http://laconicd:26657} - CERC_FAUCET_KEY: ${CERC_FAUCET_KEY} - CERC_LACONICD_CHAIN_ID: ${CERC_LACONICD_CHAIN_ID:-laconic_9000-1} - CERC_LACONICD_PREFIX: ${CERC_LACONICD_PREFIX:-laconic} - CERC_LACONICD_GAS_PRICE: ${CERC_LACONICD_GAS_PRICE:-1} - volumes: - - faucet-data:/app/db - - ../config/laconic-shopify-faucet/start-faucet.sh:/app/start-faucet.sh - - ../config/laconic-shopify-faucet/config-template.toml:/app/environments/config-template.toml - ports: - - 3000 - healthcheck: - test: ["CMD", "nc", "-vz", "127.0.0.1", "3000"] - interval: 10s - timeout: 5s - retries: 10 - start_period: 5s - extra_hosts: - - "host.docker.internal:host-gateway" - -volumes: - faucet-data: diff --git a/stack-orchestrator/compose/docker-compose-laconic-shopify.yml b/stack-orchestrator/compose/docker-compose-laconic-shopify.yml index 764f422..f274b93 100644 --- a/stack-orchestrator/compose/docker-compose-laconic-shopify.yml +++ b/stack-orchestrator/compose/docker-compose-laconic-shopify.yml @@ -2,20 +2,48 @@ services: shopify: restart: unless-stopped image: cerc/laconic-shopify:local + depends_on: + faucet: + condition: service_healthy command: ["bash", "-c", "./start-faucet.sh"] environment: CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG} CERC_SHOPIFY_GRAPHQL_URL: ${CERC_SHOPIFY_GRAPHQL_URL} CERC_SHOPIFY_ACCESS_TOKEN: ${CERC_SHOPIFY_ACCESS_TOKEN} CERC_FETCH_ORDER_DELAY: ${CERC_FETCH_ORDER_DELAY:-10000} - CERC_FAUCET_URL: ${CERC_FAUCET_URL} + CERC_FAUCET_URL: http://faucet:3000/ CERC_ITEMS_PER_ORDER: ${CERC_ITEMS_PER_ORDER:-10} volumes: - shopify-data:/app/data - - ../config/laconic-shopify/start-shopify.sh:/app/start-faucet.sh + - ../config/laconic-shopify/start-shopify.sh:/app/start-shopify.sh - ../config/laconic-shopify/product_pricings.json:/app/config/product_pricings.json extra_hosts: - "host.docker.internal:host-gateway" + faucet: + restart: unless-stopped + image: cerc/laconic-shopify-faucet:local + command: ["bash", "-c", "./start-faucet.sh"] + environment: + CERC_SCRIPT_DEBUG: ${CERC_SCRIPT_DEBUG} + CERC_LACONICD_RPC_ENDPOINT: ${CERC_LACONICD_RPC_ENDPOINT:-https://laconicd-sapo.laconic.com} + CERC_FAUCET_KEY: ${CERC_FAUCET_KEY} + CERC_LACONICD_CHAIN_ID: ${CERC_LACONICD_CHAIN_ID:-laconic-testnet-2} + CERC_LACONICD_PREFIX: ${CERC_LACONICD_PREFIX:-laconic} + CERC_LACONICD_GAS_PRICE: ${CERC_LACONICD_GAS_PRICE:-0.001} + volumes: + - faucet-data:/app/db + - ../config/laconic-shopify/start-faucet.sh:/app/start-faucet.sh + - ../config/laconic-shopify/config-template.toml:/app/environments/config-template.toml + healthcheck: + test: ["CMD", "nc", "-vz", "127.0.0.1", "3000"] + interval: 10s + timeout: 5s + retries: 10 + start_period: 5s + extra_hosts: + - "host.docker.internal:host-gateway" + volumes: - shopify-data: \ No newline at end of file + shopify-data: + faucet-data: \ No newline at end of file diff --git a/stack-orchestrator/config/laconic-shopify-faucet/config-template.toml b/stack-orchestrator/config/laconic-shopify/config-template.toml similarity index 100% rename from stack-orchestrator/config/laconic-shopify-faucet/config-template.toml rename to stack-orchestrator/config/laconic-shopify/config-template.toml diff --git a/stack-orchestrator/config/laconic-shopify/product_pricings.json b/stack-orchestrator/config/laconic-shopify/product_pricings.json index 91e1b5e..75c4073 100644 --- a/stack-orchestrator/config/laconic-shopify/product_pricings.json +++ b/stack-orchestrator/config/laconic-shopify/product_pricings.json @@ -1,5 +1,5 @@ { - "10 pre-paid webapp deployments": "100000", + "10 webapp deployments": "100000", "100 webapp deployments": "1000000", "500 webapp deployments": "5000000", "1000 webapp deployments": "10000000" diff --git a/stack-orchestrator/config/laconic-shopify-faucet/start-faucet.sh b/stack-orchestrator/config/laconic-shopify/start-faucet.sh similarity index 100% rename from stack-orchestrator/config/laconic-shopify-faucet/start-faucet.sh rename to stack-orchestrator/config/laconic-shopify/start-faucet.sh diff --git a/stack-orchestrator/config/laconic-shopify/start-shopify.sh b/stack-orchestrator/config/laconic-shopify/start-shopify.sh index d7ec38e..72fd3b2 100755 --- a/stack-orchestrator/config/laconic-shopify/start-shopify.sh +++ b/stack-orchestrator/config/laconic-shopify/start-shopify.sh @@ -18,4 +18,4 @@ export FETCH_ORDER_DELAY=$CERC_FETCH_ORDER_DELAY export FAUCET_URL=$CERC_FAUCET_URL export ITEMS_PER_ORDER=$CERC_ITEMS_PER_ORDER -yarn start \ No newline at end of file +yarn start diff --git a/stack-orchestrator/container-build/cerc-laconic-shopify/build.sh b/stack-orchestrator/container-build/cerc-laconic-shopify/build.sh index a7156f7..027eac1 100755 --- a/stack-orchestrator/container-build/cerc-laconic-shopify/build.sh +++ b/stack-orchestrator/container-build/cerc-laconic-shopify/build.sh @@ -5,4 +5,4 @@ source ${CERC_CONTAINER_BASE_DIR}/build-base.sh SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -docker build -t cerc/laconic-shopify:local ${build_command_args} -f ${SCRIPT_DIR}/Dockerfile ${CERC_REPO_BASE_DIR}/laconic-shopify +docker build -t cerc/laconic-shopify:local ${build_command_args} -f ${SCRIPT_DIR}/Dockerfile ${CERC_REPO_BASE_DIR}/shopify diff --git a/stack-orchestrator/stacks/laconic-shopify-faucet/README.md b/stack-orchestrator/stacks/laconic-shopify-faucet/README.md deleted file mode 100644 index 8f875c7..0000000 --- a/stack-orchestrator/stacks/laconic-shopify-faucet/README.md +++ /dev/null @@ -1,121 +0,0 @@ -# laconic-shopify-faucet - -Instructions for running the laconic faucet - -## Setup - -* Clone the stack repo: - - ```bash - laconic-so fetch-stack git.vdb.to/cerc-io/testnet-laconicd-stack - ``` - -* Clone the laconic-faucet respository: - - ```bash - laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-shopify-faucet setup-repositories - ``` - -* Build the container image: - - ```bash - laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-shopify-faucet build-containers - ``` - - This should create the `cerc/laconic-shopify-faucet` image locally - -## Create a deployment - -* Create a spec file for the deployment: - - ```bash - laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-shopify-faucet deploy init --output laconic-shopify-faucet-spec.yml - ``` - -* Edit `network` in the spec file to map container ports to host ports as required: - - ```bash - network: - ports: - faucet: - - '3000:3000' - ``` - -* Create a deployment from the spec file: - - ```bash - laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-shopify-faucet deploy create --spec-file laconic-shopify-faucet-spec.yml --deployment-dir laconic-shopify-faucet-deployment - ``` - -## Configuration - -* Inside the `laconic-shopify-faucet-deployment` deployment directory, open `config.env` file and set following env variables: - - ```bash - # Private key of a funded faucet account - CERC_FAUCET_KEY= - - # Optional - - # laconicd RPC endpoint (default: http://laconicd:26657) - CERC_LACONICD_RPC_ENDPOINT= - - # laconicd chain id (default: laconic_9000-1) - CERC_LACONICD_CHAIN_ID= - - # laconicd address prefix (default: laconic) - CERC_LACONICD_PREFIX= - - # laconicd gas price (default: 1) - CERC_LACONICD_GAS_PRICE= - ``` - -## Start the deployment - - ```bash - laconic-so deployment --dir laconic-shopify-faucet-deployment start - ``` - -## Check status - -* To list down and monitor the running container: - - ```bash - # With status - docker ps - - # Check logs for a container - docker logs -f - ``` - -## Run - -* Request tokens from the faucet for an account: - - ```bash - curl -X POST http://localhost:3000/faucet \ - -H "Content-Type: application/json" \ - -d '{"address": ""}' - - # Expected output: - # {"success":true,"txHash":""} - ``` - -## Clean up - -* Stop the `laconic-shopify-faucet` service running in the background: - - ```bash - # Stop the docker container - laconic-so deployment --dir laconic-shopify-faucet-deployment stop - ``` - -* To stop the service and also delete data: - - ```bash - # Stop the docker containers - laconic-so deployment --dir laconic-shopify-faucet-deployment stop --delete-volumes - - # Remove deployment directory (deployment will have to be recreated for a re-run) - rm -r laconic-shopify-faucet-deployment - ``` diff --git a/stack-orchestrator/stacks/laconic-shopify-faucet/stack.yml b/stack-orchestrator/stacks/laconic-shopify-faucet/stack.yml deleted file mode 100644 index 86be391..0000000 --- a/stack-orchestrator/stacks/laconic-shopify-faucet/stack.yml +++ /dev/null @@ -1,9 +0,0 @@ -version: "1.0" -name: laconic-shopify-faucet -description: "Faucet for shopify app" -repos: - - git.vdb.to/cerc-io/laconic-faucet@shopify -containers: - - cerc/laconic-shopify-faucet -pods: - - laconic-shopify-faucet diff --git a/stack-orchestrator/stacks/laconic-shopify/README.md b/stack-orchestrator/stacks/laconic-shopify/README.md index 4a3560a..e3aac49 100644 --- a/stack-orchestrator/stacks/laconic-shopify/README.md +++ b/stack-orchestrator/stacks/laconic-shopify/README.md @@ -22,7 +22,7 @@ Instructions for running the laconic shopify laconic-so --stack ~/cerc/testnet-laconicd-stack/stack-orchestrator/stacks/laconic-shopify build-containers ``` - This should create the `cerc/laconic-shopify-faucet` image locally + This should create the `cerc/laconic-shopify` and `cerc/laconic-shopify-faucet` images locally ## Create a deployment @@ -43,20 +43,32 @@ Instructions for running the laconic shopify * Inside the `laconic-shopify-deployment` deployment directory, open `config.env` file and set following env variables: ```bash - # Shopify GraphQL URL - CERC_SHOPIFY_GRAPHQL_URL='https://6h071x-zw.myshopify.com/admin/api/2024-10/graphql.json' + # Shopify GraphQL URL (default: 'https://6h071x-zw.myshopify.com/admin/api/2024-10/graphql.json') + CERC_SHOPIFY_GRAPHQL_URL= # Access token for Shopify API CERC_SHOPIFY_ACCESS_TOKEN= - # Delay for fetching orders in milliseconds - CERC_FETCH_ORDER_DELAY=10000 + # Delay for fetching orders in milliseconds (default: 10000) + CERC_FETCH_ORDER_DELAY= - # URL for the laconic faucet - CERC_FAUCET_URL='http://host.docker.internal:3000/' + # Number of line items per order in Get Orders GraphQL query (default: 10) + CERC_ITEMS_PER_ORDER= - # Number of line items per order in Get Orders GraphQL query - CERC_ITEMS_PER_ORDER=10 + # Private key of a funded faucet account + CERC_FAUCET_KEY= + + # laconicd RPC endpoint (default: https://laconicd-sapo.laconic.com/) + CERC_LACONICD_RPC_ENDPOINT= + + # laconicd chain id (default: laconic-testnet-2) + CERC_LACONICD_CHAIN_ID= + + # laconicd address prefix (default: laconic) + CERC_LACONICD_PREFIX= + + # laconicd gas price (default: 0.001) + CERC_LACONICD_GAS_PRICE= ``` ## Start the deployment diff --git a/stack-orchestrator/stacks/laconic-shopify/stack.yml b/stack-orchestrator/stacks/laconic-shopify/stack.yml index 3b5fcbf..761caed 100644 --- a/stack-orchestrator/stacks/laconic-shopify/stack.yml +++ b/stack-orchestrator/stacks/laconic-shopify/stack.yml @@ -2,8 +2,10 @@ version: "1.0" name: laconic-shopify description: "Service that integrates a Shopify app with the Laconic wallet." repos: - - git.vdb.to/cerc-io/laconic-shopify + - git.vdb.to/cerc-io/shopify + - git.vdb.to/cerc-io/laconic-faucet@shopify containers: - cerc/laconic-shopify + - cerc/laconic-shopify-faucet pods: - laconic-shopify