dapp 0.10.2 → 0.36.24

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.
Files changed (287) hide show
  1. checksums.yaml +5 -5
  2. data/bin/dapp +77 -15
  3. data/config/en/common.yml +20 -11
  4. data/config/en/net_status.yml +108 -27
  5. data/lib/dapp/cli/cli.rb +1 -0
  6. data/lib/dapp/cli/command/base.rb +111 -0
  7. data/lib/dapp/cli/command/sample/base.rb +28 -0
  8. data/lib/dapp/cli/command/sample/create.rb +24 -0
  9. data/lib/dapp/cli/command/sample/list.rb +25 -0
  10. data/lib/dapp/cli/command/sample.rb +20 -0
  11. data/lib/dapp/cli/command/slug.rb +26 -0
  12. data/lib/dapp/cli/command/update.rb +65 -0
  13. data/lib/dapp/cli/options/ssh.rb +18 -0
  14. data/lib/dapp/cli/options/tag.rb +51 -0
  15. data/lib/dapp/cli.rb +11 -3
  16. data/lib/dapp/config/config.rb +21 -0
  17. data/lib/dapp/config/directive/base.rb +100 -3
  18. data/lib/dapp/core_ext/hash.rb +14 -0
  19. data/lib/dapp/core_ext/pathname.rb +6 -4
  20. data/lib/dapp/dapp/chef.rb +1 -9
  21. data/lib/dapp/dapp/command/common.rb +24 -0
  22. data/lib/dapp/dapp/command/sample/common.rb +54 -0
  23. data/lib/dapp/dapp/command/sample/create.rb +57 -0
  24. data/lib/dapp/dapp/command/sample/list.rb +13 -0
  25. data/lib/dapp/dapp/command/slug.rb +11 -0
  26. data/lib/dapp/dapp/dapp_config.rb +85 -0
  27. data/lib/dapp/dapp/dappfile.rb +108 -27
  28. data/lib/dapp/dapp/deps/base.rb +9 -32
  29. data/lib/dapp/dapp/deps/common.rb +26 -0
  30. data/lib/dapp/dapp/deps/gitartifact.rb +2 -20
  31. data/lib/dapp/dapp/deps/toolchain.rb +11 -0
  32. data/lib/dapp/dapp/git_artifact.rb +6 -4
  33. data/lib/dapp/dapp/lock.rb +6 -5
  34. data/lib/dapp/dapp/logging/base.rb +32 -20
  35. data/lib/dapp/dapp/logging/i18n.rb +5 -1
  36. data/lib/dapp/dapp/logging/process.rb +6 -6
  37. data/lib/dapp/dapp/option_tags.rb +98 -0
  38. data/lib/dapp/dapp/ruby2go.rb +130 -0
  39. data/lib/dapp/dapp/sentry.rb +97 -0
  40. data/lib/dapp/dapp/shellout/base.rb +26 -18
  41. data/lib/dapp/dapp/shellout/streaming.rb +2 -2
  42. data/lib/dapp/dapp/slug.rb +12 -0
  43. data/lib/dapp/dapp/ssh_agent.rb +25 -7
  44. data/lib/dapp/dapp.rb +192 -41
  45. data/lib/dapp/deployment.rb +1 -0
  46. data/lib/dapp/dimg/artifact.rb +12 -4
  47. data/lib/dapp/dimg/build/stage/artifact_base.rb +26 -30
  48. data/lib/dapp/dimg/build/stage/artifact_default.rb +50 -28
  49. data/lib/dapp/dimg/build/stage/base.rb +187 -52
  50. data/lib/dapp/dimg/build/stage/before_install.rb +4 -15
  51. data/lib/dapp/dimg/build/stage/before_install_artifact.rb +4 -0
  52. data/lib/dapp/dimg/build/stage/before_setup.rb +1 -20
  53. data/lib/dapp/dimg/build/stage/build_artifact.rb +1 -20
  54. data/lib/dapp/dimg/build/stage/docker_instructions.rb +5 -4
  55. data/lib/dapp/dimg/build/stage/from.rb +62 -9
  56. data/lib/dapp/dimg/build/stage/ga_archive.rb +14 -1
  57. data/lib/dapp/dimg/build/stage/ga_artifact_patch.rb +1 -5
  58. data/lib/dapp/dimg/build/stage/ga_base.rb +5 -35
  59. data/lib/dapp/dimg/build/stage/ga_latest_patch.rb +15 -34
  60. data/lib/dapp/dimg/build/stage/ga_related_base.rb +21 -0
  61. data/lib/dapp/dimg/build/stage/import_artifact.rb +22 -11
  62. data/lib/dapp/dimg/build/stage/install/ga_post_install_patch.rb +6 -2
  63. data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch.rb +6 -2
  64. data/lib/dapp/dimg/build/stage/install/install.rb +1 -19
  65. data/lib/dapp/dimg/build/stage/instructions.rb +27 -0
  66. data/lib/dapp/dimg/build/stage/mod/group.rb +19 -7
  67. data/lib/dapp/dimg/build/stage/mod/logging.rb +15 -19
  68. data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch.rb +24 -1
  69. data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch.rb +6 -2
  70. data/lib/dapp/dimg/build/stage/setup/setup.rb +1 -19
  71. data/lib/dapp/dimg/builder/ansible.rb +5 -0
  72. data/lib/dapp/dimg/builder/chef/cookbook.rb +8 -8
  73. data/lib/dapp/dimg/builder/chef.rb +29 -16
  74. data/lib/dapp/dimg/builder/none.rb +1 -34
  75. data/lib/dapp/dimg/builder/ruby2go.rb +57 -0
  76. data/lib/dapp/dimg/builder/shell.rb +1 -20
  77. data/lib/dapp/dimg/cli/cli.rb +2 -1
  78. data/lib/dapp/dimg/cli/command/base.rb +24 -0
  79. data/lib/dapp/dimg/cli/command/dimg/bp.rb +60 -0
  80. data/lib/dapp/dimg/cli/command/dimg/build.rb +43 -0
  81. data/lib/dapp/dimg/cli/{build_context → command/dimg/build_context}/export.rb +9 -4
  82. data/lib/dapp/dimg/cli/{build_context → command/dimg/build_context}/import.rb +4 -4
  83. data/lib/dapp/dimg/cli/{build_context.rb → command/dimg/build_context.rb} +5 -5
  84. data/lib/dapp/dimg/cli/{cleanup.rb → command/dimg/cleanup.rb} +4 -6
  85. data/lib/dapp/dimg/cli/command/dimg/cleanup_repo.rb +47 -0
  86. data/lib/dapp/dimg/cli/command/dimg/flush_local.rb +24 -0
  87. data/lib/dapp/dimg/cli/command/dimg/flush_repo.rb +36 -0
  88. data/lib/dapp/dimg/cli/{list.rb → command/dimg/list.rb} +6 -3
  89. data/lib/dapp/dimg/cli/{mrproper.rb → command/dimg/mrproper.rb} +4 -4
  90. data/lib/dapp/dimg/cli/command/dimg/push.rb +39 -0
  91. data/lib/dapp/dimg/cli/{run.rb → command/dimg/run.rb} +30 -15
  92. data/lib/dapp/dimg/cli/{spush.rb → command/dimg/spush.rb} +4 -4
  93. data/lib/dapp/dimg/cli/{stage_image.rb → command/dimg/stage_image.rb} +12 -3
  94. data/lib/dapp/dimg/cli/command/dimg/stages/base.rb +13 -0
  95. data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/cleanup_local.rb +13 -9
  96. data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/cleanup_repo.rb +6 -8
  97. data/lib/dapp/dimg/cli/command/dimg/stages/flush_local.rb +21 -0
  98. data/lib/dapp/dimg/cli/command/dimg/stages/flush_repo.rb +28 -0
  99. data/lib/dapp/dimg/cli/command/dimg/stages/pull.rb +34 -0
  100. data/lib/dapp/dimg/cli/command/dimg/stages/push.rb +30 -0
  101. data/lib/dapp/dimg/cli/command/dimg/stages.rb +22 -0
  102. data/lib/dapp/dimg/cli/command/dimg/tag.rb +24 -0
  103. data/lib/dapp/dimg/cli/command/dimg.rb +31 -0
  104. data/lib/dapp/dimg/cli/options/introspection.rb +45 -0
  105. data/lib/dapp/dimg/config/config.rb +24 -0
  106. data/lib/dapp/dimg/config/directive/artifact.rb +13 -15
  107. data/lib/dapp/dimg/config/directive/artifact_base.rb +13 -8
  108. data/lib/dapp/dimg/config/directive/artifact_dimg.rb +12 -0
  109. data/lib/dapp/dimg/config/directive/artifact_group.rb +60 -0
  110. data/lib/dapp/dimg/config/directive/dimg/instance_methods.rb +203 -0
  111. data/lib/dapp/dimg/config/directive/dimg/validation.rb +217 -0
  112. data/lib/dapp/dimg/config/directive/dimg.rb +36 -0
  113. data/lib/dapp/dimg/config/directive/dimg_group.rb +73 -0
  114. data/lib/dapp/dimg/config/directive/dimg_group_base.rb +46 -0
  115. data/lib/dapp/dimg/config/directive/docker/artifact.rb +5 -0
  116. data/lib/dapp/dimg/config/directive/docker/base.rb +2 -3
  117. data/lib/dapp/dimg/config/directive/docker/dimg.rb +4 -4
  118. data/lib/dapp/dimg/config/directive/git_artifact_local.rb +24 -5
  119. data/lib/dapp/dimg/config/directive/git_artifact_remote.rb +23 -12
  120. data/lib/dapp/dimg/config/directive/mount.rb +11 -3
  121. data/lib/dapp/dimg/config/directive/shell/dimg.rb +2 -2
  122. data/lib/dapp/dimg/dapp/command/bp.rb +3 -5
  123. data/lib/dapp/dimg/dapp/command/build.rb +4 -6
  124. data/lib/dapp/dimg/dapp/command/build_context/common.rb +2 -2
  125. data/lib/dapp/dimg/dapp/command/build_context/export.rb +14 -14
  126. data/lib/dapp/dimg/dapp/command/build_context/import.rb +28 -23
  127. data/lib/dapp/dimg/dapp/command/cleanup.rb +4 -11
  128. data/lib/dapp/dimg/dapp/command/cleanup_repo.rb +143 -0
  129. data/lib/dapp/dimg/dapp/command/common.rb +148 -38
  130. data/lib/dapp/dimg/dapp/command/flush_local.rb +25 -0
  131. data/lib/dapp/dimg/dapp/command/flush_repo.rb +25 -0
  132. data/lib/dapp/dimg/dapp/command/list.rb +1 -1
  133. data/lib/dapp/dimg/dapp/command/mrproper.rb +16 -63
  134. data/lib/dapp/dimg/dapp/command/push.rb +11 -16
  135. data/lib/dapp/dimg/dapp/command/ruby2go_cleanup.rb +48 -0
  136. data/lib/dapp/dimg/dapp/command/run.rb +4 -4
  137. data/lib/dapp/dimg/dapp/command/spush.rb +4 -5
  138. data/lib/dapp/dimg/dapp/command/stage_image.rb +2 -2
  139. data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +13 -115
  140. data/lib/dapp/dimg/dapp/command/stages/cleanup_repo.rb +23 -102
  141. data/lib/dapp/dimg/dapp/command/stages/common.rb +57 -39
  142. data/lib/dapp/dimg/dapp/command/stages/flush_local.rb +13 -7
  143. data/lib/dapp/dimg/dapp/command/stages/flush_repo.rb +14 -8
  144. data/lib/dapp/dimg/dapp/command/stages/pull.rb +4 -13
  145. data/lib/dapp/dimg/dapp/command/stages/push.rb +4 -9
  146. data/lib/dapp/dimg/dapp/command/tag.rb +4 -6
  147. data/lib/dapp/dimg/dapp/config_artifact_group.rb +20 -0
  148. data/lib/dapp/dimg/dapp/dapp.rb +40 -0
  149. data/lib/dapp/dimg/dapp/dappfile.rb +43 -0
  150. data/lib/dapp/dimg/dapp/dimg.rb +41 -0
  151. data/lib/dapp/dimg/dimg/git_artifact.rb +25 -11
  152. data/lib/dapp/dimg/dimg/path.rb +7 -9
  153. data/lib/dapp/dimg/dimg/stages.rb +27 -15
  154. data/lib/dapp/dimg/dimg.rb +172 -69
  155. data/lib/dapp/dimg/docker_registry/base.rb +31 -74
  156. data/lib/dapp/dimg/docker_registry/dimg.rb +55 -0
  157. data/lib/dapp/dimg/docker_registry.rb +5 -23
  158. data/lib/dapp/dimg/error/build.rb +1 -1
  159. data/lib/dapp/dimg/error/chef.rb +1 -5
  160. data/lib/dapp/dimg/error/{command.rb → default.rb} +1 -1
  161. data/lib/dapp/dimg/error/dimg.rb +1 -1
  162. data/lib/dapp/dimg/error/lock.rb +1 -1
  163. data/lib/dapp/dimg/error/registry.rb +1 -1
  164. data/lib/dapp/dimg/error/rugged.rb +1 -1
  165. data/lib/dapp/dimg/error/tar_writer.rb +1 -1
  166. data/lib/dapp/dimg/git_artifact.rb +195 -179
  167. data/lib/dapp/dimg/git_repo/base.rb +49 -45
  168. data/lib/dapp/dimg/git_repo/local.rb +45 -0
  169. data/lib/dapp/dimg/git_repo/own.rb +3 -31
  170. data/lib/dapp/dimg/git_repo/remote.rb +65 -26
  171. data/lib/dapp/dimg/image/argument.rb +15 -50
  172. data/lib/dapp/dimg/image/dimg.rb +15 -0
  173. data/lib/dapp/dimg/image/scratch.rb +35 -9
  174. data/lib/dapp/dimg/image/stage.rb +223 -44
  175. data/lib/dapp/dimg/lock/file.rb +4 -4
  176. data/lib/dapp/downloader.rb +117 -0
  177. data/lib/dapp/error/base.rb +1 -5
  178. data/lib/dapp/error/command.rb +5 -0
  179. data/lib/dapp/error/config.rb +5 -0
  180. data/lib/dapp/error/dapp.rb +1 -1
  181. data/lib/dapp/error/dappfile.rb +1 -1
  182. data/lib/dapp/error/default.rb +11 -0
  183. data/lib/dapp/error/mod/user.rb +11 -0
  184. data/lib/dapp/error/shellout.rb +1 -1
  185. data/lib/dapp/exception/base.rb +1 -1
  186. data/lib/dapp/helper/case_conversion.rb +17 -0
  187. data/lib/dapp/helper/cli.rb +18 -7
  188. data/lib/dapp/helper/net_status.rb +5 -1
  189. data/lib/dapp/helper/sha256.rb +1 -1
  190. data/lib/dapp/helper/tar.rb +31 -0
  191. data/lib/dapp/helper/trivia.rb +40 -1
  192. data/lib/dapp/helper/url.rb +23 -0
  193. data/lib/dapp/helper/yaml.rb +24 -0
  194. data/lib/dapp/kube/cli/cli.rb +1 -0
  195. data/lib/dapp/kube/cli/command/base.rb +14 -0
  196. data/lib/dapp/kube/cli/command/kube/chart_create.rb +19 -0
  197. data/lib/dapp/kube/cli/command/kube/deploy.rb +80 -0
  198. data/lib/dapp/kube/cli/command/kube/dismiss.rb +31 -0
  199. data/lib/dapp/kube/cli/command/kube/lint.rb +53 -0
  200. data/lib/dapp/kube/cli/command/kube/minikube_setup.rb +19 -0
  201. data/lib/dapp/kube/cli/command/kube/render.rb +63 -0
  202. data/lib/dapp/kube/cli/command/kube/secret_edit.rb +30 -0
  203. data/lib/dapp/kube/cli/command/kube/secret_extract.rb +39 -0
  204. data/lib/dapp/kube/cli/command/kube/secret_generate.rb +34 -0
  205. data/lib/dapp/kube/cli/command/kube/secret_key_generate.rb +16 -0
  206. data/lib/dapp/kube/cli/command/kube/secret_regenerate.rb +29 -0
  207. data/lib/dapp/kube/cli/command/kube/value_get.rb +47 -0
  208. data/lib/dapp/kube/cli/command/kube.rb +28 -0
  209. data/lib/dapp/kube/dapp/command/chart_create.rb +103 -0
  210. data/lib/dapp/kube/dapp/command/common.rb +379 -0
  211. data/lib/dapp/kube/dapp/command/deploy.rb +351 -0
  212. data/lib/dapp/kube/dapp/command/dismiss.rb +50 -0
  213. data/lib/dapp/kube/dapp/command/lint.rb +69 -0
  214. data/lib/dapp/kube/dapp/command/minikube_setup.rb +402 -0
  215. data/lib/dapp/kube/dapp/command/render.rb +54 -0
  216. data/lib/dapp/kube/dapp/command/ruby2go.rb +17 -0
  217. data/lib/dapp/kube/dapp/command/secret_edit.rb +21 -0
  218. data/lib/dapp/kube/dapp/command/secret_extract.rb +17 -0
  219. data/lib/dapp/kube/dapp/command/secret_generate.rb +21 -0
  220. data/lib/dapp/kube/dapp/command/secret_key_generate.rb +13 -0
  221. data/lib/dapp/kube/dapp/command/secret_regenerate.rb +13 -0
  222. data/lib/dapp/kube/dapp/command/value_get.rb +32 -0
  223. data/lib/dapp/kube/dapp/dapp.rb +26 -0
  224. data/lib/dapp/kube/error/default.rb +7 -0
  225. data/lib/dapp/kube/helm/release.rb +189 -0
  226. data/lib/dapp/kube/helm/values.rb +148 -0
  227. data/lib/dapp/kube/helm.rb +5 -0
  228. data/lib/dapp/kube/kubernetes/client/error.rb +43 -0
  229. data/lib/dapp/kube/kubernetes/client/resource/base.rb +33 -0
  230. data/lib/dapp/kube/kubernetes/client/resource/deployment.rb +11 -0
  231. data/lib/dapp/kube/kubernetes/client/resource/event.rb +8 -0
  232. data/lib/dapp/kube/kubernetes/client/resource/job.rb +27 -0
  233. data/lib/dapp/kube/kubernetes/client/resource/pod.rb +62 -0
  234. data/lib/dapp/kube/kubernetes/client/resource/replicaset.rb +8 -0
  235. data/lib/dapp/kube/kubernetes/client.rb +314 -0
  236. data/lib/dapp/kube/kubernetes/config.rb +132 -0
  237. data/lib/dapp/kube/kubernetes/error.rb +15 -0
  238. data/lib/dapp/kube/kubernetes/manager/base.rb +15 -0
  239. data/lib/dapp/kube/kubernetes/manager/container.rb +103 -0
  240. data/lib/dapp/kube/kubernetes/manager/deployment.rb +212 -0
  241. data/lib/dapp/kube/kubernetes/manager/job.rb +65 -0
  242. data/lib/dapp/kube/kubernetes/manager/pod.rb +69 -0
  243. data/lib/dapp/kube/kubernetes.rb +6 -0
  244. data/lib/dapp/kube/secret.rb +93 -0
  245. data/lib/dapp/kube.rb +1 -0
  246. data/lib/dapp/version.rb +2 -2
  247. data/lib/dapp.rb +155 -61
  248. metadata +208 -61
  249. data/lib/dapp/cli/base.rb +0 -63
  250. data/lib/dapp/config/base.rb +0 -54
  251. data/lib/dapp/config/error/config.rb +0 -7
  252. data/lib/dapp/dimg/build/stage/ga_archive_dependencies.rb +0 -27
  253. data/lib/dapp/dimg/build/stage/ga_dependencies_base.rb +0 -20
  254. data/lib/dapp/dimg/build/stage/install/ga_post_install_patch_dependencies.rb +0 -22
  255. data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch_dependencies.rb +0 -22
  256. data/lib/dapp/dimg/build/stage/mod/git_artifact_dependencies.rb +0 -23
  257. data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch_dependencies.rb +0 -32
  258. data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch_dependencies.rb +0 -22
  259. data/lib/dapp/dimg/cli/base.rb +0 -16
  260. data/lib/dapp/dimg/cli/bp.rb +0 -37
  261. data/lib/dapp/dimg/cli/build.rb +0 -64
  262. data/lib/dapp/dimg/cli/dimg.rb +0 -30
  263. data/lib/dapp/dimg/cli/push.rb +0 -61
  264. data/lib/dapp/dimg/cli/stages/flush_local.rb +0 -23
  265. data/lib/dapp/dimg/cli/stages/flush_repo.rb +0 -24
  266. data/lib/dapp/dimg/cli/stages/pull.rb +0 -28
  267. data/lib/dapp/dimg/cli/stages/push.rb +0 -24
  268. data/lib/dapp/dimg/cli/stages.rb +0 -22
  269. data/lib/dapp/dimg/cli/tag.rb +0 -24
  270. data/lib/dapp/dimg/config/artifact_dimg.rb +0 -17
  271. data/lib/dapp/dimg/config/artifact_group.rb +0 -43
  272. data/lib/dapp/dimg/config/base.rb +0 -7
  273. data/lib/dapp/dimg/config/dimg/instance_methods.rb +0 -179
  274. data/lib/dapp/dimg/config/dimg/validation.rb +0 -126
  275. data/lib/dapp/dimg/config/dimg.rb +0 -24
  276. data/lib/dapp/dimg/config/dimg_group.rb +0 -61
  277. data/lib/dapp/dimg/config/dimg_group_base.rb +0 -54
  278. data/lib/dapp/dimg/config/dimg_group_main.rb +0 -22
  279. data/lib/dapp/dimg/dapp/command.rb +0 -21
  280. data/lib/dapp/dimg/dimg/tags.rb +0 -65
  281. data/lib/dapp/dimg/docker_registry/base/authorization.rb +0 -63
  282. data/lib/dapp/dimg/docker_registry/base/request.rb +0 -34
  283. data/lib/dapp/dimg/docker_registry/default.rb +0 -18
  284. data/lib/dapp/dimg/error/base.rb +0 -7
  285. data/lib/dapp/dimg/error/config.rb +0 -7
  286. data/lib/dapp/dimg/exception/introspect_image.rb +0 -7
  287. data/lib/dapp/dimg/image/docker.rb +0 -134
@@ -6,10 +6,33 @@ module Dapp
6
6
  class GAPostSetupPatch < GABase
7
7
  include Mod::Group
8
8
 
9
+ MAX_PATCH_SIZE = 1024 * 1024
10
+
9
11
  def initialize(dimg, next_stage)
10
- @prev_stage = GAPostSetupPatchDependencies.new(dimg, self)
12
+ @prev_stage = Setup.new(dimg, self)
11
13
  super
12
14
  end
15
+
16
+ def renew
17
+ dependencies_discard
18
+ super
19
+ end
20
+
21
+ def dependencies
22
+ @dependencies ||= [(changes_size_since_g_a_pre_setup_patch / MAX_PATCH_SIZE).to_i]
23
+ end
24
+
25
+ private
26
+
27
+ def changes_size_since_g_a_pre_setup_patch
28
+ dimg.git_artifacts.map do |git_artifact|
29
+ if git_artifact.repo.commit_exists? prev_stage.layer_commit(git_artifact)
30
+ git_artifact.patch_size(prev_stage.layer_commit(git_artifact))
31
+ else
32
+ 0
33
+ end
34
+ end.reduce(0, :+)
35
+ end
13
36
  end # GAPostSetupPatch
14
37
  end
15
38
  end # Stage
@@ -3,13 +3,17 @@ module Dapp
3
3
  module Build
