Tiltfile 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. load('ext://restart_process', 'docker_build_with_restart')
  2. load('ext://dotenv', 'dotenv')
  3. secret_settings(disable_scrub=True)
  4. if not os.path.exists("vendor"):
  5. local(command="go mod vendor")
  6. if config.tilt_subcommand == "up":
  7. local(command="cd dashboard; npm i --legacy-peer-deps")
  8. if config.tilt_subcommand == "down":
  9. local(command="rm -rf vendor")
  10. local(command="rm -rf dashboard/node_modules")
  11. ## Build binary locally for faster devexp
  12. local_resource(
  13. 'porter',
  14. '''GOWORK=off CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -mod vendor -gcflags '-N -l' -o ./porter ./cmd/app/main.go''',
  15. deps=[
  16. "api",
  17. "build",
  18. "cli",
  19. "ee",
  20. "internal",
  21. "pkg",
  22. ],
  23. resource_deps=["postgresql"],
  24. labels=["porter"]
  25. )
  26. docker_build_with_restart(
  27. ref="porter1/porter-server",
  28. context=".",
  29. dockerfile="zarf/docker/Dockerfile.server.tilt",
  30. # entrypoint='dlv --listen=:40000 --api-version=2 --headless=true --log=true exec /porter/bin/app',
  31. entrypoint='/app/porter',
  32. build_args={},
  33. only=[
  34. "porter",
  35. ],
  36. live_update=[
  37. sync('./porter', '/app/'),
  38. ]
  39. )
  40. # Frontend
  41. # docker_build(
  42. # ref="porter1/porter-dashboard",
  43. # context=".",
  44. # dockerfile="zarf/docker/Dockerfile.dashboard.tilt",
  45. # entrypoint='webpack-dev-server --config webpack.config.js',
  46. # # entrypoint='npm start',
  47. # only=['dashboard/package.json', 'dashboard/package-lock.json']
  48. # )
  49. docker_build(
  50. ref="porter1/porter-dashboard",
  51. context=".",
  52. dockerfile="zarf/docker/Dockerfile.dashboard.tilt",
  53. build_args={'node_env': 'development'},
  54. entrypoint='npm start',
  55. ignore=[
  56. "dashboard/node_modules",
  57. "dashboard/package-lock.json",
  58. "dashboard/webpack.config.js"
  59. ],
  60. live_update=[
  61. sync('dashboard', '/app'),
  62. run('cd /app && npm start', trigger=['./package.json']),
  63. # # if all that changed was start-time.txt, make sure the server
  64. # # reloads so that it will reflect the new startup time
  65. # run('touch /app/index.js', trigger='./start-time.txt'),
  66. ])
  67. dotenv(fn='zarf/helm/.dashboard.env')
  68. local_resource(
  69. name="porter-dashboard",
  70. serve_cmd="npm start",
  71. serve_dir="dashboard",
  72. resource_deps=["postgresql"],
  73. labels=["porter"]
  74. )
  75. allow_k8s_contexts('kind-porter')
  76. cluster = str(local('kubectl config current-context')).strip()
  77. if (cluster.startswith("kind-")):
  78. install = kustomize('zarf/helm', flags=["--enable-helm"])
  79. decoded = decode_yaml_stream(install)
  80. for d in decoded:
  81. if d.get('kind') == 'Deployment':
  82. if "securityContext" in d['spec']['template']['spec']:
  83. d['spec']['template']['spec'].pop('securityContext')
  84. for c in d['spec']['template']['spec']['containers']:
  85. if "securityContext" in c:
  86. c.pop('securityContext')
  87. updated_install = encode_yaml_stream(decoded)
  88. k8s_yaml(updated_install)
  89. k8s_resource(workload='porter-server-web', port_forwards="8080:8080", labels=["porter"])
  90. k8s_resource(workload='porter-dashboard', port_forwards="8081:8081", labels=["porter"], resource_deps=["postgresql"])
  91. else:
  92. local("echo 'Be careful that you aren't connected to a staging or prod cluster' && exit 1")
  93. exit()