2
0

Tiltfile 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  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. else:
  28. local("echo 'Be careful that you aren't connected to a staging or prod cluster' && exit 1")
  29. exit()
  30. ngrok_url = os.getenv("NGROK_URL")
  31. if ngrok_url == "":
  32. local("echo 'NGROK_URL env variable is required but not set' && exit 1")
  33. exit()
  34. k8s_resource(
  35. workload='porter-server-web',
  36. port_forwards=["8080:8080"],
  37. labels=["porter"],
  38. resource_deps=["porter-binary"],
  39. )
  40. k8s_resource(
  41. workload='porter-auth-web',
  42. port_forwards=["8090:8090"],
  43. labels=["porter"],
  44. resource_deps=["porter-binary"],
  45. )
  46. watch_file('zarf/helm/.server.env')
  47. watch_file('zarf/helm/.dashboard.env')
  48. ## Build binary locally for faster devexp
  49. local_resource(
  50. name='porter-binary',
  51. 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,
  52. deps=[
  53. "api",
  54. "build",
  55. "ee",
  56. "internal",
  57. "pkg",
  58. "vendor",
  59. "cmd",
  60. ],
  61. resource_deps=["postgresql"],
  62. labels=["z_binaries"]
  63. )
  64. local_resource(
  65. name="migrations-binary",
  66. 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,
  67. resource_deps=["postgresql"],
  68. labels=["z_binaries"],
  69. )
  70. local_resource(
  71. name="disable-porter-helm-test",
  72. cmd='tilt disable porter-server-web-test-connection',
  73. resource_deps=["porter-server-web"]
  74. )
  75. local_resource(
  76. name="disable-auth-helm-test",
  77. cmd='tilt disable porter-auth-web-test-connection',
  78. resource_deps=["porter-auth-web"]
  79. )
  80. docker_build_with_restart(
  81. ref="porter1/porter-server",
  82. context=".",
  83. dockerfile="zarf/docker/Dockerfile.server.tilt",
  84. entrypoint='/app/migrate && /app/porter',
  85. build_args={},
  86. only=[
  87. "bin",
  88. ],
  89. live_update=[
  90. sync('./bin/porter', '/app/'),
  91. sync('./bin/migrate', '/app/'),
  92. ]
  93. )
  94. docker_build_with_restart(
  95. ref="porter1/porter-auth",
  96. context=".",
  97. dockerfile="zarf/docker/Dockerfile.server.tilt",
  98. entrypoint='/app/porter --auth',
  99. build_args={},
  100. only=[
  101. "bin",
  102. ],
  103. live_update=[
  104. sync('./bin/porter', '/app/'),
  105. ]
  106. )
  107. local_resource(
  108. name='reload-server-config',
  109. cmd='kubectl rollout restart deployment porter-server-web',
  110. deps=[
  111. "zarf/helm/.server.env"
  112. ],
  113. labels=["porter"],
  114. resource_deps=["porter-server-web"]
  115. )
  116. # Frontend
  117. local_resource(
  118. name="porter-dashboard",
  119. serve_cmd="npm start",
  120. serve_dir="dashboard",
  121. serve_env={
  122. "ENV_FILE": "../zarf/helm/.dashboard.env",
  123. "NODE_OPTIONS":"--openssl-legacy-provider"
  124. },
  125. deps=[
  126. "dashboard/package.json",
  127. ],
  128. resource_deps=["postgresql"],
  129. labels=["porter"]
  130. )
  131. local_resource('public-url',
  132. serve_cmd='''
  133. echo " \n\n****** NGROK URL ****** \n\n" && echo https://%s && echo "\n\n********\n\n" && ngrok http 8081 --log=stdout --domain=%s'''
  134. % (ngrok_url, ngrok_url), resource_deps=["porter-dashboard"], labels=["porter"])