4
4
  module Stage
5
5
  module Setup
6
- class GAPreSetupPatch < GABase
6
+ class GAPreSetupPatch < GARelatedBase
7
7
  include Mod::Group
8
8
 
9
9
  def initialize(dimg, next_stage)
10
- @prev_stage = GAPreSetupPatchDependencies.new(dimg, self)
10
+ @prev_stage = BeforeSetupArtifact.new(dimg, self)
11
11
  super
12
12
  end
13
+
14
+ def related_stage_name
15
+ :setup
16
+ end
13
17
  end # GAPrePatch
14
18
  end
15
19
  end # Stage
@@ -3,31 +3,13 @@ module Dapp
3
3
  module Build
4
4
  module Stage
5
5
  module Setup
6
- class Setup < Base
6
+ class Setup < Instructions
7
7
  include Mod::Group
8
- include Mod::GitArtifactsDependencies
9
8
 
10
9
  def initialize(dimg, next_stage)
11
10
  @prev_stage = GAPreSetupPatch.new(dimg, self)
12
11
  super
13
12
  end
14
-
15
- def empty?
16
- !dimg.builder.setup?
17
- end
18
-
19
- def context
20
- [git_artifacts_dependencies, builder_checksum]
21
- end
22
-
23
- def builder_checksum
24
- dimg.builder.setup_checksum
25
- end
26
-
27
- def prepare_image
28
- super
29
- dimg.builder.setup(image)
30
- end
31
13
  end # Setup
