envd 0.3.30__tar.gz → 0.3.32__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of envd might be problematic. Click here for more details.

Files changed (389) hide show
  1. envd-0.3.32/.GIT_TAG_INFO +1 -0
  2. {envd-0.3.30 → envd-0.3.32}/CHANGELOG.md +17 -0
  3. {envd-0.3.30 → envd-0.3.32}/PKG-INFO +1 -1
  4. {envd-0.3.30 → envd-0.3.32}/bin/envd +0 -0
  5. {envd-0.3.30 → envd-0.3.32}/envd.egg-info/PKG-INFO +1 -1
  6. {envd-0.3.30 → envd-0.3.32}/pkg/app/bootstrap.go +119 -12
  7. {envd-0.3.30 → envd-0.3.32}/pkg/app/build.go +2 -2
  8. {envd-0.3.30 → envd-0.3.32}/pkg/app/run.go +1 -1
  9. {envd-0.3.30 → envd-0.3.32}/pkg/app/up.go +3 -3
  10. {envd-0.3.30 → envd-0.3.32}/pkg/driver/docker/docker.go +11 -14
  11. {envd-0.3.30 → envd-0.3.32}/pkg/driver/nerdctl/nerdctl.go +1 -1
  12. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/system.go +12 -7
  13. envd-0.3.32/pkg/util/buildkitutil/buildkit.go +83 -0
  14. envd-0.3.32/pkg/util/buildkitutil/buildkit_test.go +127 -0
  15. envd-0.3.30/.GIT_TAG_INFO +0 -1
  16. envd-0.3.30/pkg/util/buildkitutil/buildkit.go +0 -48
  17. envd-0.3.30/pkg/util/buildkitutil/buildkit_test.go +0 -69
  18. {envd-0.3.30 → envd-0.3.32}/.all-contributorsrc +0 -0
  19. {envd-0.3.30 → envd-0.3.32}/.editorconfig +0 -0
  20. {envd-0.3.30 → envd-0.3.32}/.gitignore +0 -0
  21. {envd-0.3.30 → envd-0.3.32}/.golangci.yml +0 -0
  22. {envd-0.3.30 → envd-0.3.32}/.goreleaser.yaml +0 -0
  23. {envd-0.3.30 → envd-0.3.32}/.markdown-lint.json +0 -0
  24. {envd-0.3.30 → envd-0.3.32}/.pre-commit-config.yaml +0 -0
  25. {envd-0.3.30 → envd-0.3.32}/.vscode/launch.json +0 -0
  26. {envd-0.3.30 → envd-0.3.32}/CODEOWNERS +0 -0
  27. {envd-0.3.30 → envd-0.3.32}/CODE_OF_CONDUCT.md +0 -0
  28. {envd-0.3.30 → envd-0.3.32}/LICENSE +0 -0
  29. {envd-0.3.30 → envd-0.3.32}/MANIFEST.in +0 -0
  30. {envd-0.3.30 → envd-0.3.32}/Makefile +0 -0
  31. {envd-0.3.30 → envd-0.3.32}/OWNERS +0 -0
  32. {envd-0.3.30 → envd-0.3.32}/README.md +0 -0
  33. {envd-0.3.30 → envd-0.3.32}/base-images/.dockerignore +0 -0
  34. {envd-0.3.30 → envd-0.3.32}/base-images/build.sh +0 -0
  35. {envd-0.3.30 → envd-0.3.32}/base-images/envd/build.sh +0 -0
  36. {envd-0.3.30 → envd-0.3.32}/base-images/envd/envd-daemonless.Dockerfile +0 -0
  37. {envd-0.3.30 → envd-0.3.32}/base-images/envd/envd.Dockerfile +0 -0
  38. {envd-0.3.30 → envd-0.3.32}/base-images/envd-sshd/envd-sshd.Dockerfile +0 -0
  39. {envd-0.3.30 → envd-0.3.32}/base-images/envd-starship/envd-starship.Dockerfile +0 -0
  40. {envd-0.3.30 → envd-0.3.32}/base-images/julia1.8rc1-ubuntu20.04.Dockerfile +0 -0
  41. {envd-0.3.30 → envd-0.3.32}/base-images/r4.2.Dockerfile +0 -0
  42. {envd-0.3.30 → envd-0.3.32}/base-images/remote-cache/build-and-push-remote-cache.sh +0 -0
  43. {envd-0.3.30 → envd-0.3.32}/base-images/remote-cache/build.envd +0 -0
  44. {envd-0.3.30 → envd-0.3.32}/cmd/envd/main.go +0 -0
  45. {envd-0.3.30 → envd-0.3.32}/cmd/envd-sshd/main.go +0 -0
  46. {envd-0.3.30 → envd-0.3.32}/e2e/v0/cli/build_test.go +0 -0
  47. {envd-0.3.30 → envd-0.3.32}/e2e/v0/cli/bytecode_hash_test.go +0 -0
  48. {envd-0.3.30 → envd-0.3.32}/e2e/v0/cli/context_test.go +0 -0
  49. {envd-0.3.30 → envd-0.3.32}/e2e/v0/cli/get_env_test.go +0 -0
  50. {envd-0.3.30 → envd-0.3.32}/e2e/v0/cli/init_test.go +0 -0
  51. {envd-0.3.30 → envd-0.3.32}/e2e/v0/cli/quick_start_test.go +0 -0
  52. {envd-0.3.30 → envd-0.3.32}/e2e/v0/cli/suite_test.go +0 -0
  53. {envd-0.3.30 → envd-0.3.32}/e2e/v0/cli/testdata/build-test/build.envd +0 -0
  54. {envd-0.3.30 → envd-0.3.32}/e2e/v0/cli/testdata/custom-image-test/build.envd +0 -0
  55. {envd-0.3.30 → envd-0.3.32}/e2e/v0/cli/testdata/quick-start/build.envd +0 -0
  56. {envd-0.3.30 → envd-0.3.32}/e2e/v0/cli/testdata/quick-start/demo.py +0 -0
  57. {envd-0.3.30 → envd-0.3.32}/e2e/v0/cli/testdata/up-test/build.envd +0 -0
  58. {envd-0.3.30 → envd-0.3.32}/e2e/v0/cli/up_test.go +0 -0
  59. {envd-0.3.30 → envd-0.3.32}/e2e/v0/docs/docs_gpu_test.go +0 -0
  60. {envd-0.3.30 → envd-0.3.32}/e2e/v0/docs/docs_test.go +0 -0
  61. {envd-0.3.30 → envd-0.3.32}/e2e/v0/docs/suite_test.go +0 -0
  62. {envd-0.3.30 → envd-0.3.32}/e2e/v0/docs/testdata/complex/build.envd +0 -0
  63. {envd-0.3.30 → envd-0.3.32}/e2e/v0/docs/testdata/envdlib/build.envd +0 -0
  64. {envd-0.3.30 → envd-0.3.32}/e2e/v0/docs/testdata/getting_started/build.envd +0 -0
  65. {envd-0.3.30 → envd-0.3.32}/e2e/v0/docs/testdata/jupyter/build.envd +0 -0
  66. {envd-0.3.30 → envd-0.3.32}/e2e/v0/docs/testdata/minimal/build.envd +0 -0
  67. {envd-0.3.30 → envd-0.3.32}/e2e/v0/e2e_helper.go +0 -0
  68. {envd-0.3.30 → envd-0.3.32}/e2e/v0/language/python_test.go +0 -0
  69. {envd-0.3.30 → envd-0.3.32}/e2e/v0/language/runtime_test.go +0 -0
  70. {envd-0.3.30 → envd-0.3.32}/e2e/v0/language/suite_test.go +0 -0
  71. {envd-0.3.30 → envd-0.3.32}/e2e/v0/language/testdata/python/conda/build.envd +0 -0
  72. {envd-0.3.30 → envd-0.3.32}/e2e/v0/language/testdata/python/conda/env.yaml +0 -0
  73. {envd-0.3.30 → envd-0.3.32}/e2e/v0/language/testdata/python/conda/setup.py +0 -0
  74. {envd-0.3.30 → envd-0.3.32}/e2e/v0/language/testdata/python/conda_channel/build.envd +0 -0
  75. {envd-0.3.30 → envd-0.3.32}/e2e/v0/language/testdata/python/conda_channel/env.yaml +0 -0
  76. {envd-0.3.30 → envd-0.3.32}/e2e/v0/language/testdata/python/hybrid/build.envd +0 -0
  77. {envd-0.3.30 → envd-0.3.32}/e2e/v0/language/testdata/python/hybrid/requirements.txt +0 -0
  78. {envd-0.3.30 → envd-0.3.32}/e2e/v0/language/testdata/python/packages/build.envd +0 -0
  79. {envd-0.3.30 → envd-0.3.32}/e2e/v0/language/testdata/python/requirements/build.envd +0 -0
  80. {envd-0.3.30 → envd-0.3.32}/e2e/v0/language/testdata/python/requirements/requirements.txt +0 -0
  81. {envd-0.3.30 → envd-0.3.32}/e2e/v0/language/testdata/python/requirements/setup.py +0 -0
  82. {envd-0.3.30 → envd-0.3.32}/e2e/v0/language/testdata/run/build.envd +0 -0
  83. {envd-0.3.30 → envd-0.3.32}/e2e/v0/language/testdata/runtime/build.envd +0 -0
  84. {envd-0.3.30 → envd-0.3.32}/e2e/v0/language/testdata/runtime/demo.py +0 -0
  85. {envd-0.3.30 → envd-0.3.32}/e2e/v1/cli/build_test.go +0 -0
  86. {envd-0.3.30 → envd-0.3.32}/e2e/v1/cli/bytecode_hash_test.go +0 -0
  87. {envd-0.3.30 → envd-0.3.32}/e2e/v1/cli/context_test.go +0 -0
  88. {envd-0.3.30 → envd-0.3.32}/e2e/v1/cli/get_env_test.go +0 -0
  89. {envd-0.3.30 → envd-0.3.32}/e2e/v1/cli/init_test.go +0 -0
  90. {envd-0.3.30 → envd-0.3.32}/e2e/v1/cli/quick_start_test.go +0 -0
  91. {envd-0.3.30 → envd-0.3.32}/e2e/v1/cli/suite_test.go +0 -0
  92. {envd-0.3.30 → envd-0.3.32}/e2e/v1/cli/testdata/build-test/build.envd +0 -0
  93. {envd-0.3.30 → envd-0.3.32}/e2e/v1/cli/testdata/custom-image-test/build.envd +0 -0
  94. {envd-0.3.30 → envd-0.3.32}/e2e/v1/cli/testdata/quick-start/build.envd +0 -0
  95. {envd-0.3.30 → envd-0.3.32}/e2e/v1/cli/testdata/quick-start/demo.py +0 -0
  96. {envd-0.3.30 → envd-0.3.32}/e2e/v1/cli/testdata/up-test/build.envd +0 -0
  97. {envd-0.3.30 → envd-0.3.32}/e2e/v1/cli/up_test.go +0 -0
  98. {envd-0.3.30 → envd-0.3.32}/e2e/v1/docs/docs_gpu_test.go +0 -0
  99. {envd-0.3.30 → envd-0.3.32}/e2e/v1/docs/docs_test.go +0 -0
  100. {envd-0.3.30 → envd-0.3.32}/e2e/v1/docs/extra_lang_test.go +0 -0
  101. {envd-0.3.30 → envd-0.3.32}/e2e/v1/docs/julia_mnist_test.go +0 -0
  102. {envd-0.3.30 → envd-0.3.32}/e2e/v1/docs/rlang_mnist_test.go +0 -0
  103. {envd-0.3.30 → envd-0.3.32}/e2e/v1/docs/suite_test.go +0 -0
  104. {envd-0.3.30 → envd-0.3.32}/e2e/v1/docs/testdata/complex/build.envd +0 -0
  105. {envd-0.3.30 → envd-0.3.32}/e2e/v1/docs/testdata/envdlib/build.envd +0 -0
  106. {envd-0.3.30 → envd-0.3.32}/e2e/v1/docs/testdata/getting_started/build.envd +0 -0
  107. {envd-0.3.30 → envd-0.3.32}/e2e/v1/docs/testdata/julia/build.envd +0 -0
  108. {envd-0.3.30 → envd-0.3.32}/e2e/v1/docs/testdata/julia_mnist/build.envd +0 -0
  109. {envd-0.3.30 → envd-0.3.32}/e2e/v1/docs/testdata/julia_mnist/mnist.jl +0 -0
  110. {envd-0.3.30 → envd-0.3.32}/e2e/v1/docs/testdata/jupyter/build.envd +0 -0
  111. {envd-0.3.30 → envd-0.3.32}/e2e/v1/docs/testdata/minimal/build.envd +0 -0
  112. {envd-0.3.30 → envd-0.3.32}/e2e/v1/docs/testdata/rlang/build.envd +0 -0
  113. {envd-0.3.30 → envd-0.3.32}/e2e/v1/docs/testdata/rlang_mnist/build.envd +0 -0
  114. {envd-0.3.30 → envd-0.3.32}/e2e/v1/docs/testdata/rlang_mnist/mnist.r +0 -0
  115. {envd-0.3.30 → envd-0.3.32}/e2e/v1/e2e_helper.go +0 -0
  116. {envd-0.3.30 → envd-0.3.32}/e2e/v1/language/python_test.go +0 -0
  117. {envd-0.3.30 → envd-0.3.32}/e2e/v1/language/runtime_test.go +0 -0
  118. {envd-0.3.30 → envd-0.3.32}/e2e/v1/language/suite_test.go +0 -0
  119. {envd-0.3.30 → envd-0.3.32}/e2e/v1/language/testdata/python/conda/build.envd +0 -0
  120. {envd-0.3.30 → envd-0.3.32}/e2e/v1/language/testdata/python/conda/env.yaml +0 -0
  121. {envd-0.3.30 → envd-0.3.32}/e2e/v1/language/testdata/python/conda/setup.py +0 -0
  122. {envd-0.3.30 → envd-0.3.32}/e2e/v1/language/testdata/python/conda_channel/build.envd +0 -0
  123. {envd-0.3.30 → envd-0.3.32}/e2e/v1/language/testdata/python/conda_channel/env.yaml +0 -0
  124. {envd-0.3.30 → envd-0.3.32}/e2e/v1/language/testdata/python/hybrid/build.envd +0 -0
  125. {envd-0.3.30 → envd-0.3.32}/e2e/v1/language/testdata/python/hybrid/requirements.txt +0 -0
  126. {envd-0.3.30 → envd-0.3.32}/e2e/v1/language/testdata/python/packages/build.envd +0 -0
  127. {envd-0.3.30 → envd-0.3.32}/e2e/v1/language/testdata/python/requirements/build.envd +0 -0
  128. {envd-0.3.30 → envd-0.3.32}/e2e/v1/language/testdata/python/requirements/requirements.txt +0 -0
  129. {envd-0.3.30 → envd-0.3.32}/e2e/v1/language/testdata/python/requirements/setup.py +0 -0
  130. {envd-0.3.30 → envd-0.3.32}/e2e/v1/language/testdata/run/build.envd +0 -0
  131. {envd-0.3.30 → envd-0.3.32}/e2e/v1/language/testdata/runtime/build.envd +0 -0
  132. {envd-0.3.30 → envd-0.3.32}/e2e/v1/language/testdata/runtime/demo.py +0 -0
  133. {envd-0.3.30 → envd-0.3.32}/envd/api/v0/__init__.py +0 -0
  134. {envd-0.3.30 → envd-0.3.32}/envd/api/v0/config.py +0 -0
  135. {envd-0.3.30 → envd-0.3.32}/envd/api/v0/install.py +0 -0
  136. {envd-0.3.30 → envd-0.3.32}/envd/api/v0/io.py +0 -0
  137. {envd-0.3.30 → envd-0.3.32}/envd/api/v0/runtime.py +0 -0
  138. {envd-0.3.30 → envd-0.3.32}/envd/api/v1/__init__.py +0 -0
  139. {envd-0.3.30 → envd-0.3.32}/envd/api/v1/config.py +0 -0
  140. {envd-0.3.30 → envd-0.3.32}/envd/api/v1/install.py +0 -0
  141. {envd-0.3.30 → envd-0.3.32}/envd/api/v1/io.py +0 -0
  142. {envd-0.3.30 → envd-0.3.32}/envd/api/v1/runtime.py +0 -0
  143. {envd-0.3.30 → envd-0.3.32}/envd/api.go +0 -0
  144. {envd-0.3.30 → envd-0.3.32}/envd.egg-info/SOURCES.txt +0 -0
  145. {envd-0.3.30 → envd-0.3.32}/envd.egg-info/dependency_links.txt +0 -0
  146. {envd-0.3.30 → envd-0.3.32}/envd.egg-info/not-zip-safe +0 -0
  147. {envd-0.3.30 → envd-0.3.32}/envd.egg-info/top_level.txt +0 -0
  148. {envd-0.3.30 → envd-0.3.32}/go.mod +0 -0
  149. {envd-0.3.30 → envd-0.3.32}/go.sum +0 -0
  150. {envd-0.3.30 → envd-0.3.32}/hack/changelog.sh +0 -0
  151. {envd-0.3.30 → envd-0.3.32}/pkg/app/app.go +0 -0
  152. {envd-0.3.30 → envd-0.3.32}/pkg/app/build/build.go +0 -0
  153. {envd-0.3.30 → envd-0.3.32}/pkg/app/completion.go +0 -0
  154. {envd-0.3.30 → envd-0.3.32}/pkg/app/const.go +0 -0
  155. {envd-0.3.30 → envd-0.3.32}/pkg/app/context.go +0 -0
  156. {envd-0.3.30 → envd-0.3.32}/pkg/app/context_create.go +0 -0
  157. {envd-0.3.30 → envd-0.3.32}/pkg/app/context_ls.go +0 -0
  158. {envd-0.3.30 → envd-0.3.32}/pkg/app/context_rm.go +0 -0
  159. {envd-0.3.30 → envd-0.3.32}/pkg/app/context_use.go +0 -0
  160. {envd-0.3.30 → envd-0.3.32}/pkg/app/debug.go +0 -0
  161. {envd-0.3.30 → envd-0.3.32}/pkg/app/debug_llb.go +0 -0
  162. {envd-0.3.30 → envd-0.3.32}/pkg/app/destroy.go +0 -0
  163. {envd-0.3.30 → envd-0.3.32}/pkg/app/env.go +0 -0
  164. {envd-0.3.30 → envd-0.3.32}/pkg/app/env_describe.go +0 -0
  165. {envd-0.3.30 → envd-0.3.32}/pkg/app/env_ls.go +0 -0
  166. {envd-0.3.30 → envd-0.3.32}/pkg/app/exec.go +0 -0
  167. {envd-0.3.30 → envd-0.3.32}/pkg/app/formatter/data.go +0 -0
  168. {envd-0.3.30 → envd-0.3.32}/pkg/app/formatter/json/context.go +0 -0
  169. {envd-0.3.30 → envd-0.3.32}/pkg/app/formatter/json/env.go +0 -0
  170. {envd-0.3.30 → envd-0.3.32}/pkg/app/formatter/json/image.go +0 -0
  171. {envd-0.3.30 → envd-0.3.32}/pkg/app/formatter/json/print.go +0 -0
  172. {envd-0.3.30 → envd-0.3.32}/pkg/app/formatter/json/version.go +0 -0
  173. {envd-0.3.30 → envd-0.3.32}/pkg/app/formatter/table/context.go +0 -0
  174. {envd-0.3.30 → envd-0.3.32}/pkg/app/formatter/table/env.go +0 -0
  175. {envd-0.3.30 → envd-0.3.32}/pkg/app/formatter/table/image.go +0 -0
  176. {envd-0.3.30 → envd-0.3.32}/pkg/app/formatter/table/version.go +0 -0
  177. {envd-0.3.30 → envd-0.3.32}/pkg/app/image.go +0 -0
  178. {envd-0.3.30 → envd-0.3.32}/pkg/app/image_describe.go +0 -0
  179. {envd-0.3.30 → envd-0.3.32}/pkg/app/image_prune.go +0 -0
  180. {envd-0.3.30 → envd-0.3.32}/pkg/app/image_prune_test.go +0 -0
  181. {envd-0.3.30 → envd-0.3.32}/pkg/app/image_remove.go +0 -0
  182. {envd-0.3.30 → envd-0.3.32}/pkg/app/init.go +0 -0
  183. {envd-0.3.30 → envd-0.3.32}/pkg/app/interactive.go +0 -0
  184. {envd-0.3.30 → envd-0.3.32}/pkg/app/login.go +0 -0
  185. {envd-0.3.30 → envd-0.3.32}/pkg/app/pause.go +0 -0
  186. {envd-0.3.30 → envd-0.3.32}/pkg/app/prune.go +0 -0
  187. {envd-0.3.30 → envd-0.3.32}/pkg/app/resume.go +0 -0
  188. {envd-0.3.30 → envd-0.3.32}/pkg/app/telemetry/reporter.go +0 -0
  189. {envd-0.3.30 → envd-0.3.32}/pkg/app/template/julia.envd +0 -0
  190. {envd-0.3.30 → envd-0.3.32}/pkg/app/template/r.envd +0 -0
  191. {envd-0.3.30 → envd-0.3.32}/pkg/app/top.go +0 -0
  192. {envd-0.3.30 → envd-0.3.32}/pkg/app/version.go +0 -0
  193. {envd-0.3.30 → envd-0.3.32}/pkg/autocomplete/bash.go +0 -0
  194. {envd-0.3.30 → envd-0.3.32}/pkg/autocomplete/fish.go +0 -0
  195. {envd-0.3.30 → envd-0.3.32}/pkg/autocomplete/zsh.go +0 -0
  196. {envd-0.3.30 → envd-0.3.32}/pkg/builder/build.go +0 -0
  197. {envd-0.3.30 → envd-0.3.32}/pkg/builder/build_func.go +0 -0
  198. {envd-0.3.30 → envd-0.3.32}/pkg/builder/builder.go +0 -0
  199. {envd-0.3.30 → envd-0.3.32}/pkg/builder/builder_suite_test.go +0 -0
  200. {envd-0.3.30 → envd-0.3.32}/pkg/builder/builder_test.go +0 -0
  201. {envd-0.3.30 → envd-0.3.32}/pkg/builder/dep_check.go +0 -0
  202. {envd-0.3.30 → envd-0.3.32}/pkg/builder/err.go +0 -0
  203. {envd-0.3.30 → envd-0.3.32}/pkg/builder/types.go +0 -0
  204. {envd-0.3.30 → envd-0.3.32}/pkg/builder/util.go +0 -0
  205. {envd-0.3.30 → envd-0.3.32}/pkg/builder/util_test.go +0 -0
  206. {envd-0.3.30 → envd-0.3.32}/pkg/buildkitd/buildkitd.go +0 -0
  207. {envd-0.3.30 → envd-0.3.32}/pkg/buildkitd/mock/mock.go +0 -0
  208. {envd-0.3.30 → envd-0.3.32}/pkg/buildkitd/print.go +0 -0
  209. {envd-0.3.30 → envd-0.3.32}/pkg/config/config.go +0 -0
  210. {envd-0.3.30 → envd-0.3.32}/pkg/data/datasource.go +0 -0
  211. {envd-0.3.30 → envd-0.3.32}/pkg/data/envd.go +0 -0
  212. {envd-0.3.30 → envd-0.3.32}/pkg/driver/client.go +0 -0
  213. {envd-0.3.30 → envd-0.3.32}/pkg/driver/docker/docker_suite_test.go +0 -0
  214. {envd-0.3.30 → envd-0.3.32}/pkg/driver/docker/docker_test.go +0 -0
  215. {envd-0.3.30 → envd-0.3.32}/pkg/driver/docker/label.go +0 -0
  216. {envd-0.3.30 → envd-0.3.32}/pkg/driver/nerdctl/buildkit.go +0 -0
  217. {envd-0.3.30 → envd-0.3.32}/pkg/driver/stats_type.go +0 -0
  218. {envd-0.3.30 → envd-0.3.32}/pkg/editor/vscode/types.go +0 -0
  219. {envd-0.3.30 → envd-0.3.32}/pkg/editor/vscode/util.go +0 -0
  220. {envd-0.3.30 → envd-0.3.32}/pkg/editor/vscode/vscode.go +0 -0
  221. {envd-0.3.30 → envd-0.3.32}/pkg/editor/vscode/vscode_suite_test.go +0 -0
  222. {envd-0.3.30 → envd-0.3.32}/pkg/editor/vscode/vscode_test.go +0 -0
  223. {envd-0.3.30 → envd-0.3.32}/pkg/envd/docker.go +0 -0
  224. {envd-0.3.30 → envd-0.3.32}/pkg/envd/engine.go +0 -0
  225. {envd-0.3.30 → envd-0.3.32}/pkg/envd/envdserver.go +0 -0
  226. {envd-0.3.30 → envd-0.3.32}/pkg/envd/factory.go +0 -0
  227. {envd-0.3.30 → envd-0.3.32}/pkg/envd/types.go +0 -0
  228. {envd-0.3.30 → envd-0.3.32}/pkg/flag/consts.go +0 -0
  229. {envd-0.3.30 → envd-0.3.32}/pkg/home/auth.go +0 -0
  230. {envd-0.3.30 → envd-0.3.32}/pkg/home/auth_test.go +0 -0
  231. {envd-0.3.30 → envd-0.3.32}/pkg/home/cache.go +0 -0
  232. {envd-0.3.30 → envd-0.3.32}/pkg/home/config.go +0 -0
  233. {envd-0.3.30 → envd-0.3.32}/pkg/home/context.go +0 -0
  234. {envd-0.3.30 → envd-0.3.32}/pkg/home/context_test.go +0 -0
  235. {envd-0.3.30 → envd-0.3.32}/pkg/home/data.go +0 -0
  236. {envd-0.3.30 → envd-0.3.32}/pkg/home/home_suite_test.go +0 -0
  237. {envd-0.3.30 → envd-0.3.32}/pkg/home/manager.go +0 -0
  238. {envd-0.3.30 → envd-0.3.32}/pkg/home/manager_test.go +0 -0
  239. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/interpreter.go +0 -0
  240. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/mock/mock.go +0 -0
  241. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v0/builtin/builtin.go +0 -0
  242. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v0/config/config.go +0 -0
  243. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v0/config/const.go +0 -0
  244. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v0/data/const.go +0 -0
  245. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v0/data/rule.go +0 -0
  246. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v0/data/util.go +0 -0
  247. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v0/install/const.go +0 -0
  248. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v0/install/install.go +0 -0
  249. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v0/interpreter.go +0 -0
  250. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v0/interpreter_test.go +0 -0
  251. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v0/io/const.go +0 -0
  252. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v0/io/io.go +0 -0
  253. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v0/runtime/const.go +0 -0
  254. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v0/runtime/runtime.go +0 -0
  255. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v0/starlark_suite_test.go +0 -0
  256. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v0/testdata/test.envd +0 -0
  257. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v0/universe/const.go +0 -0
  258. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v0/universe/universe.go +0 -0
  259. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v1/builtin/builtin.go +0 -0
  260. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v1/config/config.go +0 -0
  261. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v1/config/const.go +0 -0
  262. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v1/data/const.go +0 -0
  263. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v1/data/rule.go +0 -0
  264. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v1/data/util.go +0 -0
  265. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v1/install/const.go +0 -0
  266. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v1/install/install.go +0 -0
  267. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v1/interpreter.go +0 -0
  268. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v1/interpreter_test.go +0 -0
  269. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v1/io/const.go +0 -0
  270. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v1/io/io.go +0 -0
  271. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v1/runtime/const.go +0 -0
  272. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v1/runtime/runtime.go +0 -0
  273. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v1/starlark_suite_test.go +0 -0
  274. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v1/testdata/test.envd +0 -0
  275. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v1/universe/const.go +0 -0
  276. {envd-0.3.30 → envd-0.3.32}/pkg/lang/frontend/starlark/v1/universe/universe.go +0 -0
  277. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/graph.go +0 -0
  278. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/types.go +0 -0
  279. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/util.go +0 -0
  280. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/cache.go +0 -0
  281. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/checker.go +0 -0
  282. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/compile.go +0 -0
  283. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/conda.go +0 -0
  284. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/consts.go +0 -0
  285. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/custom.go +0 -0
  286. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/editor.go +0 -0
  287. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/editor_test.go +0 -0
  288. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/fs.go +0 -0
  289. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/git.go +0 -0
  290. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/install-conda.sh +0 -0
  291. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/install-mamba.sh +0 -0
  292. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/interface.go +0 -0
  293. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/julia.go +0 -0
  294. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/python.go +0 -0
  295. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/r.go +0 -0
  296. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/shell.go +0 -0
  297. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/supervisor.go +0 -0
  298. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/system.go +0 -0
  299. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/types.go +0 -0
  300. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/user.go +0 -0
  301. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/util.go +0 -0
  302. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v0/util_test.go +0 -0
  303. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/cache.go +0 -0
  304. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/checker.go +0 -0
  305. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/compile.go +0 -0
  306. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/conda.go +0 -0
  307. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/consts.go +0 -0
  308. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/editor.go +0 -0
  309. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/editor_test.go +0 -0
  310. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/fs.go +0 -0
  311. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/get_conda.sh +0 -0
  312. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/git.go +0 -0
  313. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/install_conda.sh +0 -0
  314. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/interface.go +0 -0
  315. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/julia.go +0 -0
  316. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/julia.sh +0 -0
  317. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/python.go +0 -0
  318. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/r.go +0 -0
  319. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/shell.go +0 -0
  320. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/supervisor.go +0 -0
  321. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/types.go +0 -0
  322. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/user.go +0 -0
  323. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/util.go +0 -0
  324. {envd-0.3.30 → envd-0.3.32}/pkg/lang/ir/v1/util_test.go +0 -0
  325. {envd-0.3.30 → envd-0.3.32}/pkg/lang/version/version.go +0 -0
  326. {envd-0.3.30 → envd-0.3.32}/pkg/metrics/collector.go +0 -0
  327. {envd-0.3.30 → envd-0.3.32}/pkg/metrics/docker_collector.go +0 -0
  328. {envd-0.3.30 → envd-0.3.32}/pkg/metrics/helper.go +0 -0
  329. {envd-0.3.30 → envd-0.3.32}/pkg/metrics/model.go +0 -0
  330. {envd-0.3.30 → envd-0.3.32}/pkg/metrics/widget.go +0 -0
  331. {envd-0.3.30 → envd-0.3.32}/pkg/progress/compileui/display.go +0 -0
  332. {envd-0.3.30 → envd-0.3.32}/pkg/progress/compileui/mock/mock.go +0 -0
  333. {envd-0.3.30 → envd-0.3.32}/pkg/progress/compileui/term.go +0 -0
  334. {envd-0.3.30 → envd-0.3.32}/pkg/progress/compileui/term_windows.go +0 -0
  335. {envd-0.3.30 → envd-0.3.32}/pkg/progress/compileui/trace.go +0 -0
  336. {envd-0.3.30 → envd-0.3.32}/pkg/progress/compileui/types.go +0 -0
  337. {envd-0.3.30 → envd-0.3.32}/pkg/progress/mode/mode.go +0 -0
  338. {envd-0.3.30 → envd-0.3.32}/pkg/progress/progressui/display.go +0 -0
  339. {envd-0.3.30 → envd-0.3.32}/pkg/progress/progressui/display_test.go +0 -0
  340. {envd-0.3.30 → envd-0.3.32}/pkg/progress/progressui/printer.go +0 -0
  341. {envd-0.3.30 → envd-0.3.32}/pkg/progress/progressui/term.go +0 -0
  342. {envd-0.3.30 → envd-0.3.32}/pkg/progress/progressui/term_windows.go +0 -0
  343. {envd-0.3.30 → envd-0.3.32}/pkg/progress/progresswriter/printer.go +0 -0
  344. {envd-0.3.30 → envd-0.3.32}/pkg/progress/progresswriter/writer.go +0 -0
  345. {envd-0.3.30 → envd-0.3.32}/pkg/remote/sshd/os.go +0 -0
  346. {envd-0.3.30 → envd-0.3.32}/pkg/remote/sshd/sshd.go +0 -0
  347. {envd-0.3.30 → envd-0.3.32}/pkg/shell/install.sh +0 -0
  348. {envd-0.3.30 → envd-0.3.32}/pkg/shell/zsh.go +0 -0
  349. {envd-0.3.30 → envd-0.3.32}/pkg/shell/zsh_suite_test.go +0 -0
  350. {envd-0.3.30 → envd-0.3.32}/pkg/shell/zsh_test.go +0 -0
  351. {envd-0.3.30 → envd-0.3.32}/pkg/shell/zshrc +0 -0
  352. {envd-0.3.30 → envd-0.3.32}/pkg/ssh/config/entry.go +0 -0
  353. {envd-0.3.30 → envd-0.3.32}/pkg/ssh/config/key.go +0 -0
  354. {envd-0.3.30 → envd-0.3.32}/pkg/ssh/config/ssh_config.go +0 -0
  355. {envd-0.3.30 → envd-0.3.32}/pkg/ssh/config/ssh_config_suite_test.go +0 -0
  356. {envd-0.3.30 → envd-0.3.32}/pkg/ssh/config/ssh_config_test.go +0 -0
  357. {envd-0.3.30 → envd-0.3.32}/pkg/ssh/copy.go +0 -0
  358. {envd-0.3.30 → envd-0.3.32}/pkg/ssh/ssh.go +0 -0
  359. {envd-0.3.30 → envd-0.3.32}/pkg/syncthing/client.go +0 -0
  360. {envd-0.3.30 → envd-0.3.32}/pkg/syncthing/config.go +0 -0
  361. {envd-0.3.30 → envd-0.3.32}/pkg/syncthing/device.go +0 -0
  362. {envd-0.3.30 → envd-0.3.32}/pkg/syncthing/event.go +0 -0
  363. {envd-0.3.30 → envd-0.3.32}/pkg/syncthing/file.go +0 -0
  364. {envd-0.3.30 → envd-0.3.32}/pkg/syncthing/folder.go +0 -0
  365. {envd-0.3.30 → envd-0.3.32}/pkg/syncthing/install.go +0 -0
  366. {envd-0.3.30 → envd-0.3.32}/pkg/syncthing/syncthing.go +0 -0
  367. {envd-0.3.30 → envd-0.3.32}/pkg/syncthing/syncthing_test.go +0 -0
  368. {envd-0.3.30 → envd-0.3.32}/pkg/syncthing/util.go +0 -0
  369. {envd-0.3.30 → envd-0.3.32}/pkg/types/envd.go +0 -0
  370. {envd-0.3.30 → envd-0.3.32}/pkg/types/label.go +0 -0
  371. {envd-0.3.30 → envd-0.3.32}/pkg/types/types_suite_test.go +0 -0
  372. {envd-0.3.30 → envd-0.3.32}/pkg/util/envutil/env.go +0 -0
  373. {envd-0.3.30 → envd-0.3.32}/pkg/util/envutil/env_test.go +0 -0
  374. {envd-0.3.30 → envd-0.3.32}/pkg/util/fileutil/file.go +0 -0
  375. {envd-0.3.30 → envd-0.3.32}/pkg/util/fileutil/file_test.go +0 -0
  376. {envd-0.3.30 → envd-0.3.32}/pkg/util/fileutil/namegenerator.go +0 -0
  377. {envd-0.3.30 → envd-0.3.32}/pkg/util/netutil/netutil.go +0 -0
  378. {envd-0.3.30 → envd-0.3.32}/pkg/util/netutil/netutil_test.go +0 -0
  379. {envd-0.3.30 → envd-0.3.32}/pkg/util/osutil/wsl.go +0 -0
  380. {envd-0.3.30 → envd-0.3.32}/pkg/util/runtimeutil/runtimeutil.go +0 -0
  381. {envd-0.3.30 → envd-0.3.32}/pkg/util/starlarkutil/stringslice.go +0 -0
  382. {envd-0.3.30 → envd-0.3.32}/pkg/util/starlarkutil/stringslice_test.go +0 -0
  383. {envd-0.3.30 → envd-0.3.32}/pkg/util/ziputil/unzip.go +0 -0
  384. {envd-0.3.30 → envd-0.3.32}/pkg/version/version.go +0 -0
  385. {envd-0.3.30 → envd-0.3.32}/pyproject.toml +0 -0
  386. {envd-0.3.30 → envd-0.3.32}/scripts/envd-daemonless.sh +0 -0
  387. {envd-0.3.30 → envd-0.3.32}/setup.cfg +0 -0
  388. {envd-0.3.30 → envd-0.3.32}/setup.py +0 -0
  389. {envd-0.3.30 → envd-0.3.32}/typos.toml +0 -0
