Tiltfile: optional pyth and explorer deployment

This adds the explorer and Pyth as optional components to improve
Tilt startup times, as originally suggested by Justin.

Defaults to true in CI.

Change-Id: Id9fffe5b11311baadc042815c0cc747de037554e
This commit is contained in:
Leo 2021-09-13 15:38:20 +02:00 committed by Leopold Schabel
parent 7914512797
commit ef0cb91ac6
2 changed files with 89 additions and 73 deletions

155
Tiltfile
View File

@ -29,12 +29,18 @@ config.define_string("namespace", False, "Kubernetes namespace to use")
config.define_string("gcpProject", False, "GCP project ID for BigTable persistence") config.define_string("gcpProject", False, "GCP project ID for BigTable persistence")
config.define_string("bigTableKeyPath", False, "Path to BigTable json key file") config.define_string("bigTableKeyPath", False, "Path to BigTable json key file")
# Components
config.define_bool("pyth", False, "Enable Pyth-to-Wormhole component")
config.define_bool("explorer", False, "Enable explorer component")
cfg = config.parse() cfg = config.parse()
num_guardians = int(cfg.get("num", "5")) num_guardians = int(cfg.get("num", "5"))
namespace = cfg.get("namespace", "wormhole") namespace = cfg.get("namespace", "wormhole")
gcpProject = cfg.get("gcpProject", "local-dev") gcpProject = cfg.get("gcpProject", "local-dev")
bigTableKeyPath = cfg.get("bigTableKeyPath", "./event_database/devnet_key.json") bigTableKeyPath = cfg.get("bigTableKeyPath", "./event_database/devnet_key.json")
ci = cfg.get("ci", False) ci = cfg.get("ci", False)
pyth = cfg.get("pyth", ci)
explorer = cfg.get("explorer", ci)
# namespace # namespace
@ -75,12 +81,13 @@ local_resource(
# node # node
k8s_yaml_with_ns( if explorer:
secret_yaml_generic( k8s_yaml_with_ns(
"bridge-bigtable-key", secret_yaml_generic(
from_file = "bigtable-key.json=" + bigTableKeyPath, "bridge-bigtable-key",
), from_file = "bigtable-key.json=" + bigTableKeyPath,
) ),
)
docker_build( docker_build(
ref = "guardiand-image", ref = "guardiand-image",
@ -98,7 +105,19 @@ def build_node_yaml():
if container["name"] != "guardiand": if container["name"] != "guardiand":
fail("container 0 is not guardiand") fail("container 0 is not guardiand")
container["command"] += ["--devNumGuardians", str(num_guardians)] container["command"] += ["--devNumGuardians", str(num_guardians)]
container["command"] += ["--bigTableGCPProject", gcpProject]
if explorer:
container["command"] += [
"--bigTablePersistenceEnabled",
"--bigTableInstanceName",
"wormhole",
"--bigTableTableName",
"v2Events",
"--bigTableKeyPath",
"/tmp/mounted-keys/bigtable-key.json",
"--bigTableGCPProject",
gcpProject,
]
return encode_yaml_stream(node_yaml) return encode_yaml_stream(node_yaml)
@ -110,14 +129,15 @@ k8s_resource("guardian", resource_deps = ["proto-gen", "solana-devnet"], port_fo
port_forward(7071, name = "Public REST [:7071]"), port_forward(7071, name = "Public REST [:7071]"),
]) ])
docker_build( if pyth:
ref = "pyth", docker_build(
context = ".", ref = "pyth",
dockerfile = "third_party/pyth/Dockerfile.pyth", context = ".",
) dockerfile = "third_party/pyth/Dockerfile.pyth",
k8s_yaml_with_ns("./devnet/pyth.yaml") )
k8s_yaml_with_ns("./devnet/pyth.yaml")
k8s_resource("pyth", resource_deps = ["solana-devnet"]) k8s_resource("pyth", resource_deps = ["solana-devnet"])
# publicRPC proxy that allows grpc over http1, for local development # publicRPC proxy that allows grpc over http1, for local development
@ -168,22 +188,24 @@ k8s_resource(
# pyth2wormhole client # pyth2wormhole client
docker_build( if pyth:
ref = "p2w-client", docker_build(
context = ".", ref = "p2w-client",
only = ["./solana", "./third_party"], context = ".",
dockerfile = "./third_party/pyth/Dockerfile.p2w-client", only = ["./solana", "./third_party"],
dockerfile = "./third_party/pyth/Dockerfile.p2w-client",
# Ignore target folders from local (non-container) development. # Ignore target folders from local (non-container) development.
ignore = ["./solana/*/target"], ignore = ["./solana/*/target"],
) )
k8s_yaml_with_ns("devnet/p2w-client.yaml") k8s_yaml_with_ns("devnet/p2w-client.yaml")
k8s_resource("p2w-client", k8s_resource(
resource_deps=["solana-devnet", "pyth"], "p2w-client",
port_forwards=[] resource_deps = ["solana-devnet", "pyth"],
) port_forwards = [],
)
# eth devnet # eth devnet
@ -237,51 +259,52 @@ def build_cloud_function(container_name, go_func_name, path, builder):
[path], [path],
) )
build_cloud_function( if explorer:
container_name = "cloud-function-readrow", build_cloud_function(
go_func_name = "ReadRow", container_name = "cloud-function-readrow",
path = "./event_database/cloud_functions", go_func_name = "ReadRow",
builder = "gcr.io/buildpacks/builder:v1", path = "./event_database/cloud_functions",
) builder = "gcr.io/buildpacks/builder:v1",
)
local_resource( local_resource(
name = "pack-bin", name = "pack-bin",
cmd = "go build -mod=readonly -o bin/pack github.com/buildpacks/pack/cmd/pack", cmd = "go build -mod=readonly -o bin/pack github.com/buildpacks/pack/cmd/pack",
dir = "tools", dir = "tools",
) )
k8s_yaml_with_ns("devnet/bigtable.yaml") k8s_yaml_with_ns("devnet/bigtable.yaml")
k8s_resource("bigtable-emulator", port_forwards = [ k8s_resource("bigtable-emulator", port_forwards = [
port_forward(8086, name = "BigTable clients [:8086]"), port_forward(8086, name = "BigTable clients [:8086]"),
]) ])
k8s_resource( k8s_resource(
"bigtable-readrow", "bigtable-readrow",
resource_deps = ["proto-gen"], resource_deps = ["proto-gen"],
port_forwards = [port_forward(8090, name = "ReadRow [:8090]")], port_forwards = [port_forward(8090, name = "ReadRow [:8090]")],
) )
# explorer web app # explorer web app
docker_build( docker_build(
ref = "explorer", ref = "explorer",
context = "./explorer", context = "./explorer",
dockerfile = "./explorer/Dockerfile", dockerfile = "./explorer/Dockerfile",
ignore = ["./explorer/node_modules"], ignore = ["./explorer/node_modules"],
live_update = [ live_update = [
sync("./explorer/src", "/home/node/app/src"), sync("./explorer/src", "/home/node/app/src"),
sync("./explorer/public", "/home/node/app/public"), sync("./explorer/public", "/home/node/app/public"),
], ],
) )
k8s_yaml_with_ns("devnet/explorer.yaml") k8s_yaml_with_ns("devnet/explorer.yaml")
k8s_resource( k8s_resource(
"explorer", "explorer",
resource_deps = ["proto-gen-web"], resource_deps = ["proto-gen-web"],
port_forwards = [ port_forwards = [
port_forward(8001, name = "Explorer Web UI [:8001]"), port_forward(8001, name = "Explorer Web UI [:8001]"),
], ],
) )
# terra devnet # terra devnet

View File

@ -105,13 +105,6 @@ spec:
- /tmp/admin.sock - /tmp/admin.sock
- --dataDir - --dataDir
- /tmp/data - /tmp/data
- --bigTablePersistenceEnabled
- --bigTableInstanceName
- wormhole
- --bigTableTableName
- v2Events
- --bigTableKeyPath
- /tmp/mounted-keys/bigtable-key.json
# - --logLevel=debug # - --logLevel=debug
securityContext: securityContext:
capabilities: capabilities: