dapp 0.35.13 → 0.35.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/dapp/dimg/dapp/command/cleanup_repo.rb +1 -5
- data/lib/dapp/dimg/dapp/command/flush_local.rb +5 -3
- data/lib/dapp/dimg/dapp/command/flush_repo.rb +5 -3
- data/lib/dapp/dimg/dapp/command/ruby2go_cleanup.rb +28 -0
- data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +11 -98
- data/lib/dapp/dimg/dapp/command/stages/cleanup_repo.rb +10 -87
- data/lib/dapp/dimg/dapp/command/stages/common.rb +0 -19
- data/lib/dapp/dimg/dapp/command/stages/flush_local.rb +5 -3
- data/lib/dapp/dimg/dapp/command/stages/flush_repo.rb +5 -3
- data/lib/dapp/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b79f74ea56e3fa0b73cf59ffcf7575c03ed24c570b6340a29e87080144e89be
|
4
|
+
data.tar.gz: d0a49cdf9540c200d2d3a3c511ac5d983aed2bc74212b289f074d2042ccae029
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 55790f11cd30cd2f1ed9de5ba581369a76bdd06c9475f64f06aa17163ce9fe6b77fc09e25167ac0f2bcff9385a12f1b8856611f2ff38a1c02e668fba9d42c0af
|
7
|
+
data.tar.gz: eeaac232968bf0a80d1748b14f48e8a6eeb9ab156fc5d721eddbe6a1bc53b34ebf5536cc378f7716249493b210381cab2cc74e995d93b8a2b30e5b298d096276
|
@@ -24,11 +24,7 @@ module Dapp
|
|
24
24
|
cleanup_repo_by_policies(registry, actual_detailed_dimgs_images_by_scheme(registry))
|
25
25
|
end
|
26
26
|
|
27
|
-
|
28
|
-
repo_dimgs = repo_dimgs_images(registry)
|
29
|
-
repo_dimgstages = repo_dimgstages_images(registry)
|
30
|
-
repo_dimgstages_cleanup(registry, repo_dimgs, repo_dimgstages)
|
31
|
-
end if with_stages?
|
27
|
+
repo_dimgstages_cleanup(registry, repo_dimgs, repo_dimgstages) if with_stages?
|
32
28
|
end
|
33
29
|
end
|
34
30
|
end
|
@@ -16,9 +16,11 @@ module Dapp
|
|
16
16
|
force: true
|
17
17
|
}
|
18
18
|
},
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
mode: {
|
20
|
+
with_dimgs: true,
|
21
|
+
with_stages: with_stages?,
|
22
|
+
only_repo: false,
|
23
|
+
},
|
22
24
|
}.tap do |json|
|
23
25
|
break JSON.dump(json)
|
24
26
|
end
|
@@ -14,9 +14,11 @@ module Dapp
|
|
14
14
|
dimg_names: dimgs_names,
|
15
15
|
dry_run: dry_run?
|
16
16
|
},
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
mode: {
|
18
|
+
with_dimgs: true,
|
19
|
+
with_stages: with_stages?,
|
20
|
+
only_repo: true,
|
21
|
+
},
|
20
22
|
}.tap do |json|
|
21
23
|
break JSON.dump(json)
|
22
24
|
end
|
@@ -14,6 +14,34 @@ module Dapp
|
|
14
14
|
raise Error::Build, code: :ruby2go_cleanup_command_failed_unexpected_error, data: { command: command, message: res["error"] } unless res["error"].nil?
|
15
15
|
end
|
16
16
|
end
|
17
|
+
|
18
|
+
def ruby2go_cleanup_sync_common_project_options
|
19
|
+
{
|
20
|
+
common_project_options: {
|
21
|
+
project_name: name,
|
22
|
+
common_options: {
|
23
|
+
dry_run: dry_run?,
|
24
|
+
force: true
|
25
|
+
}
|
26
|
+
},
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
30
|
+
def ruby2go_cleanup_sync_cache_version_option
|
31
|
+
{
|
32
|
+
cache_version: ::Dapp::BUILD_CACHE_VERSION.to_s
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
def ruby2go_cleanup_sync_common_repo_options
|
37
|
+
{
|
38
|
+
common_repo_options: {
|
39
|
+
repository: option_repo,
|
40
|
+
dimg_names: dimgs_names,
|
41
|
+
dry_run: dry_run?
|
42
|
+
}
|
43
|
+
}
|
44
|
+
end
|
17
45
|
end
|
18
46
|
end
|
19
47
|
end
|
@@ -5,115 +5,28 @@ module Dapp
|
|
5
5
|
module Stages
|
6
6
|
module CleanupLocal
|
7
7
|
def stages_cleanup_local
|
8
|
-
|
9
|
-
raise ::Dapp::Error::Command, code: :stages_cleanup_required_option unless stages_cleanup_option?
|
8
|
+
raise ::Dapp::Error::Command, code: :stages_cleanup_required_option unless stages_cleanup_option?
|
10
9
|
|
11
|
-
|
12
|
-
|
13
|
-
proper_git_commit if proper_git_commit?
|
14
|
-
|
15
|
-
dapp_containers_flush_by_label("dapp=#{name}")
|
16
|
-
dapp_dangling_images_flush_by_label("dapp=#{name}")
|
10
|
+
if proper_cache_version?
|
11
|
+
ruby2go_cleanup_command(:sync, cleanup_local_proper_cache_version_options)
|
17
12
|
end
|
18
|
-
end
|
19
13
|
|
20
|
-
|
21
|
-
|
22
|
-
def proper_cache
|
23
|
-
log_proper_cache do
|
24
|
-
lock("#{name}.images") do
|
25
|
-
remove_project_images begin
|
26
|
-
dapp_project_dimgstages.select do |image|
|
27
|
-
!actual_cache_project_dimgstages.map { |dimgstage| dimgstage["Id"] }.include?(image["Id"])
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
14
|
+
if proper_repo_cache?
|
15
|
+
ruby2go_cleanup_command(:sync, cleanup_local_proper_repo_cache_options)
|
31
16
|
end
|
32
17
|
end
|
33
18
|
|
34
|
-
def
|
35
|
-
|
36
|
-
|
37
|
-
prepare_docker_images(extra_filters: filters)
|
19
|
+
def cleanup_local_proper_cache_version_options
|
20
|
+
ruby2go_cleanup_sync_common_project_options.merge(ruby2go_cleanup_sync_cache_version_option).tap do |data|
|
21
|
+
break JSON.dump(data)
|
38
22
|
end
|
39
23
|
end
|
40
24
|
|
41
|
-
def
|
42
|
-
|
43
|
-
|
44
|
-
registry = dimg_registry(option_repo)
|
45
|
-
repo_dimgs = repo_detailed_dimgs_images(registry)
|
46
|
-
dimgstages = clone_dapp_project_dimgstages
|
47
|
-
|
48
|
-
repo_dimgs.each { |repo_dimg| except_image_id_with_parents(repo_dimg[:parent], dimgstages) }
|
49
|
-
|
50
|
-
# Удаление только образов старше 2ч
|
51
|
-
dimgstages.delete_if do |dimgstage|
|
52
|
-
Time.now.to_i - dimgstage["Created"] < 2 * 60 * 60
|
53
|
-
end unless ENV['DAPP_STAGES_CLEANUP_LOCAL_DISABLED_DATE_POLICY']
|
54
|
-
|
55
|
-
remove_project_images(dimgstages)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
def clone_dapp_project_dimgstages
|
61
|
-
Marshal.load(Marshal.dump(dapp_project_dimgstages))
|
62
|
-
end
|
63
|
-
|
64
|
-
def except_image_id_with_parents(image_id, dimgstages)
|
65
|
-
return unless (project_image = dapp_project_image_by_id(image_id))
|
66
|
-
except_dapp_project_image_with_parents(project_image, dimgstages)
|
67
|
-
end
|
68
|
-
|
69
|
-
def except_dapp_project_image_with_parents(image, dimgstages)
|
70
|
-
dapp_project_image_artifacts_ids_in_labels(image).each { |aiid| except_image_id_with_parents(aiid, dimgstages) }
|
71
|
-
i = image
|
72
|
-
loop do
|
73
|
-
array_hash_delete_if_by_id(dimgstages, i)
|
74
|
-
break if (i = dapp_project_image_parent(i)).nil?
|
25
|
+
def cleanup_local_proper_repo_cache_options
|
26
|
+
ruby2go_cleanup_sync_common_project_options.merge(ruby2go_cleanup_sync_common_repo_options).tap do |data|
|
27
|
+
break JSON.dump(data)
|
75
28
|
end
|
76
29
|
end
|
77
|
-
|
78
|
-
def dapp_project_image_artifacts_ids_in_labels(image)
|
79
|
-
select_dapp_artifacts_ids(image['Labels'])
|
80
|
-
end
|
81
|
-
|
82
|
-
def proper_git_commit
|
83
|
-
log_proper_git_commit do
|
84
|
-
lock("#{name}.images") do
|
85
|
-
unproper_images = []
|
86
|
-
dapp_project_dimgstages.each do |dimgstage|
|
87
|
-
dimgstage["Labels"].each do |repo_name, commit|
|
88
|
-
next if (repo = dapp_git_repositories[repo_name]).nil?
|
89
|
-
unproper_images.concat(dapp_project_image_with_children(dimgstage)) unless repo.commit_exists?(commit)
|
90
|
-
end
|
91
|
-
end
|
92
|
-
remove_project_images(unproper_images)
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
def dapp_project_image_with_children(image)
|
98
|
-
children = []
|
99
|
-
images = [image]
|
100
|
-
|
101
|
-
loop do
|
102
|
-
children.concat(dapp_project_images.select { |project_image| images.include?(project_image) })
|
103
|
-
images.map! do |parent_image|
|
104
|
-
dapp_project_images
|
105
|
-
.select { |project_image| dapp_project_image_parent(project_image) == parent_image }
|
106
|
-
end
|
107
|
-
images.flatten!
|
108
|
-
break if images.empty?
|
109
|
-
end
|
110
|
-
|
111
|
-
children
|
112
|
-
end
|
113
|
-
|
114
|
-
def dapp_project_image_parent(image)
|
115
|
-
dapp_project_image_by_id(image['ParentId'])
|
116
|
-
end
|
117
30
|
end
|
118
31
|
end
|
119
32
|
end
|
@@ -8,103 +8,26 @@ module Dapp
|
|
8
8
|
lock_repo(repo = option_repo) do
|
9
9
|
raise ::Dapp::Error::Command, code: :stages_cleanup_required_option unless stages_cleanup_option?
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
repo_dimgs = repo_dimgs_images(registry)
|
14
|
-
repo_dimgstages = repo_dimgstages_images(registry)
|
15
|
-
|
16
|
-
array_hash_delete_if_by_id(repo_dimgstages, repo_dimgs) # ignoring stages with dimgs ids (v2)
|
17
|
-
|
18
|
-
proper_repo_cache(registry, repo_dimgstages) if proper_cache_version?
|
19
|
-
repo_dimgstages_cleanup(registry, repo_dimgs, repo_dimgstages) if proper_repo_cache?
|
20
|
-
proper_repo_git_commit(registry) if proper_git_commit?
|
21
|
-
end
|
11
|
+
ruby2go_cleanup_command(:sync, cleanup_repo_proper_cache_version_options) if proper_cache_version?
|
12
|
+
repo_dimgstages_cleanup if proper_repo_cache?
|
22
13
|
end
|
23
14
|
end
|
24
15
|
|
25
|
-
|
26
|
-
|
27
|
-
def proper_repo_cache(registry, repo_dimgstages)
|
28
|
-
log_proper_cache do
|
29
|
-
repo_dimgstages
|
30
|
-
.select { |dimgstage| repo_image_dapp_cache_version_label(registry, dimgstage) != ::Dapp::BUILD_CACHE_VERSION.to_s }
|
31
|
-
.each { |dimgstage| delete_repo_image(registry, dimgstage); repo_dimgstages.delete_at(repo_dimgstages.index(dimgstage)) }
|
32
|
-
end
|
16
|
+
def repo_dimgstages_cleanup
|
17
|
+
ruby2go_cleanup_command(:sync, cleanup_repo_proper_repo_cache_options)
|
33
18
|
end
|
34
19
|
|
35
|
-
def
|
36
|
-
|
37
|
-
|
38
|
-
repo_dimgstages.each { |dimgstage| delete_repo_image(registry, dimgstage) }
|
20
|
+
def cleanup_repo_proper_cache_version_options
|
21
|
+
ruby2go_cleanup_sync_common_repo_options.merge({ mode: { sync_repo: true, only_cache_version: true } }).merge(ruby2go_cleanup_sync_cache_version_option).tap do |data|
|
22
|
+
break JSON.dump(data)
|
39
23
|
end
|
40
24
|
end
|
41
25
|
|
42
|
-
def
|
43
|
-
|
44
|
-
|
45
|
-
except_repo_image_with_parents(registry, repo_artifact_image, repo_dimgstages)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
ri = repo_image
|
50
|
-
loop do
|
51
|
-
array_hash_delete_if_by_id(repo_dimgstages, ri)
|
52
|
-
ri_parent_id = registry.image_parent_id(ri[:tag], ri[:dimg])
|
53
|
-
break if ri_parent_id.empty? || (ri = repo_image_by_id(ri_parent_id, repo_dimgstages)).nil?
|
26
|
+
def cleanup_repo_proper_repo_cache_options
|
27
|
+
ruby2go_cleanup_sync_common_repo_options.merge({ sync_repo: true }).tap do |data|
|
28
|
+
break JSON.dump(data)
|
54
29
|
end
|
55
30
|
end
|
56
|
-
|
57
|
-
def repo_image_dapp_artifacts_labels(registry, repo_image)
|
58
|
-
select_dapp_artifacts_ids(registry.image_config(repo_image[:tag], repo_image[:dimg])["config"]["Labels"])
|
59
|
-
end
|
60
|
-
|
61
|
-
def repo_image_dapp_cache_version_label(registry, repo_image)
|
62
|
-
registry.image_config(repo_image[:tag], repo_image[:dimg])["config"]["Labels"]['dapp-cache-version']
|
63
|
-
end
|
64
|
-
|
65
|
-
def repo_image_by_id(repo_image_id, repo_images)
|
66
|
-
repo_images.find { |repo_image| repo_image[:id] == repo_image_id }
|
67
|
-
end
|
68
|
-
|
69
|
-
def proper_repo_git_commit(registry)
|
70
|
-
log_proper_git_commit do
|
71
|
-
unproper_dimgstages = []
|
72
|
-
repo_detailed_dimgstage_images(registry).each do |dimgstage|
|
73
|
-
dimgstage[:labels].each do |repo_name, commit|
|
74
|
-
next if (repo = dapp_git_repositories[repo_name]).nil?
|
75
|
-
unproper_dimgstages.concat(repo_detailed_image_with_children(registry, dimgstage)) unless repo.commit_exists?(commit)
|
76
|
-
end
|
77
|
-
end
|
78
|
-
unproper_dimgstages.uniq.each { |dimgstage| delete_repo_image(registry, dimgstage) }
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
def repo_detailed_dimgstage_images(registry)
|
83
|
-
@repo_dapp_dimgstage_images_detailed ||= begin
|
84
|
-
repo_dimgstages_images(registry).each do |dimgstage|
|
85
|
-
image_config = registry.image_config(dimgstage[:tag], nil)
|
86
|
-
dimgstage[:parent] = image_config["container_config"]["Image"]
|
87
|
-
dimgstage[:labels] = image_config["config"]["Labels"]
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
def repo_detailed_image_with_children(registry, image)
|
93
|
-
children = []
|
94
|
-
detailed_images = [image]
|
95
|
-
|
96
|
-
loop do
|
97
|
-
children.concat(detailed_images)
|
98
|
-
detailed_images.map! do |repo_image|
|
99
|
-
repo_detailed_dimgstage_images(registry)
|
100
|
-
.select { |dimgstage| dimgstage[:parent] == repo_image[:id] }
|
101
|
-
end
|
102
|
-
detailed_images.flatten!
|
103
|
-
break if detailed_images.empty?
|
104
|
-
end
|
105
|
-
|
106
|
-
children
|
107
|
-
end
|
108
31
|
end
|
109
32
|
end
|
110
33
|
end
|
@@ -76,25 +76,6 @@ module Dapp
|
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
79
|
-
def select_dapp_artifacts_ids(labels)
|
80
|
-
labels.select { |k, _v| k.start_with?('dapp-artifact') }.values
|
81
|
-
end
|
82
|
-
|
83
|
-
def dapp_git_repositories
|
84
|
-
@dapp_git_repositories ||= begin
|
85
|
-
{}.tap do |repositories|
|
86
|
-
dimgs = build_configs.map { |config| dimg(config: config, ignore_signature_auto_calculation: true) }
|
87
|
-
dimgs.each do |dimg|
|
88
|
-
[dimg, dimg.artifacts]
|
89
|
-
.flatten
|
90
|
-
.map(&:git_artifacts)
|
91
|
-
.flatten
|
92
|
-
.map { |git_artifact| repositories[dimgstage_g_a_commit_label(git_artifact.paramshash)] = git_artifact.repo }
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
79
|
def proper_repo_cache?
|
99
80
|
!!options[:proper_repo_cache]
|
100
81
|
end
|
@@ -15,9 +15,11 @@ module Dapp
|
|
15
15
|
dimg_names: dimgs_names,
|
16
16
|
dry_run: dry_run?
|
17
17
|
},
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
mode: {
|
19
|
+
with_dimgs: false,
|
20
|
+
with_stages: true,
|
21
|
+
only_repo: true,
|
22
|
+
},
|
21
23
|
}.tap do |json|
|
22
24
|
break JSON.dump(json)
|
23
25
|
end
|
data/lib/dapp/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dapp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.35.
|
4
|
+
version: 0.35.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Stolyarov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-10-
|
11
|
+
date: 2018-10-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mixlib-shellout
|