wormhole/Tiltfile

93 lines
2.3 KiB
Plaintext

config.define_string("num", False, "Number of guardian nodes to run")
cfg = config.parse()
num_guardians = int(cfg.get("num", "5"))
# protos
local_resource(
name = "proto-gen",
deps = ["./proto", "./generate-protos.sh"],
cmd = "./generate-protos.sh",
)
# bridge
docker_build(
ref = "guardiand-image",
context = "bridge",
dockerfile = "bridge/Dockerfile",
)
def build_bridge_yaml():
bridge_yaml = read_yaml_stream("devnet/bridge.yaml")
for obj in bridge_yaml:
if obj["kind"] == "StatefulSet" and obj["metadata"]["name"] == "guardian":
obj["spec"]["replicas"] = num_guardians
container = obj["spec"]["template"]["spec"]["containers"][0]
if container["name"] != "guardiand":
fail("container 0 is not guardiand")
container["command"] += ["--devNumGuardians", str(num_guardians)]
return encode_yaml_stream(bridge_yaml)
k8s_yaml(build_bridge_yaml())
k8s_resource("guardian", resource_deps = ["proto-gen"])
# solana agent and cli (runs alongside bridge)
docker_build(
ref = "solana-agent",
context = ".",
only = ["./proto", "./solana"],
dockerfile = "Dockerfile.agent",
# Ignore target folders from local (non-container) development.
ignore = ["./solana/target", "./solana/agent/target", "./solana/cli/target"],
)
# solana smart contract
docker_build(
ref = "solana-contract",
context = "solana",
dockerfile = "solana/Dockerfile",
)
# solana local devnet
docker_build(
ref = "solana-devnet",
context = "third_party/solana",
dockerfile = "third_party/solana/Dockerfile",
)
k8s_yaml("devnet/solana-devnet.yaml")
k8s_resource("solana-devnet")
# eth devnet
docker_build(
ref = "eth-node",
context = "./ethereum",
dockerfile = "./ethereum/Dockerfile",
# ignore local node_modules (in case they're present)
ignore = ["./ethereum/node_modules"],
# sync external scripts for incremental development
# (everything else needs to be restarted from scratch for determinism)
#
# This relies on --update-mode=exec to work properly with a non-root user.
# https://github.com/tilt-dev/tilt/issues/3708
live_update = [
sync("./ethereum/src", "/home/node/app/src"),
],
)
k8s_yaml("devnet/eth-devnet.yaml")
k8s_resource("eth-devnet")