dapp 0.8.0 → 0.9.0

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 (299) hide show
  1. checksums.yaml +4 -4
  2. data/bin/dapp +5 -5
  3. data/config/en/common.yml +6 -4
  4. data/config/en/net_status.yml +8 -7
  5. data/lib/dapp.rb +157 -139
  6. data/lib/dapp/cli.rb +6 -16
  7. data/lib/dapp/cli/base.rb +3 -5
  8. data/lib/dapp/config/base.rb +19 -7
  9. data/lib/dapp/config/directive/base.rb +0 -1
  10. data/lib/dapp/config/error/config.rb +7 -0
  11. data/lib/dapp/core_ext/hash.rb +0 -2
  12. data/lib/dapp/core_ext/pathname.rb +1 -3
  13. data/lib/dapp/{project.rb → dapp.rb} +2 -21
  14. data/lib/dapp/{project → dapp}/chef.rb +2 -4
  15. data/lib/dapp/{project → dapp}/dappfile.rb +5 -7
  16. data/lib/dapp/{project → dapp}/deps/base.rb +3 -6
  17. data/lib/dapp/{project → dapp}/deps/gitartifact.rb +2 -5
  18. data/lib/dapp/{project → dapp}/git_artifact.rb +2 -4
  19. data/lib/dapp/{project → dapp}/lock.rb +3 -5
  20. data/lib/dapp/{project → dapp}/logging/base.rb +2 -5
  21. data/lib/dapp/{project → dapp}/logging/i18n.rb +2 -3
  22. data/lib/dapp/{project → dapp}/logging/paint.rb +2 -4
  23. data/lib/dapp/{project → dapp}/logging/process.rb +2 -5
  24. data/lib/dapp/{project → dapp}/shellout/base.rb +2 -4
  25. data/lib/dapp/{project → dapp}/shellout/streaming.rb +3 -8
  26. data/lib/dapp/{project → dapp}/ssh_agent.rb +6 -9
  27. data/lib/dapp/dimg.rb +1 -192
  28. data/lib/dapp/dimg/artifact.rb +24 -0
  29. data/lib/dapp/dimg/build/stage/after_install_artifact.rb +14 -0
  30. data/lib/dapp/dimg/build/stage/after_setup_artifact.rb +18 -0
  31. data/lib/dapp/dimg/build/stage/artifact_base.rb +80 -0
  32. data/lib/dapp/dimg/build/stage/artifact_default.rb +63 -0
  33. data/lib/dapp/dimg/build/stage/base.rb +210 -0
  34. data/lib/dapp/dimg/build/stage/before_install.rb +33 -0
  35. data/lib/dapp/dimg/build/stage/before_install_artifact.rb +14 -0
  36. data/lib/dapp/dimg/build/stage/before_setup.rb +31 -0
  37. data/lib/dapp/dimg/build/stage/before_setup_artifact.rb +14 -0
  38. data/lib/dapp/dimg/build/stage/build_artifact.rb +31 -0
  39. data/lib/dapp/dimg/build/stage/docker_instructions.rb +25 -0
  40. data/lib/dapp/dimg/build/stage/from.rb +50 -0
  41. data/lib/dapp/dimg/build/stage/ga_archive.rb +28 -0
  42. data/lib/dapp/dimg/build/stage/ga_archive_dependencies.rb +27 -0
  43. data/lib/dapp/dimg/build/stage/ga_artifact_patch.rb +22 -0
  44. data/lib/dapp/dimg/build/stage/ga_base.rb +80 -0
  45. data/lib/dapp/dimg/build/stage/ga_dependencies_base.rb +20 -0
  46. data/lib/dapp/dimg/build/stage/ga_latest_patch.rb +54 -0
  47. data/lib/dapp/dimg/build/stage/import_artifact.rb +64 -0
  48. data/lib/dapp/dimg/build/stage/install/ga_post_install_patch.rb +22 -0
  49. data/lib/dapp/dimg/build/stage/install/ga_post_install_patch_dependencies.rb +22 -0
  50. data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch.rb +22 -0
  51. data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch_dependencies.rb +22 -0
  52. data/lib/dapp/dimg/build/stage/install/install.rb +35 -0
  53. data/lib/dapp/dimg/build/stage/mod/group.rb +42 -0
  54. data/lib/dapp/dimg/build/stage/mod/logging.rb +101 -0
  55. data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch.rb +22 -0
  56. data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch_dependencies.rb +32 -0
  57. data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch.rb +22 -0
  58. data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch_dependencies.rb +22 -0
  59. data/lib/dapp/dimg/build/stage/setup/setup.rb +35 -0
  60. data/lib/dapp/dimg/builder.rb +6 -0
  61. data/lib/dapp/{builder → dimg/builder}/base.rb +4 -5
  62. data/lib/dapp/{builder → dimg/builder}/chef.rb +41 -33
  63. data/lib/dapp/dimg/builder/chef/berksfile.rb +121 -0
  64. data/lib/dapp/dimg/builder/chef/cookbook.rb +285 -0
  65. data/lib/dapp/dimg/builder/chef/cookbook_metadata.rb +106 -0
  66. data/lib/dapp/{builder → dimg/builder}/none.rb +4 -5
  67. data/lib/dapp/{builder → dimg/builder}/shell.rb +5 -6
  68. data/lib/dapp/dimg/cli/base.rb +16 -0
  69. data/lib/dapp/dimg/cli/bp.rb +37 -0
  70. data/lib/dapp/dimg/cli/build.rb +64 -0
  71. data/lib/dapp/dimg/cli/build_context.rb +18 -0
  72. data/lib/dapp/dimg/cli/build_context/export.rb +26 -0
  73. data/lib/dapp/dimg/cli/build_context/import.rb +17 -0
  74. data/lib/dapp/dimg/cli/cleanup.rb +22 -0
  75. data/lib/dapp/dimg/cli/cli.rb +1 -0
  76. data/lib/dapp/dimg/cli/dimg.rb +30 -0
  77. data/lib/dapp/dimg/cli/list.rb +17 -0
  78. data/lib/dapp/dimg/cli/mrproper.rb +26 -0
  79. data/lib/dapp/dimg/cli/push.rb +61 -0
  80. data/lib/dapp/dimg/cli/run.rb +59 -0
  81. data/lib/dapp/{cli → dimg/cli}/spush.rb +7 -7
  82. data/lib/dapp/dimg/cli/stage_image.rb +24 -0
  83. data/lib/dapp/dimg/cli/stages.rb +22 -0
  84. data/lib/dapp/dimg/cli/stages/cleanup_local.rb +44 -0
  85. data/lib/dapp/dimg/cli/stages/cleanup_repo.rb +26 -0
  86. data/lib/dapp/dimg/cli/stages/flush_local.rb +23 -0
  87. data/lib/dapp/dimg/cli/stages/flush_repo.rb +24 -0
  88. data/lib/dapp/dimg/cli/stages/pull.rb +28 -0
  89. data/lib/dapp/dimg/cli/stages/push.rb +24 -0
  90. data/lib/dapp/dimg/cli/tag.rb +24 -0
  91. data/lib/dapp/dimg/config/artifact_dimg.rb +17 -0
  92. data/lib/dapp/dimg/config/artifact_group.rb +47 -0
  93. data/lib/dapp/dimg/config/base.rb +7 -0
  94. data/lib/dapp/dimg/config/dimg.rb +24 -0
  95. data/lib/dapp/dimg/config/dimg/instance_methods.rb +177 -0
  96. data/lib/dapp/dimg/config/dimg/validation.rb +126 -0
  97. data/lib/dapp/dimg/config/dimg_group.rb +61 -0
  98. data/lib/dapp/dimg/config/dimg_group_base.rb +54 -0
  99. data/lib/dapp/dimg/config/dimg_group_main.rb +22 -0
  100. data/lib/dapp/dimg/config/directive/artifact.rb +70 -0
  101. data/lib/dapp/dimg/config/directive/artifact_base.rb +97 -0
  102. data/lib/dapp/dimg/config/directive/base.rb +9 -0
  103. data/lib/dapp/dimg/config/directive/chef.rb +68 -0
  104. data/lib/dapp/dimg/config/directive/docker/artifact.rb +15 -0
  105. data/lib/dapp/dimg/config/directive/docker/base.rb +22 -0
  106. data/lib/dapp/dimg/config/directive/docker/dimg.rb +82 -0
  107. data/lib/dapp/dimg/config/directive/git_artifact_local.rb +47 -0
  108. data/lib/dapp/dimg/config/directive/git_artifact_remote.rb +58 -0
  109. data/lib/dapp/dimg/config/directive/mount.rb +27 -0
  110. data/lib/dapp/dimg/config/directive/shell/artifact.rb +18 -0
  111. data/lib/dapp/dimg/config/directive/shell/dimg.rb +65 -0
  112. data/lib/dapp/dimg/dapp/command.rb +21 -0
  113. data/lib/dapp/dimg/dapp/command/bp.rb +20 -0
  114. data/lib/dapp/dimg/dapp/command/build.rb +22 -0
  115. data/lib/dapp/dimg/dapp/command/build_context/common.rb +27 -0
  116. data/lib/dapp/dimg/dapp/command/build_context/export.rb +55 -0
  117. data/lib/dapp/dimg/dapp/command/build_context/import.rb +71 -0
  118. data/lib/dapp/dimg/dapp/command/cleanup.rb +23 -0
  119. data/lib/dapp/dimg/dapp/command/common.rb +96 -0
  120. data/lib/dapp/dimg/dapp/command/list.rb +19 -0
  121. data/lib/dapp/dimg/dapp/command/mrproper.rb +75 -0
  122. data/lib/dapp/dimg/dapp/command/push.rb +27 -0
  123. data/lib/dapp/dimg/dapp/command/run.rb +15 -0
  124. data/lib/dapp/dimg/dapp/command/spush.rb +17 -0
  125. data/lib/dapp/dimg/dapp/command/stage_image.rb +14 -0
  126. data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +137 -0
  127. data/lib/dapp/dimg/dapp/command/stages/cleanup_repo.rb +124 -0
  128. data/lib/dapp/dimg/dapp/command/stages/common.rb +85 -0
  129. data/lib/dapp/dimg/dapp/command/stages/flush_local.rb +21 -0
  130. data/lib/dapp/dimg/dapp/command/stages/flush_repo.rb +21 -0
  131. data/lib/dapp/dimg/dapp/command/stages/pull.rb +26 -0
  132. data/lib/dapp/dimg/dapp/command/stages/push.rb +22 -0
  133. data/lib/dapp/dimg/dapp/command/tag.rb +17 -0
  134. data/lib/dapp/dimg/dimg.rb +192 -0
  135. data/lib/dapp/dimg/dimg/git_artifact.rb +26 -0
  136. data/lib/dapp/dimg/dimg/path.rb +37 -0
  137. data/lib/dapp/dimg/dimg/stages.rb +60 -0
  138. data/lib/dapp/dimg/dimg/tags.rb +65 -0
  139. data/lib/dapp/dimg/docker_registry.rb +37 -0
  140. data/lib/dapp/dimg/docker_registry/base.rb +109 -0
  141. data/lib/dapp/dimg/docker_registry/base/authorization.rb +63 -0
  142. data/lib/dapp/dimg/docker_registry/base/request.rb +34 -0
  143. data/lib/dapp/dimg/docker_registry/default.rb +18 -0
  144. data/lib/dapp/dimg/error/base.rb +7 -0
  145. data/lib/dapp/dimg/error/build.rb +7 -0
  146. data/lib/dapp/dimg/error/chef.rb +11 -0
  147. data/lib/dapp/dimg/error/command.rb +7 -0
  148. data/lib/dapp/dimg/error/config.rb +7 -0
  149. data/lib/dapp/dimg/error/dimg.rb +7 -0
  150. data/lib/dapp/dimg/error/lock.rb +7 -0
  151. data/lib/dapp/dimg/error/registry.rb +7 -0
  152. data/lib/dapp/dimg/error/rugged.rb +7 -0
  153. data/lib/dapp/dimg/error/shellout.rb +7 -0
  154. data/lib/dapp/dimg/error/tar_writer.rb +7 -0
  155. data/lib/dapp/dimg/exception/base.rb +7 -0
  156. data/lib/dapp/dimg/exception/introspect_image.rb +7 -0
  157. data/lib/dapp/dimg/exception/registry.rb +7 -0
  158. data/lib/dapp/dimg/filelock.rb +43 -0
  159. data/lib/dapp/dimg/git_artifact.rb +241 -18
  160. data/lib/dapp/dimg/git_repo/base.rb +90 -0
  161. data/lib/dapp/dimg/git_repo/own.rb +39 -0
  162. data/lib/dapp/dimg/git_repo/remote.rb +50 -0
  163. data/lib/dapp/dimg/image/argument.rb +143 -0
  164. data/lib/dapp/dimg/image/docker.rb +127 -0
  165. data/lib/dapp/dimg/image/scratch.rb +32 -0
  166. data/lib/dapp/dimg/image/stage.rb +95 -0
  167. data/lib/dapp/dimg/lock/base.rb +51 -0
  168. data/lib/dapp/dimg/lock/file.rb +48 -0
  169. data/lib/dapp/error/base.rb +0 -1
  170. data/lib/dapp/error/dapp.rb +5 -0
  171. data/lib/dapp/error/dappfile.rb +0 -1
  172. data/lib/dapp/error/shellout.rb +0 -1
  173. data/lib/dapp/exception/base.rb +0 -1
  174. data/lib/dapp/helper/cli.rb +5 -6
  175. data/lib/dapp/helper/net_status.rb +0 -1
  176. data/lib/dapp/helper/sha256.rb +0 -1
  177. data/lib/dapp/helper/trivia.rb +0 -1
  178. data/lib/dapp/prctl.rb +0 -1
  179. data/lib/dapp/version.rb +1 -2
  180. metadata +172 -140
  181. data/lib/dapp/artifact.rb +0 -23
  182. data/lib/dapp/build/stage/after_install_artifact.rb +0 -13
  183. data/lib/dapp/build/stage/after_setup_artifact.rb +0 -17
  184. data/lib/dapp/build/stage/artifact_base.rb +0 -80
  185. data/lib/dapp/build/stage/artifact_default.rb +0 -63
  186. data/lib/dapp/build/stage/base.rb +0 -203
  187. data/lib/dapp/build/stage/before_install.rb +0 -32
  188. data/lib/dapp/build/stage/before_install_artifact.rb +0 -13
  189. data/lib/dapp/build/stage/before_setup.rb +0 -30
  190. data/lib/dapp/build/stage/before_setup_artifact.rb +0 -13
  191. data/lib/dapp/build/stage/build_artifact.rb +0 -36
  192. data/lib/dapp/build/stage/docker_instructions.rb +0 -24
  193. data/lib/dapp/build/stage/from.rb +0 -34
  194. data/lib/dapp/build/stage/ga_archive.rb +0 -27
  195. data/lib/dapp/build/stage/ga_archive_dependencies.rb +0 -26
  196. data/lib/dapp/build/stage/ga_artifact_patch.rb +0 -21
  197. data/lib/dapp/build/stage/ga_base.rb +0 -79
  198. data/lib/dapp/build/stage/ga_dependencies_base.rb +0 -19
  199. data/lib/dapp/build/stage/ga_latest_patch.rb +0 -53
  200. data/lib/dapp/build/stage/import_artifact.rb +0 -65
  201. data/lib/dapp/build/stage/install/ga_post_install_patch.rb +0 -21
  202. data/lib/dapp/build/stage/install/ga_post_install_patch_dependencies.rb +0 -21
  203. data/lib/dapp/build/stage/install/ga_pre_install_patch.rb +0 -21
  204. data/lib/dapp/build/stage/install/ga_pre_install_patch_dependencies.rb +0 -21
  205. data/lib/dapp/build/stage/install/install.rb +0 -40
  206. data/lib/dapp/build/stage/mod/group.rb +0 -42
  207. data/lib/dapp/build/stage/mod/logging.rb +0 -104
  208. data/lib/dapp/build/stage/setup/ga_post_setup_patch.rb +0 -21
  209. data/lib/dapp/build/stage/setup/ga_post_setup_patch_dependencies.rb +0 -31
  210. data/lib/dapp/build/stage/setup/ga_pre_setup_patch.rb +0 -21
  211. data/lib/dapp/build/stage/setup/ga_pre_setup_patch_dependencies.rb +0 -21
  212. data/lib/dapp/build/stage/setup/setup.rb +0 -40
  213. data/lib/dapp/builder/chef/berksfile.rb +0 -78
  214. data/lib/dapp/builder/chef/cookbook.rb +0 -257
  215. data/lib/dapp/builder/chef/cookbook_metadata.rb +0 -54
  216. data/lib/dapp/builder/chef/error.rb +0 -12
  217. data/lib/dapp/cli/bp.rb +0 -37
  218. data/lib/dapp/cli/build.rb +0 -60
  219. data/lib/dapp/cli/cleanup.rb +0 -22
  220. data/lib/dapp/cli/list.rb +0 -17
  221. data/lib/dapp/cli/mrproper.rb +0 -26
  222. data/lib/dapp/cli/push.rb +0 -61
  223. data/lib/dapp/cli/run.rb +0 -53
  224. data/lib/dapp/cli/stage_image.rb +0 -24
  225. data/lib/dapp/cli/stages.rb +0 -23
  226. data/lib/dapp/cli/stages/cleanup_local.rb +0 -44
  227. data/lib/dapp/cli/stages/cleanup_repo.rb +0 -26
  228. data/lib/dapp/cli/stages/flush_local.rb +0 -23
  229. data/lib/dapp/cli/stages/flush_repo.rb +0 -24
  230. data/lib/dapp/cli/stages/pull.rb +0 -28
  231. data/lib/dapp/cli/stages/push.rb +0 -24
  232. data/lib/dapp/cli/tag.rb +0 -24
  233. data/lib/dapp/config/artifact_dimg.rb +0 -20
  234. data/lib/dapp/config/artifact_group.rb +0 -56
  235. data/lib/dapp/config/dimg.rb +0 -23
  236. data/lib/dapp/config/dimg/instance_methods.rb +0 -194
  237. data/lib/dapp/config/dimg/validation.rb +0 -125
  238. data/lib/dapp/config/dimg_group.rb +0 -60
  239. data/lib/dapp/config/dimg_group_base.rb +0 -53
  240. data/lib/dapp/config/dimg_group_main.rb +0 -21
  241. data/lib/dapp/config/directive/artifact.rb +0 -69
  242. data/lib/dapp/config/directive/artifact_base.rb +0 -93
  243. data/lib/dapp/config/directive/chef.rb +0 -57
  244. data/lib/dapp/config/directive/docker/artifact.rb +0 -15
  245. data/lib/dapp/config/directive/docker/base.rb +0 -20
  246. data/lib/dapp/config/directive/docker/dimg.rb +0 -81
  247. data/lib/dapp/config/directive/git_artifact_local.rb +0 -13
  248. data/lib/dapp/config/directive/git_artifact_remote.rb +0 -57
  249. data/lib/dapp/config/directive/mount.rb +0 -26
  250. data/lib/dapp/config/directive/shell/artifact.rb +0 -17
  251. data/lib/dapp/config/directive/shell/dimg.rb +0 -65
  252. data/lib/dapp/dimg/path.rb +0 -37
  253. data/lib/dapp/dimg/stages.rb +0 -59
  254. data/lib/dapp/dimg/tags.rb +0 -65
  255. data/lib/dapp/docker_registry.rb +0 -36
  256. data/lib/dapp/docker_registry/base.rb +0 -109
  257. data/lib/dapp/docker_registry/default.rb +0 -18
  258. data/lib/dapp/docker_registry/mod/authorization.rb +0 -63
  259. data/lib/dapp/docker_registry/mod/request.rb +0 -32
  260. data/lib/dapp/error/build.rb +0 -6
  261. data/lib/dapp/error/config.rb +0 -6
  262. data/lib/dapp/error/dimg.rb +0 -6
  263. data/lib/dapp/error/image.rb +0 -6
  264. data/lib/dapp/error/project.rb +0 -6
  265. data/lib/dapp/error/registry.rb +0 -6
  266. data/lib/dapp/error/rugged.rb +0 -6
  267. data/lib/dapp/error/tar_writer.rb +0 -6
  268. data/lib/dapp/exception/introspect_image.rb +0 -6
  269. data/lib/dapp/exception/registry.rb +0 -6
  270. data/lib/dapp/filelock.rb +0 -43
  271. data/lib/dapp/git_artifact.rb +0 -241
  272. data/lib/dapp/git_repo/base.rb +0 -88
  273. data/lib/dapp/git_repo/own.rb +0 -38
  274. data/lib/dapp/git_repo/remote.rb +0 -49
  275. data/lib/dapp/image/argument.rb +0 -134
  276. data/lib/dapp/image/docker.rb +0 -115
  277. data/lib/dapp/image/scratch.rb +0 -32
  278. data/lib/dapp/image/stage.rb +0 -94
  279. data/lib/dapp/lock/base.rb +0 -51
  280. data/lib/dapp/lock/error.rb +0 -14
  281. data/lib/dapp/lock/file.rb +0 -45
  282. data/lib/dapp/project/command/bp.rb +0 -21
  283. data/lib/dapp/project/command/build.rb +0 -20
  284. data/lib/dapp/project/command/cleanup.rb +0 -24
  285. data/lib/dapp/project/command/common.rb +0 -96
  286. data/lib/dapp/project/command/list.rb +0 -20
  287. data/lib/dapp/project/command/mrproper.rb +0 -69
  288. data/lib/dapp/project/command/push.rb +0 -28
  289. data/lib/dapp/project/command/run.rb +0 -15
  290. data/lib/dapp/project/command/spush.rb +0 -18
  291. data/lib/dapp/project/command/stage_image.rb +0 -15
  292. data/lib/dapp/project/command/stages/cleanup_local.rb +0 -138
  293. data/lib/dapp/project/command/stages/cleanup_repo.rb +0 -125
  294. data/lib/dapp/project/command/stages/common.rb +0 -86
  295. data/lib/dapp/project/command/stages/flush_local.rb +0 -22
  296. data/lib/dapp/project/command/stages/flush_repo.rb +0 -22
  297. data/lib/dapp/project/command/stages/pull.rb +0 -27
  298. data/lib/dapp/project/command/stages/push.rb +0 -23
  299. data/lib/dapp/project/command/tag.rb +0 -18