32
14
  end # Setup
33
15
  end # Stage
@@ -0,0 +1,5 @@
1
+ module Dapp
2
+ module Dimg
3
+ class Builder::Ansible < Builder::Ruby2Go; end
4
+ end # Dimg
5
+ end # Dapp
@@ -66,7 +66,7 @@ module Dapp
66
66
  end
67
67
 
68
68
  def vendor_path
69
- builder.dimg.dapp.lock(_vendor_lock_name, default_timeout: 120) do
69
+ builder.dimg.dapp.lock(_vendor_lock_name, default_timeout: 600) do
70
70
  vendor! unless _vendor_path.join('.created_at').exist?
71
71
  end
72
72
  _vendor_path
@@ -74,11 +74,9 @@ module Dapp
74
74
 
75
75
  # rubocop:disable Metrics/AbcSize
76
76
  def vendor!
77
- volumes_from = [builder.dimg.dapp.base_container, builder.chefdk_container]
77
+ volumes_from = [builder.dimg.dapp.toolchain_container, builder.dimg.dapp.base_container, builder.chefdk_container]
78
78
 
79
79
  builder.dimg.dapp.log_secondary_process(builder.dimg.dapp.t(code: _vendor_process_name)) do
80
- volumes_from = [builder.dimg.dapp.base_container, builder.chefdk_container]
81
-
82
80
  tmp_berksfile_path = builder.dimg.tmp_path.join("Berksfile.#{SecureRandom.uuid}")
