Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
116 changes: 116 additions & 0 deletions .github/workflows/deploy-explorer.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
name: Deploy Explorer App

on:
workflow_dispatch:
inputs:
CHAIN_NAME:
description: 'Chain name'
required: true
default: 'verana'
CHAIN_ID:
description: 'Chain ID'
required: true
default: 'vna-devnet-1'
RPC_ENDPOINTS:
description: 'JSON array of RPC endpoints'
required: true
default: '[{"provider":"primenode","address":"http://node1.devnet.verana.network:26657"}]'
API_ENDPOINTS:
description: 'JSON array of API endpoints'
required: true
default: '[{"provider":"primenode","address":"http://node1.devnet.verana.network:1317"}]'
CLUSTER_NODE:
description: 'Cluster node name'
required: true
default: 'cluster-utc-node-07efe5'

env:
DH_USERNAME: ${{ secrets.DOCKER_HUB_USERNAME }}
DH_TOKEN: ${{ secrets.DOCKER_HUB_PASSWORD }}
KUBECONFIG: ${{ secrets.OVH_KUBECONFIG }}
IMAGE_NAME: 'explorer-app'
IMAGE_TAG: 'latest'

jobs:
build-and-deploy:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Install dependencies
run: yarn install

- name: Build project
run: yarn build

- name: Update verana.json with Input Values
run: |
mkdir -p ./chains/mainnet
jq --arg rpc_raw '${{ github.event.inputs.RPC_ENDPOINTS }}' \
--arg api_raw '${{ github.event.inputs.API_ENDPOINTS }}' \
--arg chain_name "${{ github.event.inputs.CHAIN_NAME }}" \
--arg chain_id "${{ github.event.inputs.CHAIN_ID }}" \
'
.rpc = ($rpc_raw | fromjson) |
.api = ($api_raw | fromjson) |
.chain_name = $chain_name |
.chain_id = $chain_id
' ./chains/mainnet/verana.json > ./chains/mainnet/verana-updated.json
mv ./chains/mainnet/verana-updated.json ./chains/mainnet/verana.json

- name: Log in to DockerHub
uses: docker/login-action@v2
with:
username: ${{ env.DH_USERNAME }}
password: ${{ env.DH_TOKEN }}

- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ env.DH_USERNAME }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}

- name: Determine Branch Name
id: determine-branch
run: |
if [ "${{ github.ref_name }}" == "main" ]; then
echo "BRANCH_NAME=vna-devnet-main" >> $GITHUB_ENV
else
BRANCH_NAME=$(echo "vna-devnet-${{ github.ref_name }}" | sed 's/\//-/g')
echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV
fi

- name: Set up kubectl
uses: azure/setup-kubectl@v4
with:
version: 'v1.29.9'

- name: Create Namespace
run: |
echo "$KUBECONFIG" > k8s_config
export KUBECONFIG=k8s_config
kubectl create namespace ${{ env.BRANCH_NAME }} || true

- name: Deploy ConfigMap
run: |
echo "$KUBECONFIG" > k8s_config
export KUBECONFIG=k8s_config
kubectl apply -f kubernetes/explorer-config.yaml --namespace=${{ env.BRANCH_NAME }}

- name: Deploy Explorer App
run: |
echo "$KUBECONFIG" > k8s_config
export KUBECONFIG=k8s_config
sed -i "s|yourdockerhubusername/explorer-app:latest|${{ env.DH_USERNAME }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}|" ./kubernetes/explorer-deployment.yaml
kubectl apply -f kubernetes/explorer-deployment.yaml --namespace=${{ env.BRANCH_NAME }}

- name: Deploy Explorer LoadBalancer Service (optional)
run: |
echo "$KUBECONFIG" > k8s_config
export KUBECONFIG=k8s_config
kubectl apply -f kubernetes/explorer-service.yaml --namespace=${{ env.BRANCH_NAME }}
25 changes: 25 additions & 0 deletions chains/mainnet/verana.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"chain_name": "verana",
"chain_id": "vna-devnet-1",
"status": "live",
"api": [
{"provider": "primenode", "address": "http://node1.devnet.verana.network:1317"},
{"provider": "node2", "address": "http://node2.devnet.verana.network:1317"}
],
"rpc": [
{"provider": "primenode", "address": "http://node1.devnet.verana.network:26657"},
{"provider": "node2", "address": "http://node2.devnet.verana.network:26657"}
],
"sdk_version": "0.50.13",
"coin_type": "118",
"min_tx_fee": "8000",
"assets": [{
"base": "uvna",
"symbol": "VNA",
"exponent": "6",
"logo": "/logos/verana.svg"
}],
"addr_prefix": "verana",
"theme_color": "#161723",
"logo": "/logos/verana.svg"
}
30 changes: 30 additions & 0 deletions kubernetes/explorer-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: explorer-config
namespace: default # (this will be overridden by --namespace=${{ env.BRANCH_NAME }})
data:
verana.json: |
{
"chain_name": "verana",
"chain_id": "vna-devnet-1",
"status": "live",
"api": [
{"provider": "primenode", "address": "http://node1.devnet.verana.network:1317"}
],
"rpc": [
{"provider": "primenode", "address": "http://node1.devnet.verana.network:26657"}
],
"sdk_version": "0.50.13",
"coin_type": "118",
"min_tx_fee": "8000",
"assets": [{
"base": "uvna",
"symbol": "VNA",
"exponent": "6",
"logo": "/logos/verana.svg"
}],
"addr_prefix": "verana",
"theme_color": "#161723",
"logo": "/logos/verana.svg"
}
30 changes: 30 additions & 0 deletions kubernetes/explorer-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: explorer-deployment
namespace: default # (will be replaced dynamically)
labels:
app: explorer
spec:
replicas: 1
selector:
matchLabels:
app: explorer
template:
metadata:
labels:
app: explorer
spec:
containers:
- name: explorer
image: yourdockerhubusername/explorer-app:latest # will be replaced dynamically
ports:
- containerPort: 80
volumeMounts:
- name: config-volume
mountPath: /usr/share/nginx/html/chains/mainnet
readOnly: true
volumes:
- name: config-volume
configMap:
name: explorer-config