2
0

Tiltfile 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. load('ext://restart_process', 'docker_build_with_restart')
  2. secret_settings(disable_scrub=True)
  3. if config.tilt_subcommand == "up":
  4. if not os.path.exists("vendor"):
  5. local(command="go mod vendor")
  6. local(command="cd dashboard; npm i --legacy-peer-deps")
  7. if config.tilt_subcommand == "down":
  8. if os.path.exists("vendor"):
  9. local(command="rm -rf vendor")
  10. if os.path.exists("dashboard/node_modules"):
  11. local(command="rm -rf dashboard/node_modules")
  12. build_args = "GOOS=linux GOARCH=arm64"
  13. if os.getenv("PLATFORM") == "amd64":
  14. build_args = "GOOS=linux GOARCH=amd64"
  15. allow_k8s_contexts('kind-porter')
  16. cluster = str(local('kubectl config current-context')).strip()
  17. if (cluster.startswith("kind-")):
  18. install = kustomize('zarf/helm', flags=["--enable-helm"])
  19. decoded = decode_yaml_stream(install)
  20. for d in decoded:
  21. if d.get('kind') == 'Deployment':
  22. if "securityContext" in d['spec']['template']['spec']:
  23. d['spec']['template']['spec'].pop('securityContext')
  24. for c in d['spec']['template']['spec']['containers']:
  25. if "securityContext" in c:
  26. c.pop('securityContext')
  27. updated_install = encode_yaml_stream(decoded)
  28. k8s_yaml(updated_install)
  29. else:
  30. local("echo 'Be careful that you aren't connected to a staging or prod cluster' && exit 1")
  31. exit()
  32. ngrok_url = os.getenv("NGROK_URL")
  33. if ngrok_url == "":
  34. local("echo 'NGROK_URL env variable is required but not set' && exit 1")
  35. exit()
  36. k8s_resource(
  37. workload='porter-server-web',
  38. port_forwards=["8080:8080"],
  39. labels=["porter"],
  40. resource_deps=["porter-binary"],
  41. )
  42. k8s_resource(
  43. workload='porter-auth-web',
  44. port_forwards=["8090:8090"],
  45. labels=["porter"],
  46. resource_deps=["porter-binary"],
  47. )
  48. watch_file('zarf/helm/.server.env')
  49. watch_file('zarf/helm/.dashboard.env')
  50. ## Build binary locally for faster devexp
  51. local_resource(
  52. name='porter-binary',
  53. 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,
  54. deps=[
  55. "api",
  56. "build",
  57. "ee",
  58. "internal",
  59. "pkg",
  60. "vendor",
  61. "cmd",
  62. ],
  63. resource_deps=["postgresql"],
  64. labels=["z_binaries"]
  65. )
  66. local_resource(
  67. name="migrations-binary",
  68. 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,
  69. resource_deps=["postgresql"],
  70. labels=["z_binaries"],
  71. )
  72. local_resource(
  73. name="disable-porter-helm-test",
  74. cmd='tilt disable porter-server-web-test-connection',
  75. resource_deps=["porter-server-web"]
  76. )
  77. local_resource(
  78. name="disable-auth-helm-test",
  79. cmd='tilt disable porter-auth-web-test-connection',
  80. resource_deps=["porter-auth-web"]
  81. )
  82. docker_build_with_restart(
  83. ref="porter1/porter-server",
  84. context=".",
  85. dockerfile="zarf/docker/Dockerfile.server.tilt",
  86. entrypoint='/app/migrate && /app/porter',
  87. build_args={},
  88. only=[
  89. "bin",
  90. ],
  91. live_update=[
  92. sync('./bin/porter', '/app/'),
  93. sync('./bin/migrate', '/app/'),
  94. ]
  95. )
  96. docker_build_with_restart(
  97. ref="porter1/porter-auth",
  98. context=".",
  99. dockerfile="zarf/docker/Dockerfile.server.tilt",
  100. entrypoint='/app/porter --auth',
  101. build_args={},
  102. only=[
  103. "bin",
  104. ],
  105. live_update=[
  106. sync('./bin/porter', '/app/'),
  107. ]
  108. )
  109. local_resource(
  110. name='reload-server-config',
  111. cmd='kubectl rollout restart deployment porter-server-web',
  112. deps=[
  113. "zarf/helm/.server.env"
  114. ],
  115. labels=["porter"],
  116. resource_deps=["porter-server-web"]
  117. )
  118. # Frontend
  119. local_resource(
  120. name="porter-dashboard",
  121. serve_cmd="npm start",
  122. serve_dir="dashboard",
  123. serve_env={
  124. "ENV_FILE": "../zarf/helm/.dashboard.env",
  125. "NODE_OPTIONS":"--openssl-legacy-provider"
  126. },
  127. deps=[
  128. "dashboard/package.json",
  129. ],
  130. resource_deps=["postgresql"],
  131. labels=["porter"]
  132. )
  133. local_resource('public-url',
  134. serve_cmd='''
  135. echo " \n\n****** NGROK URL ****** \n\n" && echo https://%s && echo "\n\n********\n\n" && ngrok http 8081 --log=stdout --domain=%s'''
  136. % (ngrok_url, ngrok_url), resource_deps=["porter-dashboard"], labels=["porter"])