83
81
  File.open(tmp_berksfile_path, 'w') {|file| file.write berksfile.dump}
84
82
 
@@ -89,11 +87,11 @@ module Dapp
89
87
  "#{builder.dimg.dapp.mkdir_bin} -p ~/.ssh",
90
88
  'echo "Host *" >> ~/.ssh/config',
91
89
  'echo " StrictHostKeyChecking no" >> ~/.ssh/config',
92
- *local_paths.map {|path| "#{builder.dimg.dapp.rsync_bin} --archive --relative #{path} /tmp/local_cookbooks"},
90
+ *local_paths.map {|path| "#{builder.dimg.dapp.rsync_bin} --inplace --archive --relative #{path} /tmp/local_cookbooks"},
93
91
  "cd /tmp/local_cookbooks/#{path}",
94
92
  "cp #{tmp_berksfile_path} Berksfile",
95
93
  "cp #{tmp_metadata_path} metadata.rb",
96
- '/.dapp/deps/chefdk/bin/berks vendor /tmp/cookbooks',
94
+ "#{builder.berks_bin} vendor /tmp/cookbooks",
97
95
  ["#{builder.dimg.dapp.find_bin} /tmp/cookbooks -type d -exec #{builder.dimg.dapp.bash_bin} -ec '",
98
96
  "#{builder.dimg.dapp.install_bin} -o #{Process.uid} -g #{Process.gid} ",
99
97
  "--mode $(#{builder.dimg.dapp.stat_bin} -c %a {}) -d ",
@@ -107,7 +105,7 @@ module Dapp
107
105
  ]
108
106
 
