Tiltfile 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. load('ext://restart_process', 'docker_build_with_restart')
  2. secret_settings(disable_scrub=True)
  3. if not os.path.exists("vendor"):
  4. local(command="go mod vendor")
  5. if config.tilt_subcommand == "up":
  6. local(command="cd dashboard; npm i --legacy-peer-deps")
  7. if config.tilt_subcommand == "down":
  8. local(command="rm -rf vendor")
  9. local(command="rm -rf dashboard/node_modules")
  10. build_args = "GOOS=linux GOARCH=arm64"
  11. if os.getenv("PLATFORM") == "amd64":
  12. build_args = "GOOS=linux GOARCH=amd64"
  13. allow_k8s_contexts('kind-porter')
  14. cluster = str(local('kubectl config current-context')).strip()
  15. if (cluster.startswith("kind-")):
  16. install = kustomize('zarf/helm', flags=["--enable-helm"])
  17. decoded = decode_yaml_stream(install)
  18. for d in decoded:
  19. if d.get('kind') == 'Deployment':
  20. if "securityContext" in d['spec']['template']['spec']:
  21. d['spec']['template']['spec'].pop('securityContext')
  22. for c in d['spec']['template']['spec']['containers']:
  23. if "securityContext" in c:
  24. c.pop('securityContext')
  25. updated_install = encode_yaml_stream(decoded)
  26. k8s_yaml(updated_install)
  27. k8s_resource(
  28. workload='porter-server-web',
  29. port_forwards="8080:8080",
  30. labels=["porter"],
  31. resource_deps=["porter-binary"],
  32. )
  33. else:
  34. local("echo 'Be careful that you aren't connected to a staging or prod cluster' && exit 1")
  35. exit()
  36. watch_file('zarf/helm/.server.env')
  37. watch_file('zarf/helm/.dashboard.env')
  38. ## Build binary locally for faster devexp
  39. local_resource(
  40. name='porter-binary',
  41. cmd='''GOWORK=off CGO_ENABLED=0 %s go build -mod vendor -gcflags '-N -l' -tags ee -o ./bin/porter ./cmd/app/main.go''' % build_args,
  42. deps=[
  43. "api",
  44. "build",
  45. "cli",
  46. "ee",
  47. "internal",
  48. "pkg",
  49. "vendor",
  50. ],
  51. resource_deps=["postgresql"],
  52. labels=["z_binaries"]
  53. )
  54. local_resource(
  55. name="migrations-binary",
  56. cmd='''GOWORK=off CGO_ENABLED=0 %s go build -mod vendor -gcflags '-N -l' -tags ee -o ./bin/migrate ./cmd/migrate/main.go ./cmd/migrate/migrate_ee.go''' % build_args,
  57. resource_deps=["postgresql"],
  58. labels=["z_binaries"],
  59. )
  60. local_resource(
  61. name="disable-porter-helm-test",
  62. cmd='tilt disable porter-server-web-test-connection',
  63. resource_deps=["porter-server-web"]
  64. )
  65. docker_build_with_restart(
  66. ref="porter1/porter-server",
  67. context=".",
  68. dockerfile="zarf/docker/Dockerfile.server.tilt",
  69. # entrypoint='dlv --listen=:40000 --api-version=2 --headless=true --log=true exec /porter/bin/app',
  70. entrypoint='/app/migrate && /app/porter',
  71. build_args={},
  72. only=[
  73. "bin",
  74. ],
  75. live_update=[
  76. sync('./bin/porter', '/app/'),
  77. sync('./bin/migrate', '/app/'),
  78. ]
  79. )
  80. local_resource(
  81. name='reload-server-config',
  82. cmd='kubectl rollout restart deployment porter-server-web',
  83. deps=[
  84. "zarf/helm/.server.env"
  85. ],
  86. labels=["porter"],
  87. resource_deps=["porter-server-web"]
  88. )
  89. # Frontend
  90. local_resource(
  91. name="porter-dashboard",
  92. serve_cmd="npm start",
  93. serve_dir="dashboard",
  94. serve_env={
  95. "ENV_FILE": "../zarf/helm/.dashboard.env"
  96. },
  97. resource_deps=["postgresql"],
  98. labels=["porter"]
  99. )
  100. # local_resource('public-url', serve_cmd='lt --subdomain "$(whoami)" --port 8080', resource_deps=["porter-dashboard"], labels=["porter"])
  101. # local_resource('public-url', serve_cmd='ngrok http 8081 --log=stdout', resource_deps=["porter-dashboard"], labels=["porter"])