Tiltfile 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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 binary locally for faster devexp
  11. local_resource(
  12. name='porter-binary',
  13. cmd='''GOWORK=off CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -mod vendor -gcflags '-N -l' -tags ee -o ./bin/porter ./cmd/app/main.go''',
  14. deps=[
  15. "api",
  16. "build",
  17. "cli",
  18. "ee",
  19. "internal",
  20. "pkg",
  21. ],
  22. resource_deps=["postgresql"],
  23. labels=["porter"]
  24. )
  25. docker_build_with_restart(
  26. ref="porter1/porter-server",
  27. context=".",
  28. dockerfile="zarf/docker/Dockerfile.server.tilt",
  29. # entrypoint='dlv --listen=:40000 --api-version=2 --headless=true --log=true exec /porter/bin/app',
  30. entrypoint='/app/porter',
  31. build_args={},
  32. only=[
  33. "bin",
  34. ],
  35. live_update=[
  36. sync('./bin/porter', '/app/'),
  37. sync('./bin/migrate', '/app/'),
  38. ],
  39. )
  40. # Frontend
  41. local_resource(
  42. name="porter-dashboard",
  43. serve_cmd="npm start",
  44. serve_dir="dashboard",
  45. serve_env={
  46. "NODE_ENV": "development",
  47. "DEV_SERVER_PORT": "8081",
  48. "ENABLE_PROXY": "true",
  49. "API_SERVER": "http://localhost:8080"
  50. },
  51. resource_deps=["postgresql"],
  52. labels=["porter"]
  53. )
  54. # Migrations
  55. local_resource(
  56. name="migrations-binary",
  57. cmd='''GOWORK=off CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -mod vendor -gcflags '-N -l' -tags ee -o ./bin/migrate ./cmd/migrate/main.go ./cmd/migrate/migrate_ee.go''',
  58. resource_deps=["postgresql"],
  59. labels=["porter"],
  60. )
  61. local_resource(
  62. name="run-migrations",
  63. cmd='''kubectl exec -it deploy/porter-server-web -- /app/migrate''',
  64. resource_deps=["migrations-binary", "porter-binary"],
  65. labels=["porter"],
  66. trigger_mode=TRIGGER_MODE_MANUAL,
  67. )
  68. allow_k8s_contexts('kind-porter')
  69. cluster = str(local('kubectl config current-context')).strip()
  70. if (cluster.startswith("kind-")):
  71. install = kustomize('zarf/helm', flags=["--enable-helm"])
  72. decoded = decode_yaml_stream(install)
  73. for d in decoded:
  74. if d.get('kind') == 'Deployment':
  75. if "securityContext" in d['spec']['template']['spec']:
  76. d['spec']['template']['spec'].pop('securityContext')
  77. for c in d['spec']['template']['spec']['containers']:
  78. if "securityContext" in c:
  79. c.pop('securityContext')
  80. updated_install = encode_yaml_stream(decoded)
  81. k8s_yaml(updated_install)
  82. k8s_resource(workload='porter-server-web', port_forwards="8080:8080", labels=["porter"])
  83. else:
  84. local("echo 'Be careful that you aren't connected to a staging or prod cluster' && exit 1")
  85. exit()