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,38 +0,0 @@
1
- module Dapp
2
- module GitRepo
3
- # Own Git repo
4
- class Own < Base
5
- def initialize(dimg)
6
- super(dimg, 'own')
7
- end
8
-
9
- def exclude_paths
10
- dimg.project.local_git_artifact_exclude_paths
11
- end
12
-
13
- def path
14
- @path ||= Rugged::Repository.discover(dimg.home_path.to_s).path
15
- rescue Rugged::RepositoryError => _e
16
- raise Error::Rugged, code: :local_git_repository_does_not_exist
17
- end
18
-
19
- def diff(from, to, **kwargs)
20
- if to.nil?
21
- git.lookup(from).diff_workdir
22
- else
23
- super
24
- end
25
- end
26
-
27
- def latest_commit(_branch = nil)
28
- git.head.target_id
29
- end
30
-
31
- def lookup_commit(commit)
32
- super
33
- rescue Rugged::OdbError => _e
34
- raise Error::Rugged, code: :commit_not_found_in_local_git_repository, data: { commit: commit }
35
- end
36
- end
37
- end
38
- end
@@ -1,49 +0,0 @@
1
- module Dapp
2
- module GitRepo
3
- # Normal Git repo
4
- class Remote < Base
5
- def initialize(dimg, name, url:)
6
- super(dimg, name)
7
-
8
- @url = url
9
-
10
- dimg.project.log_secondary_process(dimg.project.t(code: 'process.git_artifact_clone', data: { name: name }), short: true) do
11
- begin
12
- Rugged::Repository.clone_at(url, path, bare: true)
13
- rescue Rugged::NetworkError, Rugged::SslError => e
14
- raise Error::Rugged, code: :rugged_remote_error, data: { message: e.message, url: url }
15
- end
16
- end unless File.directory?(path)
17
- end
18
-
19
- def path
20
- dimg.build_path("#{name}.git").to_s
21
- end
22
-
23
- def fetch!(branch = nil)
24
- branch ||= self.branch
25
- dimg.project.log_secondary_process(dimg.project.t(code: 'process.git_artifact_fetch', data: { name: name }), short: true) do
26
- git.fetch('origin', [branch])
27
- end unless dimg.ignore_git_fetch || dimg.project.dry_run?
28
- end
29
-
30
- def latest_commit(branch)
31
- git.ref("refs/remotes/origin/#{branch}").target_id
32
- end
33
-
34
- def lookup_commit(commit)
35
- super
36
- rescue Rugged::OdbError => _e
37
- raise Error::Rugged, code: :commit_not_found_in_remote_git_repository, data: { commit: commit, url: url }
38
- end
39
-
40
- protected
41
-
42
- attr_reader :url
43
-
44
- def git
45
- super(bare: true)
46
- end
47
- end
48
- end
49
- end
@@ -1,134 +0,0 @@
1
- module Dapp
2
- module Image
3
- # Argument
4
- module Argument
5
- def add_change_volume(value)
6
- add_change_option(:volume, value)
7
- end
8
-
9
- def add_change_expose(value)
10
- add_change_option(:expose, value)
11
- end
12
-
13
- def add_change_env(**options)
14
- add_change_option(:env, options)
15
- end
16
-
17
- def add_change_label(**options)
18
- add_change_option(:label, options)
19
- end
20
-
21
- def add_change_cmd(value)
22
- add_change_option(:cmd, value)
23
- end
24
-
25
- def add_change_entrypoint(value)
26
- add_change_option(:entrypoint, value)
27
- end
28
-
29
- def add_change_onbuild(value)
30
- add_change_option(:onbuild, value)
31
- end
32
-
33
- def add_change_workdir(value)
34
- add_change_option(:workdir, value)
35
- end
36
-
37
- def add_change_user(value)
38
- add_change_option(:user, value)
39
- end
40
-
41
- def add_service_change_label(**options)
42
- add_service_change_option(:label, options)
43
- end
44
-
45
- def add_env(var, value)
46
- add_option(:env, "#{var}=#{value}")
47
- end
48
-
49
- def add_volume(value)
50
- add_option(:volume, value)
51
- end
52
-
53
- def add_volumes_from(value)
54
- add_option(:'volumes-from', value)
55
- end
56
-
57
- def add_command(*commands)
58
- @bash_commands.concat(commands.flatten)
59
- end
60
-
61
- def prepare_instructions(options)
62
- options.map do |key, vals|
63
- case key
64
- when :cmd, :entrypoint then [vals]
65
- when :env, :label then vals.map(&method(:options_to_args)).flatten
66
- else vals
67
- end.map { |val| %(#{key.to_s.upcase} #{val}) }
68
- end.flatten
69
- end
70
-
71
- protected
72
-
73
- attr_reader :bash_commands
74
- attr_reader :change_options, :service_change_options
75
- attr_reader :options
76
-
77
- def add_option(key, value)
78
- add_option_default(options, key, value)
79
- end
80
-
81
- def add_change_option(key, value)
82
- add_option_default(change_options, key, value)
83
- end
84
-
85
- def add_service_change_option(key, value)
86
- add_option_default(service_change_options, key, value)
87
- end
88
-
89
- def add_option_default(hash, key, value)
90
- hash[key] = (hash[key].nil? ? [value] : (hash[key] << value)).flatten
91
- end
92
-
93
- def from_change_options
94
- return {} if from.nil?
95
- [:entrypoint, :cmd].each_with_object({}) do |option, options|
96
- options[option] = self.class.image_config_option(image_id: from.built_id, option: option)
97
- end
98
- end
99
-
100
- def options_to_args(options)
101
- options.map { |key, value| "#{key}=#{value}" }
102
- end
103
-
104
- def prepared_options
105
- all_options.map { |key, vals| Array(vals).map { |val| "--#{key}=#{val}" } }.flatten.join(' ')
106
- end
107
-
108
- def all_options
109
- service_options.merge(options)
110
- end
111
-
112
- def service_options
113
- { entrypoint: project.bash_bin, name: container_name }
114
- end
115
-
116
- def prepared_change
117
- prepare_instructions(all_change_options).map { |instruction| %(-c '#{instruction}') }.join(' ')
118
- end
119
-
120
- def all_change_options
121
- from_change_options.merge(change_options.merge(service_change_options) { |_, v1, v2| [v1, v2].flatten })
122
- end
123
-
124
- def prepared_bash_command
125
- project.shellout_pack prepared_commands.join(' && ')
126
- end
127
-
128
- def prepared_commands
129
- return [project.true_bin] if bash_commands.empty?
130
- bash_commands
131
- end
132
- end
133
- end # Image
134
- end # Dapp
@@ -1,115 +0,0 @@
1
- module Dapp
2
- # Image
3
- module Image
4
- # Docker
5
- class Docker
6
- attr_reader :from
7
- attr_reader :name
8
- attr_reader :project
9
-
10
- def self.image_by_name(name:, **kwargs)
11
- (@images ||= {})[name] ||= new(name: name, **kwargs)
12
- end
13
-
14
- def initialize(name:, project:, from: nil)
15
- @from = from
16
- @name = name
17
- @project = project
18
- end
19
-
20
- def id
21
- cache[:id]
22
- end
23
-
24
- def untag!
25
- raise Error::Build, code: :image_already_untagged, data: { name: name } unless tagged?
26
- project.shellout!("docker rmi #{name}")
27
- cache_reset
28
- end
29
-
30
- def push!
31
- raise Error::Build, code: :image_not_exist, data: { name: name } unless tagged?
32
- project.log_secondary_process(project.t(code: 'process.image_push', data: { name: name })) do
33
- project.shellout!("docker push #{name}", log_verbose: true)
34
- end
35
- end
36
-
37
- def pull!
38
- return if tagged?
39
- project.log_secondary_process(project.t(code: 'process.image_pull', data: { name: name })) do
40
- project.shellout!("docker pull #{name}", log_verbose: true)
41
- end
42
- cache_reset
43
- end
44
-
45
- def tagged?
46
- !!id
47
- end
48
-
49
- def created_at
50
- raise Error::Build, code: :image_not_exist, data: { name: name } unless tagged?
51
- cache[:created_at]
52
- end
53
-
54
- def size
55
- raise Error::Build, code: :image_not_exist, data: { name: name } unless tagged?
56
- cache[:size]
57
- end
58
-
59
- def self.image_config_option(image_id:, option:)
60
- output = Project.shellout!("docker inspect --format='{{json .Config.#{option.to_s.capitalize}}}' #{image_id}").stdout.strip
61
- output == 'null' ? [] : JSON.parse(output)
62
- end
63
-
64
- def cache_reset
65
- self.class.cache_reset(name)
66
- end
67
-
68
- protected
69
-
70
- def cache
71
- self.class.cache[name.to_s] || {}
72
- end
73
-
74
- class << self
75
- def image_name_format
76
- separator = '[_.]|__|[-]*'
77
- tag = "[[:alnum:]][[[:alnum:]]#{separator}]{0,127}"
78
- "#{DockerRegistry.repo_name_format}(:(?<tag>#{tag}))?"
79
- end
80
-
81
- def image_name?(name)
82
- !(/^#{image_name_format}$/ =~ name).nil?
83
- end
84
-
85
- def tag!(id:, tag:)
86
- Project.shellout!("docker tag #{id} #{tag}")
87
- cache_reset
88
- end
89
-
90
- def cache
91
- @cache ||= (@cache = {}).tap { cache_reset }
92
- end
93
-
94
- def cache_reset(name = '')
95
- cache.delete(name)
96
- Project.shellout!("docker images --format='{{.Repository}}:{{.Tag}};{{.ID}};{{.CreatedAt}};{{.Size}}' --no-trunc #{name}").stdout.lines.each do |l|
97
- name, id, created_at, size_field = l.split(';')
98
- size = begin
99
- number, unit = size_field.split
100
- coef = case unit.to_s.downcase
101
- when 'b' then return number.to_f
102
- when 'kb' then 1
103
- when 'mb' then 2
104
- when 'gb' then 3
105
- when 'tb' then 4
106
- end
107
- number.to_f * (1000 ** coef)
108
- end
109
- cache[name] = { id: id, created_at: created_at, size: size }
110
- end
111
- end
112
- end
113
- end # Docker
114
- end # Image
115
- end # Dapp
@@ -1,32 +0,0 @@
1
- module Dapp
2
- # Image
3
- module Image
4
- # Stage
5
- class Scratch < Stage
6
- def initialize(**_kwargs)
7
- super
8
- @from_archives = []
9
- end
10
-
11
- def add_archive(*archives)
12
- @from_archives.concat(archives.flatten)
13
- end
14
-
15
- def build!(**_kwargs)
16
- raise
17
-
18
- #FIXME: system-shellout rejected
19
- # build_from_command = if from_archives.empty?
20
- # "#{project.tar_bin} c --files-from /dev/null"
21
- # else
22
- # "#{project.cat_bin} #{from_archives.join(' ')}"
23
- # end
24
- # @built_id = project.system_shellout!("#{build_from_command} | docker import #{prepared_change} - ").stdout.strip
25
- end
26
-
27
- protected
28
-
29
- attr_accessor :from_archives
30
- end # Stage
31
- end # Image
32
- end # Dapp
@@ -1,94 +0,0 @@
1
- module Dapp
2
- # Image
3
- module Image
4
- # Stage
5
- class Stage < Docker
6
- include Argument
7
-
8
- def initialize(name:, project:, built_id: nil, from: nil)
9
- @container_name = "#{name[/[[^:].]*/]}.#{SecureRandom.hex(4)}"
10
- @built_id = built_id
11
-
12
- @bash_commands = []
13
- @options = {}
14
- @change_options = {}
15
- @service_change_options = {}
16
-
17
- super(name: name, project: project, from: from)
18
- end
19
-
20
- def built_id
21
- @built_id ||= id
22
- end
23
-
24
- def build!
25
- run!
26
- @built_id = commit!
27
- ensure
28
- project.shellout("docker rm #{container_name}")
29
- end
30
-
31
- def built?
32
- !built_id.nil?
33
- end
34
-
35
- def export!(name)
36
- tag!(name).tap do |image|
37
- image.push!
38
- image.untag!
39
- end
40
- end
41
-
42
- def tag!(name)
43
- clone!(name).tap do |image|
44
- self.class.tag!(id: image.built_id, tag: image.name)
45
- end
46
- end
47
-
48
- def import!(name)
49
- clone!(name).tap do |image|
50
- image.pull!
51
- @built_id = image.built_id
52
- save_in_cache!
53
- image.untag!
54
- end
55
- end
56
-
57
- def save_in_cache!
58
- project.log_warning(desc: { code: :another_image_already_tagged }) if !(existed_id = id).nil? && built_id != existed_id
59
- self.class.tag!(id: built_id, tag: name)
60
- end
61
-
62
- def labels
63
- raise Error::Build, code: :image_not_exist, data: { name: name } if built_id.nil?
64
- self.class.image_config_option(image_id: built_id, option: 'labels')
65
- end
66
-
67
- protected
68
-
69
- attr_reader :container_name
70
-
71
- def run!
72
- raise Error::Build, code: :built_id_not_defined if from.built_id.nil?
73
- project.shellout!("docker run #{prepared_options} #{from.built_id} -ec '#{prepared_bash_command}'", log_verbose: true)
74
- rescue Error::Shellout => error
75
- project.log_warning(desc: { code: :launched_command, data: { command: prepared_commands.join(' && ') }, context: :container })
76
-
77
- raise unless project.introspect_error? || project.introspect_before_error?
78
- built_id = project.introspect_error? ? commit! : from.built_id
79
- raise Exception::IntrospectImage, data: { built_id: built_id,
80
- options: prepared_options,
81
- rmi: project.introspect_error?,
82
- error: error }
83
- end
84
-
85
- def commit!
86
- project.shellout!("docker commit #{prepared_change} #{container_name}").stdout.strip
87
- end
88
-
89
- def clone!(name)
90
- self.class.new(name: name, project: project, built_id: built_id)
91
- end
92
- end # Stage
93
- end # Image
94
- end # Dapp