@@ -1,23 +0,0 @@
1
- module Dapp
2
- # Artifact
3
- class Artifact < Dimg
4
- def after_stages_build!
5
- end
6
-
7
- def stage_should_be_introspected?(name)
8
- project.cli_options[:introspect_artifact_stage] == name
9
- end
10
-
11
- def artifact?
12
- true
13
- end
14
-
15
- def should_be_built?
16
- false
17
- end
18
-
19
- def last_stage
20
- @last_stage ||= Build::Stage::BuildArtifact.new(self)
21
- end
22
- end # Artifact
23
- end # Dapp
@@ -1,13 +0,0 @@
1
- module Dapp
2
- module Build
3
- module Stage
4
- # AfterInstallArtifact
5
- class AfterInstallArtifact < ArtifactDefault
6
- def initialize(dimg, next_stage)
7
- @prev_stage = InstallGroup::GAPostInstallPatch.new(dimg, self)
8
- super
9
- end
10
- end # AfterInstallArtifact
11
- end # Stage
12
- end # Build
13
- end # Dapp
@@ -1,17 +0,0 @@
1
- module Dapp
2
- module Build
3
- module Stage
4
- # AfterSetupArtifact
5
- class AfterSetupArtifact < ArtifactDefault
6
- def initialize(dimg, next_stage)
7
- @prev_stage = if dimg.artifact?
8
- SetupGroup::Setup.new(dimg, self)
9
- else
10
- SetupGroup::GAPostSetupPatch.new(dimg, self)
11
- end
12
- super
13
- end
14
- end # AfterSetupArtifact
15
- end # Stage
16
- end # Build
17
- end # Dapp
@@ -1,80 +0,0 @@
1
- module Dapp
2
- module Build
3
- module Stage
4
- # ArtifactBase
5
- class ArtifactBase < Base
6
- def dependencies
7
- artifacts_signatures
8
- end
9
-
10
- def prepare_image
11
- super
12
- artifacts_dimgs_build!
13
- artifacts_labels = {}
14
- artifacts.each do |artifact|
15
- apply_artifact(artifact, image)
16
- artifacts_labels["dapp-artifact-#{artifact[:name]}".to_sym] = artifact[:dimg].last_stage.image.built_id
17
- end
18
- image.add_service_change_label artifacts_labels
19
- end
20
-
21
- def artifacts
22
- @artifacts ||= begin
23
- dimg.config.public_send("_#{name}").map do |artifact|
24
- artifact_dimg = Dapp::Artifact.new(config: artifact._config,
25
- project: dimg.project,
26
- ignore_git_fetch: dimg.ignore_git_fetch)
27
- { name: artifact._config._name, options: artifact._artifact_options, dimg: artifact_dimg }
28
- end
29
- end
30
- end
31
-
32
- def artifact?
33
- true
34
- end
35
-
36
- protected
37
-
38
- def should_not_be_detailed?
39
- true
40
- end
41
-
42
- def ignore_log_commands?
43
- true
44
- end
45
-
46
- def artifacts_signatures
47
- artifacts.map { |artifact| hashsum [artifact[:dimg].signature, artifact[:options]] }
48
- end
49
-
50
- def artifacts_dimgs_build!
51
- artifacts.each do |artifact|
52
- process = dimg.project.t(code: 'process.artifact_building', data: { name: artifact[:name] })
53
- dimg.project.log_secondary_process(process,
54
- short: !dimg.project.log_verbose?,
55
- quiet: dimg.artifact? && !dimg.project.log_verbose?) do
56
- dimg.project.with_log_indent do
57
- artifact[:dimg].build!
58
- end
59
- end
60
- end
61
- end
62
-
63
- # rubocop:disable Metrics/AbcSize
64
- def run_artifact_dimg(artifact_dimg, artifact_name, commands)
65
- docker_options = ['--rm',
66
- "--volume #{dimg.tmp_path('artifact', artifact_name)}:#{artifact_dimg.container_tmp_path(artifact_name)}",
67
- "--volumes-from #{dimg.project.base_container}",
68
- "--entrypoint #{dimg.project.bash_bin}"]
69
- dimg.project.log_secondary_process(dimg.project.t(code: 'process.artifact_copy',
70
- data: { name: artifact_name }),
71
- short: true,
72
- quiet: dimg.artifact? && !dimg.project.log_verbose?) do
73
- artifact_dimg.run(docker_options, [%(-ec '#{dimg.project.shellout_pack(commands)}')])
74
- end
75
- end
76
- # rubocop:enable Metrics/AbcSize
77
- end # ArtifactBase
78
- end # Stage
79
- end # Build
80
- end # Dapp
@@ -1,63 +0,0 @@
1
- module Dapp
2
- module Build
3
- module Stage
4
- # ArtifactDefault
5
- class ArtifactDefault < ArtifactBase
6
- protected
7
-
8
- # rubocop:disable Metrics/AbcSize
9
- def apply_artifact(artifact, image)
10
- return if dimg.project.dry_run?
11
-
12
- artifact_name = artifact[:name]
13
- artifact_dimg = artifact[:dimg]
14
- cwd = artifact[:options][:cwd]
15
- include_paths = artifact[:options][:include_paths]
16
- exclude_paths = artifact[:options][:exclude_paths]
17
- owner = artifact[:options][:owner]
18
- group = artifact[:options][:group]
19
- to = artifact[:options][:to]
20
-
21
- command = safe_cp(cwd, artifact_dimg.container_tmp_path(artifact_name).to_s, Process.uid, Process.gid, include_paths, exclude_paths)
22
- run_artifact_dimg(artifact_dimg, artifact_name, command)
23
-
24
- command = safe_cp(dimg.container_tmp_path('artifact', artifact_name).to_s, to, owner, group, include_paths, exclude_paths)
25
- image.add_command command
26
- image.add_volume "#{dimg.tmp_path('artifact', artifact_name)}:#{dimg.container_tmp_path('artifact', artifact_name)}:ro"
27
- end
28
- # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
29
-
30
- private
31
-
32
- # rubocop:disable Metrics/ParameterLists, Metrics/AbcSize, Metrics/MethodLength
33
- def safe_cp(from, to, owner, group, include_paths = [], exclude_paths = [])
34
- credentials = ''
35
- credentials += "-o #{owner} " if owner
36
- credentials += "-g #{group} " if group
37
- excludes = find_command_excludes(from, exclude_paths).join(' ')
38
-
39
- copy_files = proc do |from_, path_ = ''|
40
- "if [[ -d #{File.join(from_, path_)} ]] || [[ -f #{File.join(from_, path_)} ]]; then " \
41
- "#{dimg.project.find_bin} #{File.join(from_, path_)} #{excludes} -type f -exec " \
42
- "#{dimg.project.bash_bin} -ec '#{dimg.project.install_bin} -D #{credentials} \"{}\" " \
43
- "\"#{File.join(to, "$(echo \"{}\" | " \
44
- "#{dimg.project.sed_bin} -e \"s/^#{from_.gsub('/', '\\/')}\\///g\")")}\"' \\; ;" \
45
- 'fi'
46
- end
47
-
48
- commands = []
49
- commands << [dimg.project.install_bin, credentials, '-d', to].join(' ')
50
- commands.concat(include_paths.empty? ? Array(copy_files.call(from)) : include_paths.map { |path| copy_files.call(from, path) })
51
- commands << "#{dimg.project.find_bin} #{to} -type d -exec " \
52
- "#{dimg.project.bash_bin} -ec '#{dimg.project.install_bin} -d #{credentials} {}' \\;"
53
- commands.join(' && ')
54
- end
55
- # rubocop:enable Metrics/ParameterLists, Metrics/AbcSize, Metrics/MethodLength
56
-
57
- def find_command_excludes(from, exclude_paths)
58
- exclude_paths.map { |path| "-not \\( -path #{File.join(from, path)} -prune \\)" }
59
- end
60
- end # ArtifactDefault
61
- end # Stage
62
- end # Build
63
- end # Dapp
@@ -1,203 +0,0 @@
1
- module Dapp
2
- module Build
3
- module Stage
4
- # Base of all stages
5
- class Base
6
- include Helper::Sha256
7
- include Helper::Trivia
8
- include Mod::Logging
9
-
10
- attr_accessor :prev_stage, :next_stage
11
- attr_reader :dimg
12
-
13
- def initialize(dimg, next_stage)
14
- @dimg = dimg
15
-
16
- @next_stage = next_stage
17
- @next_stage.prev_stage = self
18
- end
19
-
20
- # rubocop:disable Metrics/MethodLength, Metrics/PerceivedComplexity
21
- def build_lock!
22
- return yield if dimg.project.dry_run?
23
-
24
- try_lock = proc do
25
- next yield unless should_be_tagged?
26
-
27
- no_lock = false
28
-
29
- dimg.project.lock("#{dimg.project.name}.image.#{image.name}") do
30
- image.cache_reset
31
-
32
- if should_be_tagged?
33
- yield
34
- else
35
- no_lock = true
36
- end
37
- end
38
-
39
- yield if no_lock
40
- end
41
-
42
- if prev_stage
43
- prev_stage.build_lock! { try_lock.call }
44
- else
45
- try_lock.call
46
- end
47
- end
48
- # rubocop:enable Metrics/MethodLength, Metrics/PerceivedComplexity
49
-
50
- def build!
51
- return if build_should_be_skipped?
52
- prev_stage.build! if prev_stage
53
- if image_should_be_build?
54
- prepare_image if !image.built? && !should_be_not_present?
55
- log_image_build(&method(:image_build))
56
- end
57
- dimg.introspect_image!(image: image.built_id, options: image.send(:prepared_options)) if should_be_introspected?
58
- end
59
-
60
- def save_in_cache!
61
- prev_stage.save_in_cache! if prev_stage
62
- return unless should_be_tagged?
63
- image.save_in_cache! unless dimg.project.dry_run?
64
- end
65
-
66
- def image
67
- @image ||= begin
68
- if empty?
69
- prev_stage.image
70
- else
71
- Image::Stage.image_by_name(name: image_name, from: from_image, project: dimg.project)
72
- end
73
- end
74
- end
75
-
76
- def prepare_image
77
- return if dimg.project.dry_run?
78
- image.add_volumes_from dimg.project.base_container
79
-
80
- image_add_mounts
81
-
82
- image.add_service_change_label dapp: dimg.stage_dapp_label
83
- image.add_service_change_label 'dapp-version'.to_sym => Dapp::VERSION
84
- image.add_service_change_label 'dapp-cache-version'.to_sym => Dapp::BUILD_CACHE_VERSION
85
- image.add_service_change_label 'dapp-dev-mode'.to_sym => true if dimg.dev_mode?
86
-
87
- if dimg.project.ssh_auth_sock
88
- image.add_volume "#{dimg.project.ssh_auth_sock}:/tmp/dapp-ssh-agent"
89
- image.add_env 'SSH_AUTH_SOCK', '/tmp/dapp-ssh-agent'
90
- end
91
-
92
- yield if block_given?
93
- end
94
-
95
- def image_add_mounts
96
- [:tmp_dir, :build_dir].each do |type|
97
- next if (mounts = mounts_by_type(type)).empty?
98
-
99
- mounts.each do |path|
100
- absolute_path = File.expand_path(File.join('/', path))
101
- tmp_path = dimg.send(type, 'mount', absolute_path[1..-1]).tap(&:mkpath)
102
- image.add_volume "#{tmp_path}:#{absolute_path}"
103
- end
104
-
105
- image.add_service_change_label :"dapp-mount-#{type.to_s.tr('_', '-')}" => mounts.join(';')
106
- end
107
- end
108
-
109
- def mounts_by_type(type)
110
- (dimg.config.public_send("_#{type}_mount").map(&:_to) +
111
- from_image.labels.select { |l, _| l == "dapp-mount-#{type.to_s.tr('_', '-')}" }.map { |_, value| value.split(';') }.flatten).uniq
112
- end
113
-
114
- def image_should_be_build?
115
- (!empty? && !image.built?) || dimg.project.log_verbose?
116
- end
117
-
118
- def empty?
119
- dependencies_empty?
120
- end
121
-
122
- def dependencies_empty?
123
- dependencies.flatten.compact.delete_if { |val| val.respond_to?(:empty?) && val.empty? }.empty?
124
- end
125
-
126
- def signature
127
- @signature ||= begin
128
- if empty?
129
- prev_stage.signature
130
- else
131
- args = []
132
- args << prev_stage.signature unless prev_stage.nil?
133
- args << dimg.build_cache_version
134
- args << builder_checksum
135
- args.concat(dependencies.flatten)
136
-
137
- hashsum args
138
- end
139
- end
140
- end
141
-
142
- def builder_checksum
143
- end
144
-
145
- def dependencies
146
- []
147
- end
148
-
149
- def artifact?
150
- false
151
- end
152
-
153
- protected
154
-
155
- def image_build
156
- image.build!
157
- end
158
-
159
- def build_should_be_skipped?
160
- image.built? && !dimg.project.log_verbose? && !should_be_introspected?
161
- end
162
-
163
- def should_be_tagged?
164
- !(empty? || image.tagged? || should_be_not_present?) && image.built?
165
- end
166
-
167
- def should_be_not_present?
168
- return false if next_stage.nil?
169
- next_stage.image.tagged? || next_stage.should_be_not_present?
170
- end
171
-
172
- def image_name
173
- dimg.stage_cache_format % { signature: signature }
174
- end
175
-
176
- def from_image
177
- prev_stage.image if prev_stage || begin
178
- raise Error::Build, code: :from_image_required
179
- end
180
- end
181
-
182
- def name
183
- class_to_lowercase.to_sym
184
- end
185
-
186
- def dependencies_files_checksum(regs)
187
- regs.map! { |reg| File.directory?(File.join(dimg.project.path, reg)) ? File.join(reg, '**', '*') : reg }
188
- unless (files = regs.map { |reg| Dir[File.join(dimg.project.path, reg)].map { |f| File.read(f) if File.file?(f) } }).empty?
189
- hashsum files
190
- end
191
- end
192
-
193
- def change_options
194
- @change_options ||= begin
195
- dimg.config._docker._change_options.to_h.delete_if do |_, val|
196
- val.nil? || (val.respond_to?(:empty?) && val.empty?)
197
- end
198
- end
199
- end
200
- end # Base
201
- end # Stage
202
- end # Build
203
- end # Dapp
@@ -1,32 +0,0 @@
1
- module Dapp
2
- module Build
3
- module Stage
4
- # BeforeInstall
5
- class BeforeInstall < Base
6
- def initialize(dimg, next_stage)
7
- @prev_stage = From.new(dimg, self)
8
- super
9
- end
10
-
11
- def empty?
12
- super && !dimg.builder.before_install?
13
- end
14
-
15
- def context
16
- [builder_checksum]
17
- end
18
-
19
- def builder_checksum
20
- dimg.builder.before_install_checksum
21
- end
22
-
23
- def prepare_image
24
- super
25
- dimg.builder.before_install(image)
26
- end
27
-
28
- alias dependencies context
29
- end # BeforeInstall
30
- end # Stage
31
- end # Build
32
- end # Dapp
@@ -1,13 +0,0 @@
1
- module Dapp
2
- module Build
3
- module Stage
4
- # BeforeInstallArtifact
5
- class BeforeInstallArtifact < ArtifactDefault
6
- def initialize(dimg, next_stage)
7
- @prev_stage = BeforeInstall.new(dimg, self)
8
- super
9
- end
10
- end # BeforeInstallArtifact
11
- end # Stage
12
- end # Build
13
- end # Dapp