Skip to content

Deploy BDJuno on mainnet #19

Deploy BDJuno on mainnet

Deploy BDJuno on mainnet #19

name: Deploy BDJuno on mainnet
#on:
# push:
# branches:
# - main
on:
workflow_dispatch:
jobs:
deploy:
runs-on: cudos-explorer
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Install and start Docker
run: |
sudo apt install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER
newgrp docker
#- name: Set up Docker
# uses: docker/setup-buildx-action@v1
- name: Set up Docker Buildx
run: |
sudo /usr/bin/docker buildx create --name builder --use
sudo /usr/bin/docker buildx inspect --bootstrap
- name: Stop and remove any existing containers
run: |
sudo docker stop cudos-bdjuno-hasura-1 || true
sudo docker rm cudos-bdjuno-hasura-1 || true
sudo docker stop cudos-bdjuno-bdjuno-1 || true
sudo docker rm cudos-bdjuno-bdjuno-1 || true
sudo docker stop cudos-bdjuno-hasura-actions-1 || true
sudo docker rm cudos-bdjuno-hasura-actions-1 || true
sudo docker stop cloudsql-proxy || true
sudo docker rm cloudsql-proxy || true
- name: Create bdjuno directory and download genesis file
run: |
mkdir bdjuno
wget https://github.com/cudoventures/cudos-builders/blob/cudos-master/docker/config/genesis.mainnet.json
mv genesis.mainnet.json bdjuno/genesis.json
chmod 644 bdjuno/genesis.json
- name: Setup bdjuno config file
run: |
cat << EOF > bdjuno/config.yaml
chain:
bech32_prefix: cudos
modules:
- modules
- messages
- auth
- bank
- consensus
- gov
- slashing
- staking
- distribution
- pricefeed
- cosmwasm
- gravity
- cudomint
- nft
- group
- cw20token
- marketplace
node:
type: remote
config:
rpc:
client_name: cudos-network
address: http://archive.hosts.cudos.org:26657
max_connections: 20
grpc:
address: http://archive.hosts.cudos.org:9090
insecure: true
parsing:
workers: 5
listen_new_blocks: true
parse_old_blocks: false
parse_genesis: true
start_height: 1
fast_sync: false
genesis_file_path: /usr/local/bdjuno/bdjuno/genesis.json
database:
name: ${{ secrets.POSTGRES_DB }}
host: host.docker.internal
port: 5432
user: ${{ secrets.POSTGRES_USER }}
password: ${{ secrets.POSTGRES_PASSWORD }}
schema: public
max_open_connections: 10
max_idle_connections: 10
logging:
level: debug
format: json
telemetry:
port: 5000
pricefeed:
tokens:
- name: Cudos
units:
- denom: cudos
exponent: 0
price_id: cudos
distribution:
rewards_frequency: 1000
workers:
- name: fix_blocks_worker
interval: 60m
- name: migrate_nfts_worker
interval: 120m
- name: blocks_monitoring_worker
interval: 30s
cudomint:
stats_service_url: https://stats.cudos.org
crypto-compare:
crypto_compare_prod_api_key: ${{ secrets.CRYPTO_COMPARE_PROD_API_KEY }}
crypto_compare_free_api_key: ${{ secrets.CRYPTO_COMPARE_FREE_API_KEY }}
EOF
chmod 644 bdjuno/config.yaml
cat bdjuno/config.yaml
- name: Setup .env for Hasura
run: |
cat << EOF > .env
HASURA_GRAPHQL_DATABASE_URL=postgres://${{ secrets.POSTGRES_USER }}:${{ secrets.POSTGRES_PASSWORD }}@host.docker.internal:5432/${{ secrets.POSTGRES_DB }}
HASURA_GRAPHQL_ENABLE_CONSOLE="true"
HASURA_GRAPHQL_DEV_MODE="false"
HASURA_GRAPHQL_ENABLED_LOG_TYPES=startup, http-log, webhook-log, websocket-log, query-log
HASURA_GRAPHQL_ADMIN_SECRET=${{ secrets.HASURA_GRAPHQL_ADMIN_SECRET }}
HASURA_GRAPHQL_ENDPOINT_URL=${{ secrets.HASURA_GRAPHQL_ENDPOINT_URL }}
HASURA_GRAPHQL_UNAUTHORIZED_ROLE="anonymous"
HASURA_ACTIONS_GRPC="http://archive.hosts.cudos.org:9090"
HASURA_ACTIONS_RPC="http://archive.hosts.cudos.org:26657"
HASURA_ACTIONS_PORT=4000
GCLOUD_INSTANCE_CONNECTION_NAME=cudos-mainnet-infra:europe-west2:cudos-mainnet-sql
CRYPTO_COMPARE_PROD_API_KEY="${{ secrets.CRYPTO_COMPARE_PROD_API_KEY }}"
CRYPTO_COMPARE_FREE_API_KEY="${{ secrets.CRYPTO_COMPARE_FREE_API_KEY }}"
LOGGING_DRIVER=gcplogs
EOF
chmod 644 .env
cat .env
- name: Setup Hasura config file
run: |
cat << EOF > hasura/config.yaml
version: 3
endpoint: http://localhost:8080
api_paths:
v1_query: v1/query
v2_query: v2/query
v1_metadata: v1/metadata
graphql: v1/graphql
config: v1alpha1/config
pg_dump: v1alpha1/pg_dump
version: v1/version
metadata_directory: metadata
migrations_directory: migrations
seeds_directory: seeds
actions:
kind: synchronous
handler_webhook_baseurl: http://localhost:4000
codegen:
framework: ""
output_dir: ""
EOF
chmod 644 hasura/config.yaml
cat hasura/config.yaml
- name: Prepare container access
run: |
sudo mkdir -p /opt/secrets
sudo chown -R automgmt:automgmt /opt/secrets
sudo echo "${{ secrets.CLOUDSQL_CREDS_JSON }}" | base64 -d > /opt/secrets/cloudsqlcreds.json
#gcloud auth activate-service-account --key-file=/opt/secrets/cloudsqlcreds.json
#gcloud auth configure-docker
sudo docker pull gcr.io/cloudsql-docker/gce-proxy:1.33.15
- name: Deploy with Docker Compose
run: |
sudo docker compose --file=docker-compose-prod.yml up --build -d
sleep 30
- name: Apply Hasura metadata
run: |
cd hasura
curl -L https://github.com/hasura/graphql-engine/raw/stable/cli/get.sh | bash
hasura metadata apply --endpoint ${{ secrets.HASURA_GRAPHQL_ENDPOINT_URL }} --admin-secret ${{ secrets.HASURA_GRAPHQL_ADMIN_SECRET }}