Skip to content

Commit

Permalink
Deploy an oracle cronjob (#1814)
Browse files Browse the repository at this point in the history
  • Loading branch information
yerdua authored and celo-ci-bot-user committed Dec 3, 2019
1 parent 8f87dda commit cd2a2e2
Show file tree
Hide file tree
Showing 22 changed files with 359 additions and 7 deletions.
10 changes: 10 additions & 0 deletions .env
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,16 @@ GETH_BOOTNODE_DOCKER_IMAGE_TAG="master"
CELOTOOL_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet/celo-monorepo"
CELOTOOL_DOCKER_IMAGE_TAG="celotool-c8e3392aa2ca44ff83b4035700ece5fd12ed2b84"

CELOCLI_STANDALONE_IMAGE_REPOSITORY="gcr.io/celo-testnet/celocli-standalone"
CELOCLI_STANDALONE_IMAGE_TAG="0.0.30-beta2"

# Schedule for an oracle deployed via celotool, expressed in crontab syntax
# This schedule is "every 5th minute"
ORACLE_CRON_SCHEDULE="*/5 * * * *"

ORACLE_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet/oracle"
ORACLE_DOCKER_IMAGE_TAG="default"

TRANSACTION_METRICS_EXPORTER_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet/celo-monorepo"
TRANSACTION_METRICS_EXPORTER_DOCKER_IMAGE_TAG="transaction-metrics-exporter-d3d165a7db548d175cd703c86c20c1657c04368d"

Expand Down
10 changes: 10 additions & 0 deletions .env.alfajores
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,16 @@ GETH_BOOTNODE_DOCKER_IMAGE_TAG="9575a01c12438e1adc6bb610c891cb5066aaa7aa"
CELOTOOL_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet/celo-monorepo"
CELOTOOL_DOCKER_IMAGE_TAG="celotool-552b1accf90404fdcd886670d150af0a5cae116f"

CELOCLI_STANDALONE_IMAGE_REPOSITORY="gcr.io/celo-testnet/celocli-standalone"
CELOCLI_STANDALONE_IMAGE_TAG="0.0.30-beta2"

# Schedule for an oracle deployed via celotool, expressed in crontab syntax
# This schedule is "every 5th minute"
ORACLE_CRON_SCHEDULE="*/5 * * * *"

ORACLE_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet/oracle"
ORACLE_DOCKER_IMAGE_TAG="default"

TRANSACTION_METRICS_EXPORTER_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet/celo-monorepo"
TRANSACTION_METRICS_EXPORTER_DOCKER_IMAGE_TAG="transaction-metrics-exporter-552b1accf90404fdcd886670d150af0a5cae116f"

Expand Down
10 changes: 10 additions & 0 deletions .env.alfajoresstaging
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,16 @@ GETH_BOOTNODE_DOCKER_IMAGE_TAG="9575a01c12438e1adc6bb610c891cb5066aaa7aa"
CELOTOOL_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet/celo-monorepo"
CELOTOOL_DOCKER_IMAGE_TAG="celotool-552b1accf90404fdcd886670d150af0a5cae116f"

CELOCLI_STANDALONE_IMAGE_REPOSITORY="gcr.io/celo-testnet/celocli-standalone"
CELOCLI_STANDALONE_IMAGE_TAG="0.0.30-beta2"

# Schedule for an oracle deployed via celotool, expressed in crontab syntax
# This schedule is "every 5th minute"
ORACLE_CRON_SCHEDULE="*/5 * * * *"

ORACLE_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet/oracle"
ORACLE_DOCKER_IMAGE_TAG="default"

TRANSACTION_METRICS_EXPORTER_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet/celo-monorepo"
TRANSACTION_METRICS_EXPORTER_DOCKER_IMAGE_TAG="transaction-metrics-exporter-552b1accf90404fdcd886670d150af0a5cae116f"

Expand Down
107 changes: 107 additions & 0 deletions .env.baklavastaging
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
# Don't use "//" for comments in this file.
# This file is meant to be executed as a bash script for testing.
ENV_TYPE="staging"

GETH_VERBOSITY=2

VM_BASED=true

KUBERNETES_CLUSTER_NAME="baklavastaging"
KUBERNETES_CLUSTER_ZONE="us-west1-a"
CLUSTER_DOMAIN_NAME="celo-testnet"

TESTNET_PROJECT_NAME="celo-testnet"

BLOCKSCOUT_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet/blockscout"
BLOCKSCOUT_DOCKER_IMAGE_TAG="c42d9c2f3ef5e79c152c44a82fa0f12233dcfb5c"
BLOCKSCOUT_WEB_REPLICAS=3
# Increment this value everytime you redeploy blockscout. Or else the deployment will fail due to the
# existing database.
BLOCKSCOUT_DB_SUFFIX="0"
BLOCKSCOUT_SUBNETWORK_NAME="Baklava Staging"

ETHSTATS_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet/ethstats"
ETHSTATS_DOCKER_IMAGE_TAG="bbc89603d872af1c6b37cf00e8220ed26237fc91"
ETHSTATS_TRUSTED_ADDRESSES=""
ETHSTATS_BANNED_ADDRESSES=""

GETH_NODE_DOCKER_IMAGE_REPOSITORY="us.gcr.io/celo-testnet/geth"
# When upgrading change this to latest commit hash from the master of the geth repo
# `geth $ git show | head -n 1`
GETH_NODE_DOCKER_IMAGE_TAG="a85db20179b503b802430aef7085d35aa761c63d"

GETH_BOOTNODE_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet/geth-all"
# When upgrading change this to latest commit hash from the master of the geth repo
# `geth $ git show | head -n 1`
GETH_BOOTNODE_DOCKER_IMAGE_TAG="a85db20179b503b802430aef7085d35aa761c63d"

CELOTOOL_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet/celo-monorepo"
CELOTOOL_DOCKER_IMAGE_TAG="celotool-51ae8e72be34a614346950b6fbd8ba3b94223947"

CELOCLI_STANDALONE_IMAGE_REPOSITORY="gcr.io/celo-testnet/celocli-standalone"
CELOCLI_STANDALONE_IMAGE_TAG="0.0.30-beta2"

# Schedule for an oracle deployed via celotool, expressed in crontab syntax
# This schedule is "every 5th minute"
ORACLE_CRON_SCHEDULE="*/5 * * * *"

ORACLE_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet/oracle"
ORACLE_DOCKER_IMAGE_TAG="baklavastaging"

TRANSACTION_METRICS_EXPORTER_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet/celo-monorepo"
TRANSACTION_METRICS_EXPORTER_DOCKER_IMAGE_TAG="transaction-metrics-exporter-51ae8e72be34a614346950b6fbd8ba3b94223947"

ATTESTATION_SERVICE_DOCKER_IMAGE_REPOSITORY="us.gcr.io/celo-testnet/celo-monorepo"
ATTESTATION_SERVICE_DOCKER_IMAGE_TAG="attestation-service-c8e3392aa2ca44ff83b4035700ece5fd12ed2b84"

GETH_EXPORTER_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet-production/geth-exporter"
GETH_EXPORTER_DOCKER_IMAGE_TAG="ed7d21bd50592709173368cd697ef73c1774a261"

# Genesis Vars
NETWORK_ID=31416
CONSENSUS_TYPE="istanbul"
BLOCK_TIME=5
# Minimum epoch length is 15 minutes
EPOCH=180
LOOKBACK=12
ISTANBUL_REQUEST_TIMEOUT_MS=10000

# the number of load test clients that will be given funds in the genesis & migrations
LOAD_TEST_CLIENTS=10
# every 3.6 seconds, so that 1000 transactions are sent by a client every hour
LOAD_TEST_TX_DELAY_MS=3600

VALIDATORS=70
PROXIED_VALIDATORS=35
TX_NODES=5
# STATIC_IPS_FOR_GETH_NODES=false
# Whether tx_nodes/validators stateful set should use ssd persistent disks
# GETH_NODES_SSD_DISKS=true
IN_MEMORY_DISCOVERY_TABLE=false
# PING_IP_FROM_PACKET=false

# Testnet vars
# GETH_NODES_BACKUP_CRONJOB_ENABLED=true
# CONTRACT_CRONJOBS_ENABLED=true
CLUSTER_CREATION_FLAGS="--enable-autoscaling --min-nodes 3 --max-nodes 8 --machine-type=n1-standard-4"


GETH_NODE_CPU_REQUEST=400m
GETH_NODE_MEMORY_REQUEST=2.5G

VERIFICATION_POOL_URL="https://us-central1-celo-testnet.cloudfunctions.net/handleVerificationRequestbaklavastaging/v0.1/sms/"
VERIFICATION_REWARDS_URL="https://us-central1-celo-testnet.cloudfunctions.net/handleVerificationRequestbaklavastaging/v0.1/rewards/"

STACKDRIVER_MONITORING_DASHBOARD="https://app.google.stackdriver.com/dashboards/11713866848730522797?project=celo-testnet"
STACKDRIVER_NOTIFICATION_CHANNEL_APPLICATIONS="12047595356119796119"
STACKDRIVER_NOTIFICATION_CHANNEL_PROTOCOL="12047595356119796119"
STACKDRIVER_NOTIFICATION_APPLICATIONS_PREFIX="notification-service-,blockchain-api-,faucet-"

MOBILE_WALLET_PLAYSTORE_LINK="https://play.google.com/apps/internaltest/4700990475000634666"

# NOTIFICATION_SERVICE_FIREBASE_DB="https://console.firebase.google.com/u/0/project/celo-org-mobile/database/celo-org-mobile-int/data"

PROMTOSD_SCRAPE_INTERVAL="5m"
PROMTOSD_EXPORT_INTERVAL="5m"

SMS_RETRIEVER_HASH_CODE=l5k6LvdPDXS
10 changes: 10 additions & 0 deletions .env.integration
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,16 @@ GETH_BOOTNODE_DOCKER_IMAGE_TAG="09a217ff58a95214cbc5189c933359707f4fdaf2"
CELOTOOL_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet/celo-monorepo"
CELOTOOL_DOCKER_IMAGE_TAG="celotool-5bea6d30cbe6aa4272b32a4d2cfed5567f422ea9"

CELOCLI_STANDALONE_IMAGE_REPOSITORY="gcr.io/celo-testnet/celocli-standalone"
CELOCLI_STANDALONE_IMAGE_TAG="0.0.30-beta2"

# Schedule for an oracle deployed via celotool, expressed in crontab syntax
# This schedule is "every 5th minute"
ORACLE_CRON_SCHEDULE="*/5 * * * *"

ORACLE_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet/oracle"
ORACLE_DOCKER_IMAGE_TAG="default"

TRANSACTION_METRICS_EXPORTER_DOCKER_IMAGE_REPOSITORY="gcr.io/celo-testnet/celo-monorepo"
TRANSACTION_METRICS_EXPORTER_DOCKER_IMAGE_TAG="transaction-metrics-exporter-5bea6d30cbe6aa4272b32a4d2cfed5567f422ea9"

Expand Down
15 changes: 15 additions & 0 deletions dockerfiles/cli-standalone/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
FROM node:10-alpine

RUN apk update && apk add python git make gcc g++ bash

RUN adduser -D -S celo

USER celo

RUN mkdir /home/celo/.npm-global
ENV PATH=/home/celo/.npm-global/bin:$PATH
ENV NPM_CONFIG_PREFIX=/home/celo/.npm-global

WORKDIR /home/celo/

RUN npm install -g @celo/celocli@0.0.30-beta2
2 changes: 1 addition & 1 deletion packages/attestation-service/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
"lint": "tslint -c tslint.json --project ."
},
"dependencies": {
"@celo/contractkit": "0.2.1-dev",
"@celo/contractkit": "0.2.3-dev",
"@celo/utils": "^0.1.0",
"bignumber.js": "^7.2.0",
"body-parser": "1.19.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/celotool/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"@celo/verification-pool-api": "^1.0.0",
"@celo/utils": "^0.1.0",
"@celo/walletkit": "^0.0.14",
"@celo/contractkit": "0.2.1-dev",
"@celo/contractkit": "0.2.3-dev",
"@google-cloud/monitoring": "0.7.1",
"@google-cloud/pubsub": "^0.28.1",
"@google-cloud/storage": "^2.4.3",
Expand Down
15 changes: 15 additions & 0 deletions packages/celotool/src/cmds/deploy/destroy/oracle.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { switchToClusterFromEnv } from 'src/lib/cluster'
import { removeHelmRelease } from 'src/lib/oracle'
import { DestroyArgv } from '../../deploy/destroy'

export const command = 'oracle'

export const describe = 'destroy the oracle package'

export const builder = {}

export const handler = async (argv: DestroyArgv) => {
await switchToClusterFromEnv()

await removeHelmRelease(argv.celoEnv)
}
17 changes: 17 additions & 0 deletions packages/celotool/src/cmds/deploy/initial/oracle.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { InitialArgv } from 'src/cmds/deploy/initial'
import { switchToClusterFromEnv } from 'src/lib/cluster'
import { installHelmChart } from 'src/lib/oracle'
import yargs from 'yargs'

export const command = 'oracle'

export const describe = 'deploy the oracle for the specified network'

export const builder = (argv: yargs.Argv) => {
return argv
}

export const handler = async (argv: InitialArgv) => {
await switchToClusterFromEnv()
await installHelmChart(argv.celoEnv)
}
1 change: 0 additions & 1 deletion packages/celotool/src/lib/attestation-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ async function helmParameters(celoEnv: string) {
envVar.ATTESTATION_SERVICE_DOCKER_IMAGE_REPOSITORY
)}`,
`--set attestation_service.image.tag=${fetchEnv(envVar.ATTESTATION_SERVICE_DOCKER_IMAGE_TAG)}`,
`--set attestation_service.image.tag=${fetchEnv(envVar.ATTESTATION_SERVICE_DOCKER_IMAGE_TAG)}`,
`--set attestation_service.nexmo.apiKey="${fetchEnv(envVar.NEXMO_KEY)}"`,
`--set attestation_service.nexmo.apiSecret="${fetchEnv(envVar.NEXMO_SECRET)}"`,
`--set attestation_service.sms_retriever_hash_code="${fetchEnv(
Expand Down
4 changes: 4 additions & 0 deletions packages/celotool/src/lib/endpoints.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,7 @@ export function getEthstatsUrl(argv: CeloEnvArgv) {
export function getBlockchainApiUrl(argv: CeloEnvArgv) {
return `https://${argv.celoEnv}-dot-${fetchEnv(envVar.TESTNET_PROJECT_NAME)}.appspot.com`
}

export function getFornoUrl(celoEnv: string) {
return `https://${celoEnv}-forno.${fetchEnv(envVar.CLUSTER_DOMAIN_NAME)}.org`
}
5 changes: 5 additions & 0 deletions packages/celotool/src/lib/env-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ export enum envVar {
ATTESTATION_SERVICE_DOCKER_IMAGE_REPOSITORY = 'ATTESTATION_SERVICE_DOCKER_IMAGE_REPOSITORY',
ATTESTATION_SERVICE_DOCKER_IMAGE_TAG = 'ATTESTATION_SERVICE_DOCKER_IMAGE_TAG',
BLOCK_TIME = 'BLOCK_TIME',
CELOCLI_STANDALONE_IMAGE_REPOSITORY = 'CELOCLI_STANDALONE_IMAGE_REPOSITORY',
CELOCLI_STANDALONE_IMAGE_TAG = 'CELOCLI_STANDALONE_IMAGE_TAG',
CELOTOOL_CELOENV = 'CELOTOOL_CELOENV',
CELOTOOL_CONFIRMED = 'CELOTOOL_CONFIRMED',
CELOTOOL_DOCKER_IMAGE_REPOSITORY = 'CELOTOOL_DOCKER_IMAGE_REPOSITORY',
Expand Down Expand Up @@ -62,6 +64,9 @@ export enum envVar {
NEXMO_KEY = 'NEXMO_KEY',
NEXMO_SECRET = 'NEXMO_SECRET',
NOTIFICATION_SERVICE_FIREBASE_DB = 'NOTIFICATION_SERVICE_FIREBASE_DB',
ORACLE_CRON_SCHEDULE = 'ORACLE_CRON_SCHEDULE',
ORACLE_DOCKER_IMAGE_REPOSITORY = 'ORACLE_DOCKER_IMAGE_REPOSITORY',
ORACLE_DOCKER_IMAGE_TAG = 'ORACLE_DOCKER_IMAGE_TAG',
PROMTOSD_EXPORT_INTERVAL = 'PROMTOSD_EXPORT_INTERVAL',
PROMTOSD_SCRAPE_INTERVAL = 'PROMTOSD_SCRAPE_INTERVAL',
SMS_RETRIEVER_HASH_CODE = 'SMS_RETRIEVER_HASH_CODE',
Expand Down
35 changes: 35 additions & 0 deletions packages/celotool/src/lib/oracle.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import { getFornoUrl } from 'src/lib/endpoints'
import { envVar, fetchEnv } from 'src/lib/env-utils'
import { installGenericHelmChart, removeGenericHelmChart } from 'src/lib/helm_deploy'

const helmChartPath = '../helm-charts/oracle'

export async function installHelmChart(celoEnv: string) {
return installGenericHelmChart(
celoEnv,
releaseName(celoEnv),
helmChartPath,
helmParameters(celoEnv)
)
}
export async function removeHelmRelease(celoEnv: string) {
await removeGenericHelmChart(releaseName(celoEnv))
}

function helmParameters(celoEnv: string) {
return [
`--set celotool.image.repository=${fetchEnv(envVar.CELOTOOL_DOCKER_IMAGE_REPOSITORY)}`,
`--set celotool.image.tag=${fetchEnv(envVar.CELOTOOL_DOCKER_IMAGE_TAG)}`,
`--set mnemonic="${fetchEnv(envVar.MNEMONIC)}"`,
`--set oracle.cronSchedule="${fetchEnv(envVar.ORACLE_CRON_SCHEDULE)}"`,
`--set oracle.image.repository=${fetchEnv(envVar.ORACLE_DOCKER_IMAGE_REPOSITORY)}`,
`--set oracle.image.tag=${fetchEnv(envVar.ORACLE_DOCKER_IMAGE_TAG)}`,
`--set celocli.nodeUrl=${getFornoUrl(celoEnv)}`,
`--set celocli.image.repository=${fetchEnv(envVar.CELOCLI_STANDALONE_IMAGE_REPOSITORY)}`,
`--set celocli.image.tag=${fetchEnv(envVar.CELOCLI_STANDALONE_IMAGE_TAG)}`,
]
}

function releaseName(celoEnv: string) {
return `${celoEnv}-oracle`
}
2 changes: 1 addition & 1 deletion packages/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
"test": "TZ=UTC jest --runInBand"
},
"dependencies": {
"@celo/contractkit": "0.2.1-dev",
"@celo/contractkit": "0.2.3-dev",
"@celo/utils": "^0.1.0",
"@oclif/command": "^1",
"@oclif/config": "^1",
Expand Down
2 changes: 1 addition & 1 deletion packages/contractkit/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@celo/contractkit",
"version": "0.2.1-dev",
"version": "0.2.3-dev",
"description": "Celo's ContractKit to interact with Celo network",
"main": "./lib/index.js",
"types": "./lib/index.d.ts",
Expand Down
22 changes: 22 additions & 0 deletions packages/helm-charts/oracle/.helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
5 changes: 5 additions & 0 deletions packages/helm-charts/oracle/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
apiVersion: v1
appVersion: "1.0"
description: A Helm chart for Kubernetes
name: oracle
version: 0.1.0
Loading

0 comments on commit cd2a2e2

Please sign in to comment.