@@ -0,0 +1 @@
1
+ v0.3.32
@@ -1,5 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.3.31 (2023-07-04)
4
+
5
+ * [67ce1d7](https://github.com/tensorchord/envd/commit/67ce1d7cd5c234a59294a4bba02df35fa190bb2b) fix: mount buildkitd toml file (#1686)
6
+ * [cde4632](https://github.com/tensorchord/envd/commit/cde4632b2954b510e72efe2a7373d2c1d37456e9) support using json for registry config (#1680)
7
+ * [b5f9a49](https://github.com/tensorchord/envd/commit/b5f9a49d911ce5ee1e8859968f449835d4147c5f) Fix PATH Order (#1679)
8
+
9
+ ### Contributors
10
+
11
+ * Keming
12
+ * Richard Li
13
+
14
+ ## v0.3.30 (2023-06-29)
15
+
16
+
17
+ ### Contributors
18
+
19
+
3
20
  ## v0.3.29 (2023-06-29)
4
21
 
5
22
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: envd
3
- Version: 0.3.30
3
+ Version: 0.3.32
4
4
  Summary: A development environment management tool for data scientists.
5
5
  Home-page: https://github.com/tensorchord/envd
6
6
  Author: TensorChord
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: envd
3
- Version: 0.3.30
3
+ Version: 0.3.32
4
4
  Summary: A development environment management tool for data scientists.
5
5
  Home-page: https://github.com/tensorchord/envd
6
6
  Author: TensorChord
@@ -15,6 +15,7 @@
15
15
  package app
16
16
 
17
17
  import (
18
+ "encoding/json"
18
19
  "fmt"
19
20
  "os"
20
21
  "path/filepath"
@@ -47,12 +48,12 @@ var CommandBootstrap = &cli.Command{
47
48
  },
48
49
  &cli.BoolFlag{
49
50
  Name: "with-autocomplete",
50
- Usage: "Add envd autocompletions",
51
+ Usage: "Add envd auto-completions",
51
52
  Value: true,
52
53
  },
53
54
  &cli.StringFlag{
54
55
  Name: "dockerhub-mirror",
55
- Usage: "Dockerhub mirror to use",
56
+ Usage: "DockerHub mirror to use",
56
57
  Aliases: []string{"m"},
57
58
  },
58
59
  &cli.StringFlag{
@@ -62,7 +63,7 @@ var CommandBootstrap = &cli.Command{
62
63
  },
63
64
  &cli.StringSliceFlag{
64
65
  Name: "ssh-keypair",
65
- Usage: fmt.Sprintf("Manually specify ssh key pair as `publicKey,privateKey`. Envd will generate a keypair at %s and %s if not specified",
66
+ Usage: fmt.Sprintf("Manually specify ssh key pair as `publicKey,privateKey`. envd will generate a keypair at %s and %s if not specified",
66
67
  sshconfig.GetPublicKeyOrPanic(), sshconfig.GetPrivateKeyOrPanic()),
67
68
  Aliases: []string{"k"},
68
69
  },
@@ -75,6 +76,11 @@ var CommandBootstrap = &cli.Command{
75
76
  Name: "registry",
76
77
  Usage: "Specify the registry to pull the image from",
77
78
  Aliases: []string{"r"},
79
+ Value: "docker.io",
80
+ },
81
+ &cli.StringFlag{
82
+ Name: "registry-config",
83
+ Usage: "Path to a JSON file containing registry configuration. Cannot be used with 'registry' or 'registry-ca-keypair'",
78
84
  },
79
85
  },
80
86
 
@@ -91,6 +97,9 @@ func bootstrap(clicontext *cli.Context) error {
91
97
  }, {
92
98
  "registry CA keypair",
93
99
  registryCA,
100
+ }, {
101
+ "registry json config",
102
+ registryJSONConfig,
94
103
  }, {
95
104
  "autocomplete",
96
105
  autocomplete,
@@ -112,16 +121,25 @@ func bootstrap(clicontext *cli.Context) error {
112
121
  }
113
122
 
114
123
  func registryCA(clicontext *cli.Context) error {
124
+ configFile := clicontext.String("registry-config")
115
125
  ca := clicontext.String("registry-ca-keypair")
126
+ registry := clicontext.String("registry")
127
+
116
128
  if len(ca) == 0 {
117
129
  return nil
118
130
  }
131
+
132
+ // We only need this check in registryCA because it is called before registryJSONConfig
133
+ if len(configFile) > 0 && len(ca) > 0 {
134
+ return errors.New("only one of `registry-config` and `registry-ca-keypair` can be used")
135
+ }
136
+
119
137
  mirror := clicontext.String("dockerhub-mirror")
120
138
  if len(mirror) == 0 {
121
139
  return errors.New("`registry-ca-keypair` should be used with `dockerhub-mirror`")
122
140
  }
123
141
 
124
- // parse ca/key/cert
142
+ // Parse ca/key/cert
125
143
  kvPairs := strings.Split(ca, ",")
126
144
  if len(kvPairs) != 3 {
127
145
  return errors.New("`registry-ca-keypair` requires ca/key/cert 3 part separated by ','")
@@ -146,7 +164,8 @@ func registryCA(clicontext *cli.Context) error {
146
164
  if !exist {
147
165
  return errors.Newf("file %s doesn't exist", kv[1])
148
166
  }
149
- path, err := fileutil.ConfigFile(fmt.Sprintf("registry_%s.pem", kv[0]))
167
+
168
+ path, err := fileutil.ConfigFile(fmt.Sprintf("%s_%s.pem", registry, kv[0]))
150
169
  if err != nil {
151
170
  return errors.Wrap(err, "failed to get the envd config file path")
152
171
  }
@@ -166,6 +185,69 @@ func registryCA(clicontext *cli.Context) error {
166
185
  return nil
167
186
  }
168
187
 
188
+ func registryJSONConfig(clicontext *cli.Context) error {
189
+ configFile := clicontext.String("registry-config")
190
+ if len(configFile) == 0 {
191
+ return nil
192
+ }
193
+
194
+ // Check if file exists
195
+ exist, err := fileutil.FileExists(configFile)
196
+ if err != nil {
197
+ return errors.Wrap(err, fmt.Sprintf("failed to parse file path %s", configFile))
198
+ }
199
+ if !exist {
200
+ return errors.Newf("file %s doesn't exist", configFile)
201
+ }
202
+
203
+ config := buildkitutil.BuildkitConfig{}
204
+ configJson, err := os.ReadFile(configFile)
205
+ if err != nil {
206
+ return errors.Wrap(err, "Failed to read registry config file")
207
+ }
208
+ if err := json.Unmarshal(configJson, &config); err != nil {
209
+ return errors.Wrap(err, "Failed to parse registry config file")
210
+ }
211
+
212
+ // Check for required keys in each registry
213
+ for i, registry := range config.Registries {
214
+ if registry.Name == "" {
215
+ return errors.Newf("`name` key is required in the config for registry at index %d", i)
216
+ }
217
+
218
+ // Check for optional keys and if they exist, ensure they point to existing files
219
+ optionalKeys := map[string]string{"ca": registry.Ca, "cert": registry.Cert, "key": registry.Key}
220
+ for key, value := range optionalKeys {
221
+ if value != "" {
222
+ exist, err := fileutil.FileExists(value)
223
+ if err != nil {
224
+ return errors.Wrap(err, fmt.Sprintf("failed to parse file path %s", value))
225
+ }
226
+ if !exist {
227
+ return errors.Newf("file %s doesn't exist", value)
228
+ }
229
+
230
+ // Read the file
231
+ content, err := os.ReadFile(value)
232
+ if err != nil {
233
+ return errors.Wrap(err, fmt.Sprintf("failed to read the %s file for registry %s", key, registry.Name))
234
+ }
235
+
236
+ // Write the content to the envd config directory
237
+ envdConfigPath, err := fileutil.ConfigFile(fmt.Sprintf("%s_%s.pem", registry.Name, key))
238
+ if err != nil {
239
+ return errors.Wrap(err, fmt.Sprintf("failed to get the envd config file path for %s of registry %s", key, registry.Name))
240
+ }
241
+
242
+ if err = os.WriteFile(envdConfigPath, content, 0644); err != nil {
243
+ return errors.Wrap(err, fmt.Sprintf("failed to store the %s file for registry %s", key, registry.Name))
244
+ }
245
+ }
246
+ }
247
+ }
248
+ return nil
249
+ }
250
+
169
251
  func sshKey(clicontext *cli.Context) error {
170
252
  sshKeyPair := clicontext.StringSlice("ssh-keypair")
171
253
 
@@ -240,7 +322,7 @@ func sshKey(clicontext *cli.Context) error {
240
322
  return nil
241
323
 
242
324
  default:
243
- return errors.Errorf("Invalid ssh-keypair flag")
325
+ return errors.Newf("Invalid ssh-keypair flag")
244
326
  }
245
327
  }
246
328
 
@@ -289,14 +371,39 @@ func buildkit(clicontext *cli.Context) error {
289
371
  }
290
372
 
291
373
  logrus.Debug("bootstrap the buildkitd container")
292
- var bkClient buildkitd.Client
293
- config := buildkitutil.BuildkitConfig{
294
- Registry: clicontext.String("registry"),
295
- Mirror: clicontext.String("dockerhub-mirror"),
296
- UseHTTP: clicontext.Bool("use-http"),
297
- SetCA: clicontext.IsSet("registry-ca-keypair"),
374
+ // Populate the BuildkitConfig struct
375
+ config := buildkitutil.BuildkitConfig{}
376
+
377
+ configFile := clicontext.String("registry-config")
378
+ if len(configFile) != 0 {
379
+ configJson, err := os.ReadFile(configFile)
380
+ if err != nil {
381
+ return errors.Wrap(err, "Failed to read registry config file")
382
+ }
383
+ if err := json.Unmarshal(configJson, &config); err != nil {
384
+ return errors.Wrap(err, "Failed to parse registry config file")
385
+ }
386
+ } else if len(clicontext.String("registry-ca-keypair")) != 0 {
387
+ // The values of Ca, Cert, and Key don't actually matter since we already copied their contents to the envd config directory and mounted to `/etc/registry`.
388
+ // So instead of parsing registry-ca-keypair again, we'll just put the default value.
389
+ // This is to ensure that buildkitConfigTemplate parses properly.
390
+ config.Registries = append(config.Registries, buildkitutil.Registry{
391
+ Name: clicontext.String("registry"),
392
+ Ca: "/etc/registry",
393
+ Cert: "/etc/registry",
394
+ Key: "/etc/registry",
395
+ UseHTTP: clicontext.Bool("use-http"),
396
+ Mirror: clicontext.String("dockerhub-mirror"),
397
+ })
398
+ } else if len(clicontext.String("dockerhub-mirror")) != 0 {
399
+ config.Registries = append(config.Registries, buildkitutil.Registry{
400
+ Name: clicontext.String("registry"),
401
+ UseHTTP: clicontext.Bool("use-http"),
402
+ Mirror: clicontext.String("dockerhub-mirror"),
403
+ })
298
404
  }
299
405
 
406
+ var bkClient buildkitd.Client
300
407
  if c.Builder == types.BuilderTypeMoby {
301
408
  bkClient, err = buildkitd.NewMobyClient(clicontext.Context,
302
409
  c.Builder, c.BuilderAddress, &config)
@@ -83,12 +83,12 @@ To build and push the image to a registry:
83
83
  // https://github.com/urfave/cli/issues/1134#issuecomment-1191407527
84
84
  &cli.StringFlag{
85
85
  Name: "export-cache",
86
- Usage: "Export the cache (e.g. type=registry,ref=<image>)",
86
+ Usage: "Export the cache (e.g. `type=registry,ref=<image>`)",
87
87
  Aliases: []string{"ec"},
88
88
  },
89
89
  &cli.StringFlag{
90
90
  Name: "import-cache",
91
- Usage: "Import the cache (e.g. type=registry,ref=<image>)",
91
+ Usage: "Import the cache (e.g. `type=registry,ref=<image>`)",
92
92
  Aliases: []string{"ic"},
93
93
  },
94
94
  &cli.StringFlag{
@@ -80,7 +80,7 @@ var CommandCreate = &cli.Command{
80
80
  },
81
81
  &cli.StringFlag{
82
82
  Name: "host",
83
- Usage: "Assign the host address for environment ssh acesss server listening",
83
+ Usage: "Assign the host address for the environment SSH access server listening",
84
84
  Value: envd.Localhost,
85
85
  },
86
86
  &cli.IntFlag{
@@ -128,18 +128,18 @@ var CommandUp = &cli.Command{
128
128
  },
129
129
  &cli.StringFlag{
130
130
  Name: "host",
131
- Usage: "Assign the host address for environment ssh acesss server listening",
131
+ Usage: "Assign the host address for the environment SSH access server listening",
132
132
  Value: envd.Localhost,
133
133
  },
134
134
  // https://github.com/urfave/cli/issues/1134#issuecomment-1191407527
135
135
  &cli.StringFlag{
136
136
  Name: "export-cache",
137
- Usage: "Export the cache (e.g. type=registry,ref=<image>)",
137
+ Usage: "Export the cache (e.g. `type=registry,ref=<image>`)",
138
138
  Aliases: []string{"ec"},
139
139
  },
140
140
  &cli.StringFlag{
141
141
  Name: "import-cache",
142
- Usage: "Import the cache (e.g. type=registry,ref=<image>)",
142
+ Usage: "Import the cache (e.g. `type=registry,ref=<image>`)",
143
143
  Aliases: []string{"ic"},
144
144
  },
145
145
  &cli.StringFlag{
@@ -17,9 +17,9 @@ package docker
17
17
  import (
18
18
  "context"
19
19
  "encoding/json"
20
- "fmt"
21
20
  "io"
22
21
  "os"
22
+ "path/filepath"
23
23
  "regexp"
24
24
  "strconv"
25
25
  "strings"
@@ -40,7 +40,7 @@ import (
40
40
  "github.com/tensorchord/envd/pkg/util/fileutil"
41
41
  )
42
42
 
43
- const buildkitdCertPath = "/etc/registry"
43
+ const buildkitdConfigPath = "/etc/registry"
44
44
 
45
45
  var (
46
46
  anchoredIdentifierRegexp = regexp.MustCompile(`^([a-f0-9]{64})$`)
@@ -205,25 +205,22 @@ func (c dockerClient) StartBuildkitd(ctx context.Context, tag, name string, bc *
205
205
  hostConfig := &container.HostConfig{
206
206
  Privileged: true,
207
207
  AutoRemove: true,
208
+ Mounts: []mount.Mount{
209
+ {
210
+ Type: mount.TypeBind,
211
+ Source: fileutil.DefaultConfigDir,
212
+ Target: buildkitdConfigPath,
213
+ },
214
+ },
208
215
  }
209
216
 
210
- if bc.SetCA {
211
- hostConfig.Mounts = append(hostConfig.Mounts, mount.Mount{
212
- Type: mount.TypeBind,
213
- Source: fileutil.DefaultConfigDir,
214
- Target: buildkitdCertPath,
215
- })
216
- }
217
- cfg, err := bc.String()
217
+ err := bc.Save()
218
218
  if err != nil {
219
219
  return "", errors.Wrap(err, "failed to generate buildkit config")
220
220
  }
221
221
  config.Entrypoint = []string{
222
- "/bin/sh",
223
- "-c",
224
- fmt.Sprintf("mkdir /etc/buildkit && echo '%s' > /etc/buildkit/buildkitd.toml && buildkitd", cfg),
222
+ "buildkitd", "--config", filepath.Join(buildkitdConfigPath, "buildkitd.toml"),
225
223
  }
226
- logger.Debugf("setting buildkit config: %s", cfg)
227
224
  created, _ := c.Exists(ctx, name)
228
225
  if created {
229
226
  err := c.ContainerStart(ctx, name, types.ContainerStartOptions{})
@@ -83,7 +83,7 @@ func (nc *nerdctlClient) StartBuildkitd(ctx context.Context, tag, name string, b
83
83
  if !existed {
84
84
  buildkitdCmd := "buildkitd"
85
85
  // TODO: support mirror CA keypair
86
- if bc.Registry != "" || bc.Mirror != "" || bc.UseHTTP {
86
+ if len(bc.Registries) > 0 {
87
87
  cfg, err := bc.String()
88
88
  if err != nil {
89
89
  return "", errors.Wrap(err, "failed to generate buildkit config")
@@ -353,15 +353,20 @@ func (g *generalGraph) compileBaseImage() (llb.State, error) {
353
353
  // 1. configured paths in the Starlark frontend `runtime.environ(extra_path=[...])`
354
354
  // 2. paths in the base image
355
355
  // 3. others added during the image building (Python paths, etc.)
356
- extraPaths := make(map[string]bool)
357
- for _, path := range strings.Split(kv[1], ":") {
358
- extraPaths[path] = true
359
- }
356
+
357
+ // iterate over the original paths and add them to the map
358
+ pathMap := make(map[string]bool)
360
359
  for _, path := range g.RuntimeEnvPaths {
361
- extraPaths[path] = false
360
+ pathMap[path] = true
362
361
  }
363
- for path, required := range extraPaths {
364
- if required {
362
+ // split the PATH into different paths
363
+ newPaths := strings.Split(kv[1], ":")
364
+ // iterate over the new paths
365
+ for _, path := range newPaths {
366
+ // check if the path is already in the map
367
+ if _, ok := pathMap[path]; !ok {
368
+ // if not, add the path to the map and slice
369
+ pathMap[path] = true
365
370
  g.RuntimeEnvPaths = append(g.RuntimeEnvPaths, path)
366
371
  }
367
372
  }
@@ -0,0 +1,83 @@
1
+ // Copyright 2023 The envd Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ package buildkitutil
16
+
17
+ import (
18
+ "os"
19
+ "strings"
20
+ "text/template"
21
+
22
+ "github.com/cockroachdb/errors"
23
+
24
+ "github.com/tensorchord/envd/pkg/util/fileutil"
25
+ )
26
+
27
+ const buildkitConfigTemplate = `
28
+ [registry]
29
+ {{- range $registry := .Registries }}
30
+ [registry."{{ if $registry.Name }}{{ $registry.Name }}{{ else }}docker.io{{ end }}"]
31
+ {{- if $registry.UseHTTP }}
32
+ http = true
33
+ {{- end }}
34
+ {{- if $registry.Mirror }}
35
+ mirrors = ["{{ $registry.Mirror }}"]
36
+ {{- end }}
37
+ {{- if $registry.Ca }}
38
+ ca=["/etc/registry/{{ $registry.Name }}_ca.pem"]
39
+ {{- end }}
40
+ {{- if and $registry.Cert $registry.Key }}
41
+ [[registry."{{ if $registry.Name }}{{ $registry.Name }}{{ else }}docker.io{{ end }}".keypair]]
42
+ key="/etc/registry/{{ $registry.Name }}_key.pem"
43
+ cert="/etc/registry/{{ $registry.Name }}_cert.pem"
44
+ {{- end }}
45
+ {{- end }}
46
+ `
47
+
48
+ type Registry struct {
49
+ Name string `json:"name"`
50
+ Ca string `json:"ca"`
51
+ Cert string `json:"cert"`
52
+ Key string `json:"key"`
53
+ UseHTTP bool `json:"use_http"`
54
+ Mirror string `json:"mirror"`
55
+ }
56
+
57
+ type BuildkitConfig struct {
58
+ Registries []Registry `json:"registries"`
59
+ }
60
+
61
+ func (c *BuildkitConfig) String() (string, error) {
62
+ tmpl, err := template.New("buildkitConfig").Parse(buildkitConfigTemplate)
63
+ if err != nil {
64
+ return "", err
65
+ }
66
+ var config strings.Builder
67
+ err = tmpl.Execute(&config, c)
68
+ return config.String(), err
69
+ }
70
+
71
+ func (c *BuildkitConfig) Save() error {
72
+ text, err := c.String()
73
+ if err != nil {
74
+ return err
75
+ }
76
+
77
+ path, err := fileutil.ConfigFile("buildkitd.toml")
78
+ if err != nil {
79
+ return errors.Wrap(err, "failed to get the buildkitd config file")
80
+ }
81
+ err = os.WriteFile(path, []byte(text), 0644)
82
+ return err
83
+ }
@@ -0,0 +1,127 @@
1
+ // Copyright 2023 The envd Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ package buildkitutil
16
+
17
+ import (
18
+ "strings"
19
+ "testing"
20
+
21
+ "github.com/stretchr/testify/assert"
22
+ )
23
+
24
+ func TestBuildkitWithRegistry(t *testing.T) {
25
+ testCases := []struct {
26
+ bc BuildkitConfig
27
+ expected string
28
+ }{
29
+ {
30
+ BuildkitConfig{
31
+ Registries: []Registry{
32
+ {
33
+ Name: "registry.example.com",
34
+ Ca: "/etc/registry/ca.pem",
35
+ Cert: "/etc/registry/cert.pem",
36
+ Key: "/etc/registry/key.pem",
37
+ UseHTTP: false,
38
+ Mirror: "https://mirror.example.com",
39
+ },
40
+ },
41
+ },
42
+ `
43
+ [registry]
44
+ [registry."registry.example.com"]
45
+ mirrors = ["https://mirror.example.com"]
46
+ ca=["/etc/registry/registry.example.com_ca.pem"]
47
+ [[registry."registry.example.com".keypair]]
48
+ key="/etc/registry/registry.example.com_key.pem"
49
+ cert="/etc/registry/registry.example.com_cert.pem"
50
+ `,
51
+ },
52
+ {
53
+ BuildkitConfig{
54
+ Registries: []Registry{
55
+ {
56
+ Name: "registry.example.com",
57
+ UseHTTP: true,
58
+ Mirror: "https://mirror.example.com",
59
+ },
60
+ {
61
+ Name: "docker.io",
62
+ Mirror: "https://mirror.example.com",
63
+ },
64
+ },
65
+ },
66
+ `
67
+ [registry]
68
+ [registry."registry.example.com"]
69
+ http = true
70
+ mirrors = ["https://mirror.example.com"]
71
+ [registry."docker.io"]
72
+ mirrors = ["https://mirror.example.com"]
73
+ `,
74
+ },
75
+ {
76
+ BuildkitConfig{
77
+ Registries: []Registry{},
78
+ },
79
+ `
80
+ [registry]
81
+ `,
82
+ },
83
+ {
84
+ BuildkitConfig{
85
+ Registries: []Registry{
86
+ {
87
+ Name: "registry1.example.com",
88
+ Ca: "/etc/registry/ca1.pem",
89
+ Cert: "/etc/registry/cert1.pem",
90
+ Key: "/etc/registry/key1.pem",
91
+ UseHTTP: true,
92
+ Mirror: "https://mirror.example.com",
93
+ },
94
+ {
95
+ Name: "registry2.example.com",
96
+ Ca: "/etc/registry/ca2.pem",
97
+ Cert: "/etc/registry/cert2.pem",
98
+ Key: "/etc/registry/key2.pem",
99
+ Mirror: "https://mirror.example.com",
100
+ },
101
+ },
102
+ },
103
+ `
104
+ [registry]
105
+ [registry."registry1.example.com"]
106
+ http = true
107
+ mirrors = ["https://mirror.example.com"]
108
+ ca=["/etc/registry/registry1.example.com_ca.pem"]
109
+ [[registry."registry1.example.com".keypair]]
110
+ key="/etc/registry/registry1.example.com_key.pem"
111
+ cert="/etc/registry/registry1.example.com_cert.pem"
112
+ [registry."registry2.example.com"]
113
+ mirrors = ["https://mirror.example.com"]
114
+ ca=["/etc/registry/registry2.example.com_ca.pem"]
115
+ [[registry."registry2.example.com".keypair]]
116
+ key="/etc/registry/registry2.example.com_key.pem"
117
+ cert="/etc/registry/registry2.example.com_cert.pem"
118
+ `,
119
+ },
120
+ }
121
+
122
+ for _, tc := range testCases {
123
+ config, err := tc.bc.String()
124
+ assert.NoError(t, err)
125
+ assert.Equal(t, strings.TrimSpace(tc.expected), strings.TrimSpace(config))
126
+ }
127
+ }
envd-0.3.30/.GIT_TAG_INFO DELETED
@@ -1 +0,0 @@
1
- v0.3.30
@@ -1,48 +0,0 @@
1
- // Copyright 2023 The envd Authors
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
-
15
- package buildkitutil
16
-
17
- import (
18
- "strings"
19
- "text/template"
20
- )
21
-
22
- const buildkitConfigTemplate = `
23
- [registry."{{ if .Registry }}{{ .Registry }}{{ else }}docker.io{{ end }}"]{{ if .Mirror }}
24
- mirrors = ["{{ .Mirror }}"]{{ end }}
25
- http = {{ .UseHTTP }}
26
- {{ if .SetCA}}ca=["/etc/registry/ca.pem"]
27
- [[registry."{{ if .Registry }}{{ .Registry }}{{ else }}docker.io{{ end }}".keypair]]
28
- key="/etc/registry/key.pem"
29
- cert="/etc/registry/cert.pem"
30
- {{ end }}
31
- `
32
-
33
- type BuildkitConfig struct {
34
- Registry string
35
- Mirror string
36
- UseHTTP bool
37
- SetCA bool
38
- }
39
-
40
- func (c *BuildkitConfig) String() (string, error) {
41
- tmpl, err := template.New("buildkitConfig").Parse(buildkitConfigTemplate)
42
- if err != nil {
43
- return "", err
44
- }
45
- var config strings.Builder
46
- err = tmpl.Execute(&config, c)
47
- return config.String(), err
48
- }