109
107
  builder.dimg.dapp.shellout!(
110
- [ 'docker run --rm',
108
+ [ "#{builder.dimg.dapp.host_docker} run --rm",
111
109
  volumes_from.map {|container| "--volumes-from #{container}"}.join(' '),
112
110
  *local_paths.map {|path| "--volume #{path}:#{path}"},
113
111
  "--volume #{builder.dimg.tmp_path}:#{builder.dimg.tmp_path}",
@@ -118,7 +116,7 @@ module Dapp
118
116
  cmd << "dappdeps/berksdeps:0.1.0 #{builder.dimg.dapp.bash_bin}"
119
117
  cmd << " -ec '#{builder.dimg.dapp.shellout_pack(vendor_commands.join(' && '))}'"
120
118
  end ].compact.join(' '),
121
- log_verbose: builder.dimg.dapp.log_verbose?
119
+ verbose: true
122
120
  )
123
121
  end
124
122
  end
@@ -187,6 +185,8 @@ module Dapp
187
185
  Dir[from_path.join('**/*')]
188
186
  .map(&Pathname.method(:new))
189
187
  .each do |from_subpath|
188
+ next if from_subpath.directory?
189
+
190
190
  to_subpath = to_path.join(from_subpath.relative_path_from(from_path))
191
191
  if to_subpath.exist?
192
192
  raise(Error::Chef,
@@ -1,7 +1,15 @@
1
1
  module Dapp
2
2
  module Dimg
3
3
  class Builder::Chef < Builder::Base
4
- DEFAULT_CHEFDK_IMAGE = 'dappdeps/chefdk:1.2.22-1'.freeze # TODO: config, DSL, DEFAULT_CHEFDK_IMAGE
4
+ CHEFDK_VERSION = "2.3.17-2"
5
+
6
+ def chef_solo_bin
7
+ "/.dapp/deps/chefdk/#{CHEFDK_VERSION}/bin/chef-solo"
8
+ end
9
+
10
+ def berks_bin
11
+ "/.dapp/deps/chefdk/#{CHEFDK_VERSION}/bin/berks"
12
+ end
5
13
 
6
14
  %i(before_install install before_setup setup build_artifact).each do |stage|
7
15
  define_method("#{stage}?") {!stage_empty?(stage)}
@@ -16,7 +24,7 @@ module Dapp
16
24
  unless stage_empty?(stage)
17
25
  image.add_volumes_from(chefdk_container)
18
26
  image.add_volume "#{stage_build_path(stage)}:#{container_stage_build_path(stage)}:ro"
19
- image.add_command ['/.dapp/deps/chefdk/bin/chef-solo',
27
+ image.add_command [chef_solo_bin,
20
28
  '--legacy-mode',
21
29
  "--config #{container_stage_config_path(stage)}",
22
30
  "--json-attributes #{container_stage_json_attributes_path(stage)}",
@@ -45,25 +53,29 @@ module Dapp
45
53
  end
46
54
 
47
55
  def chefdk_image
48
- DEFAULT_CHEFDK_IMAGE # TODO: config, DSL, DEFAULT_CHEFDK_IMAGE
56
+ "dappdeps/chefdk:#{CHEFDK_VERSION}" # TODO: config, DSL, DEFAULT_CHEFDK_IMAGE
49
57
  end
50
58
 
51
59
  def chefdk_container_name # FIXME: hashsum(image) or dockersafe()
52
- chefdk_image.tr('/', '_').tr(':', '_')
60
+ "dappdeps_chefdk_#{CHEFDK_VERSION}"
53
61
  end
54
62
 
55
63
  def chefdk_container
56
64
  @chefdk_container ||= begin
57
- if dimg.dapp.shellout("docker inspect #{chefdk_container_name}").exitstatus.nonzero?
58
- dimg.dapp.log_secondary_process(dimg.dapp.t(code: 'process.chefdk_container_creating'), short: true) do
59
- dimg.dapp.shellout!(
60
- ['docker create',
61
- "--name #{chefdk_container_name}",
62
- "--volume /.dapp/deps/chefdk #{chefdk_image}"].join(' ')
63
- )
65
+ is_container_exist = proc{dimg.dapp.shellout("#{dimg.dapp.host_docker} inspect #{chefdk_container_name}").exitstatus.zero?}
66
+ if !is_container_exist.call
67
+ dimg.dapp.lock("dappdeps.container.#{chefdk_container_name}", default_timeout: 600) do
68
+ if !is_container_exist.call
69
+ dimg.dapp.log_secondary_process(dimg.dapp.t(code: 'process.chefdk_container_creating', data: {name: chefdk_container_name}), short: true) do
70
+ dimg.dapp.shellout!(
71
+ ["#{dimg.dapp.host_docker} create",
72
+ "--name #{chefdk_container_name}",
73
+ "--volume /.dapp/deps/chefdk/#{CHEFDK_VERSION} #{chefdk_image}"].join(' ')
74
+ )
75
+ end
76
+ end
64
77
  end
65
78
  end
66
-
67
79
  chefdk_container_name
68
80
  end
69
81
  end
@@ -115,7 +127,7 @@ module Dapp
115
127
  end
116
128
 
117
129
  def stage_cookbooks_checksum_path(stage)
118
- dimg.build_path.join("#{builder_cookbook.checksum}.#{dimg.config._name}.#{stage}.checksum")
130
+ dimg.build_path.join("#{builder_cookbook.checksum}.#{dimg.name}.#{stage}.checksum")
119
131
  end
120
132
 
121
133
  def stage_cookbooks_checksum(stage)
@@ -180,8 +192,9 @@ module Dapp
180
192
  @install_chef_solo_stage_config[stage] ||= true.tap do
181
193
  stage_build_path(stage).join('config.rb').write [
182
194
  "file_cache_path \"/.dapp/chef/cache\"\n",
183
- "cookbook_path \"#{container_stage_build_path(stage).join('cookbooks')}\"\n"
184
- ].join
195
+ "cookbook_path \"#{container_stage_build_path(stage).join('cookbooks')}\"\n",
196
+ ("log_level :debug\n" if ENV["DAPP_CHEF_DEBUG"]),
197
+ ].compact.join
185
198
  end
186
199
  end
187
200
 
@@ -203,7 +216,7 @@ module Dapp
203
216
  end
204
217
 
205
218
  def stage_build_path(stage)
206
- dimg.tmp_path(dimg.config._name).join(stage.to_s)
219
+ dimg.tmp_path(dimg.name).join(stage.to_s)
207
220
  end
208
221
 
209
222
  def container_stage_build_path(_stage)
@@ -1,38 +1,5 @@
1
1
  module Dapp
2
2
  module Dimg
3
- class Builder::None < Builder::Base
4
- def before_dimg_should_be_built_check
5
- end
6
-
7
- def before_install(_image)
8
- end
9
-
10
- def before_install_checksum
11
- end
12
-
13
- def before_setup(_image)
14
- end
15
-
16
- def before_setup_checksum
17
- end
18
-
19
- def install(_image)
20
- end
21
-
22
- def install_checksum
23
- end
24
-
25
- def setup(_image)
26
- end
27
-
28
- def setup_checksum
29
- end
30
-
31
- def build_artifact(_image)
32
- end
33
-
34
- def build_artifact_checksum
35
- end
36
- end # Builder::None
3
+ class Builder::None < Builder::Ruby2Go; end
37
4
  end # Dimg
38
5
  end # Dapp
@@ -0,0 +1,57 @@
1
+ module Dapp
2
+ module Dimg
3
+ class Builder::Ruby2Go < Builder::Base
4
+ [:before_install, :before_setup, :install, :setup, :build_artifact].each do |stage|
5
+ define_method("#{stage}_checksum") do
6
+ command = "#{snake_case_to_camel_case(stage)}Checksum"
7
+ ruby2go_builder_command(command: command)
8
+ end
9
+
10
+ define_method("#{stage}?") do
11
+ command = "Is#{snake_case_to_camel_case(stage)}Empty"
12
+ !ruby2go_builder_command(command: command)
13
+ end
14
+
15
+ define_method(stage.to_s) do |image|
16
+ command = snake_case_to_camel_case(stage)
17
+ ruby2go_builder_command(command: command, image: image.ruby2go_image_option).tap do |data|
18
+ image.set_ruby2go_state_hash(JSON.load(data["image"]))
19
+ end
20
+ end
21
+ end
22
+
23
+ def ruby2go_builder_command(command:, **options)
24
+ (options[:options] ||= {}).merge!(host_docker_config_dir: dimg.dapp.class.host_docker_config_dir)
25
+ builder = self.class.name.split("::").last.downcase
26
+ command_options = {
27
+ builder: builder,
28
+ command: command,
29
+ config: YAML.dump(dimg.config),
30
+ extra: get_ruby2go_state_hash,
31
+ artifact: dimg.artifact?
32
+ }.merge(options)
33
+
34
+ dimg.dapp.ruby2go_builder(command_options).tap do |res|
35
+ raise Error::Build, code: :ruby2go_builder_command_failed_unexpected_error, data: { command: command, message: res["error"] } unless res["error"].nil?
36
+ break res['data']
37
+ end
38
+ end
39
+
40
+ def get_ruby2go_state_hash
41
+ {
42
+ "TmpPath" => dimg.tmp_path.to_s,
43
+ "ContainerDappPath" => dimg.container_dapp_path.to_s,
44
+ }
45
+ end
46
+
47
+ def snake_case_to_camel_case(value)
48
+ ::Dapp::Helper::CaseConversion.snake_case_to_camel_case(value)
49
+ end
50
+
51
+ def snake_case_to_lower_camel_case(value)
52
+ ::Dapp::Helper::CaseConversion.snake_case_to_lower_camel_case(value)
53
+ end
54
+
55
+ end # Builder::Shell
56
+ end # Dimg
57
+ end # Dapp
@@ -1,24 +1,5 @@
1
1
  module Dapp
2
2
  module Dimg
3
- class Builder::Shell < Builder::Base
4
- [:before_install, :before_setup, :install, :setup, :build_artifact].each do |stage|
5
- define_method("#{stage}_checksum") do
6
- [dimg.config._shell.public_send("_#{stage}_command"),
7
- dimg.config._shell.public_send("_#{stage}_version")].flatten
8
- end
9
- define_method("#{stage}?") { !stage_empty?(stage) }
10
- define_method(stage.to_s) do |image|
11
- image.add_command(*stage_commands(stage)) unless stage_empty?(stage)
12
- end
13
- end
14
-
15
- def stage_empty?(stage)
16
- stage_commands(stage).empty?
17
- end
18
-
19
- def stage_commands(stage)
20
- dimg.config._shell.public_send("_#{stage}_command")
21
- end
22
- end # Builder::Shell
3
+ class Builder::Shell < Builder::Ruby2Go; end
23
4
  end # Dimg
24
5
  end # Dapp
@@ -1 +1,2 @@
1
- ::Dapp::CLI.send(:include, ::Dapp::Dimg::CLI)
1
+ ::Dapp::CLI.send(:include, ::Dapp::Dimg::CLI::Command)
2
+ ::Dapp::CLI.send(:include, ::Dapp::Dimg::CLI::Options)
@@ -0,0 +1,24 @@
1
+ module Dapp::Dimg::CLI
2
+ module Command
3
+ class Base < ::Dapp::CLI::Command::Base
4
+ DIMG_STAGES = [
5
+ :from, :before_install, :before_install_artifact, :g_a_archive, :g_a_pre_install_patch, :install,
6
+ :g_a_post_install_patch, :after_install_artifact, :before_setup, :before_setup_artifact,
7
+ :g_a_pre_setup_patch, :setup, :g_a_post_setup_patch, :after_setup_artifact, :g_a_latest_patch, :docker_instructions
8
+ ].freeze
9
+
10
+ STAGE_PROC = proc do |stages|
11
+ proc { |val| val.to_sym.tap { |v| in_validate!(v, stages) } }
12
+ end
13
+
14
+ option :build_dir,
15
+ long: "--build-dir PATH",
16
+ description: "Directory where build cache stored ($HOME/.dapp/builds/<dapp name> by default)."
17
+
18
+ def run(argv = ARGV)
19
+ self.class.parse_options(self, argv)
20
+ run_dapp_command(run_method, options: cli_options(dimgs_patterns: cli_arguments))
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,60 @@
1
+ module Dapp::Dimg::CLI
2
+ module Command
3
+ class Dimg < ::Dapp::CLI
4
+ class Bp < Push
5
+ banner <<BANNER.freeze
6
+ Usage:
7
+
8
+ dapp dimg bp [options] [DIMG ...] REPO
9
+
10
+ DIMG Dapp image to process [default: *].
11
+ REPO Pushed image name.
12
+
13
+ Options:
14
+ BANNER
15
+
16
+ # build options
17
+
18
+ extend ::Dapp::Dimg::CLI::Options::Introspection
19
+ extend ::Dapp::CLI::Options::Ssh
20
+
21
+ option :tmp_dir_prefix,
22
+ long: '--tmp-dir-prefix PREFIX',
23
+ description: 'Tmp directory prefix (/tmp by default). Used for build process service directories.'
24
+
25
+ option :lock_timeout,
26
+ long: '--lock-timeout TIMEOUT',
27
+ description: 'Redefine resource locking timeout (in seconds)',
28
+ proc: ->(v) { v.to_i }
29
+
30
+ option :build_context_directory,
31
+ long: '--build-context-directory DIR_PATH',
32
+ default: nil
33
+
34
+ option :use_system_tar,
35
+ long: '--use-system-tar',
36
+ boolean: true,
37
+ default: false
38
+
39
+ option :force_save_cache,
40
+ long: '--force-save-cache',
41
+ boolean: true,
42
+ default: false
43
+
44
+ # push options
45
+
46
+ extend ::Dapp::CLI::Options::Tag
47
+
48
+ option :with_stages,
49
+ long: '--with-stages',
50
+ boolean: true
51
+
52
+ option :registry_username,
53
+ long: '--registry-username USERNAME'
54
+
55
+ option :registry_password,
56
+ long: '--registry-password PASSWORD'
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,43 @@
1
+ module Dapp::Dimg::CLI
2
+ module Command
3
+ class Dimg < ::Dapp::CLI
4
+ class Build < Base
5
+ banner <<BANNER.freeze
6
+ Usage:
7
+
8
+ dapp dimg build [options] [DIMG ...]
9
+
10
+ DIMG Dapp image to process [default: *].
11
+
12
+ Options:
13
+ BANNER
14
+
15
+ extend ::Dapp::Dimg::CLI::Options::Introspection
16
+ extend ::Dapp::CLI::Options::Ssh
17
+
18
+ option :tmp_dir_prefix,
19
+ long: '--tmp-dir-prefix PREFIX',
20
+ description: 'Tmp directory prefix (/tmp by default). Used for build process service directories.'
21
+
22
+ option :lock_timeout,
23
+ long: '--lock-timeout TIMEOUT',
24
+ description: 'Redefine resource locking timeout (in seconds)',
25
+ proc: ->(v) { v.to_i }
26
+
27
+ option :build_context_directory,
28
+ long: '--build-context-directory DIR_PATH',
29
+ default: nil
30
+
31
+ option :use_system_tar,
32
+ long: '--use-system-tar',
33
+ boolean: true,
34
+ default: false
35
+
36
+ option :force_save_cache,
37
+ long: '--force-save-cache',
38
+ boolean: true,
39
+ default: false
40
+ end
41
+ end
42
+ end
43
+ end
@@ -1,7 +1,7 @@
1
- module Dapp
2
- module Dimg
3
- module CLI
4
- class BuildContext
1
+ module Dapp::Dimg::CLI
2
+ module Command
3
+ class Dimg < ::Dapp::CLI
4
+ class BuildContext < ::Dapp::CLI
5
5
  class Export < Base
6
6
  banner <<BANNER.freeze
7
7
  Usage:
@@ -16,6 +16,11 @@ BANNER
16
16
  long: '--build-context-directory DIR_PATH',
17
17
  description: 'Path to the directory with context'
18
18
 
19
+ option :use_system_tar,
20
+ long: '--use-system-tar',
21
+ boolean: true,
22
+ default: false
23
+
19
24
  def run_method
20
25
  :"build_context_#{class_to_lowercase}"
21
26
  end
@@ -1,7 +1,7 @@
1
- module Dapp
2
- module Dimg
3
- module CLI
4
- class BuildContext
1
+ module Dapp::Dimg::CLI
2
+ module Command
3
+ class Dimg < ::Dapp::CLI
4
+ class BuildContext < ::Dapp::CLI
5
5
  class Import < Export
6
6
  banner <<BANNER.freeze
7
7
  Usage:
@@ -1,14 +1,14 @@
1
- module Dapp
2
- module Dimg
3
- module CLI
1
+ module Dapp::Dimg::CLI
2
+ module Command
3
+ class Dimg < ::Dapp::CLI
4
4
  class BuildContext < ::Dapp::CLI
5
5
  SUBCOMMANDS = %w(import export).freeze
6
6
 
7
7
  banner <<BANNER.freeze
8
8
  Available subcommands: (for details, dapp dimg build-context SUB-COMMAND --help)
9
9
 
10
- dapp dimg build-context export [options] [DIMG ...]
11
- dapp dimg build-context import [options]
10
+ dapp dimg build-context export [options] [DIMG ...]
11
+ dapp dimg build-context import [options]
12
12
 
13
13
  Options:
14
14
  BANNER
@@ -1,13 +1,11 @@
1
- module Dapp
2
- module Dimg
3
- module CLI
1
+ module Dapp::Dimg::CLI
2
+ module Command
3
+ class Dimg < ::Dapp::CLI
4
4
  class Cleanup < Base
5
5
  banner <<BANNER.freeze
6
6
  Usage:
7
7
 
8
- dapp dimg cleanup [options] [DIMG ...]
9
-
10
- DIMG Dapp image to process [default: *].
8
+ dapp dimg cleanup [options]
11
9
 
12
10
  Options:
13
11
  BANNER
@@ -0,0 +1,47 @@
1
+ module Dapp::Dimg::CLI
2
+ module Command
3
+ class Dimg < ::Dapp::CLI
4
+ class CleanupRepo < Base
5
+ banner <<BANNER.freeze
6
+ Usage:
7
+
8
+ dapp dimg cleanup repo [options] [DIMG ...] REPO
9
+
10
+ Options:
11
+ BANNER
12
+
13
+ option :lock_timeout,
14
+ long: '--lock-timeout TIMEOUT',
15
+ description: 'Redefine resource locking timeout (in seconds)',
16
+ proc: ->(v) { v.to_i }
17
+
18
+ option :kubernetes_timeout,
19
+ long: '--kubernetes-timeout TIMEOUT',
20
+ description: 'Kubernetes api-server tcp connection, read and write timeout (in seconds)',
21
+ proc: ->(v) { v.to_i }
22
+
23
+ option :with_stages,
24
+ long: '--with-stages',
25
+ boolean: true
26
+
27
+ option :without_kube,
28
+ long: '--without-kube',
29
+ boolean: true
30
+
31
+ option :registry_username,
32
+ long: '--registry-username USERNAME',
33
+ default: (ENV.key?("DAPP_DIMG_CLEANUP_REGISTRY_PASSWORD") ? "dapp-cleanup-repo" : nil) # FIXME: https://gitlab.com/gitlab-org/gitlab-ce/issues/41384
34
+
35
+ option :registry_password,
36
+ long: '--registry-password PASSWORD',
37
+ default: ENV["DAPP_DIMG_CLEANUP_REGISTRY_PASSWORD"] # FIXME: https://gitlab.com/gitlab-org/gitlab-ce/issues/41384
38
+
39
+ def run(argv = ARGV)
40
+ self.class.parse_options(self, argv)
41
+ repo = self.class.required_argument(self, 'repo')
42
+ run_dapp_command(run_method, options: cli_options(dimgs_patterns: cli_arguments, repo: repo, verbose: true))
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,24 @@
1
+ module Dapp::Dimg::CLI
2
+ module Command
3
+ class Dimg < ::Dapp::CLI
4
+ class FlushLocal < Base
5
+ banner <<BANNER.freeze
6
+ Usage:
7
+
8
+ dapp dimg flush local [options] [DIMG ...]
9
+
10
+ Options:
11
+ BANNER
12
+
13
+ option :with_stages,
14
+ long: '--with-stages',
15
+ boolean: true
16
+
17
+ def run(argv = ARGV)
18
+ self.class.parse_options(self, argv)
19
+ run_dapp_command(run_method, options: cli_options(dimgs_patterns: cli_arguments, verbose: true))
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end