Class: Mamiya::Agent::Tasks::Clean
Instance Attribute Summary
Attributes inherited from Abstract
#agent, #error, #logger, #task, #task_queue
Instance Method Summary
collapse
Methods inherited from Abstract
#after, #before, #errored, #execute, identifier, #initialize, #raise_error?, #task_id
Instance Method Details
#clean_packages ⇒ Object
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/mamiya/agent/tasks/clean.rb', line 17
def clean_packages
package_victims.each do |app, victim|
@logger.info "Cleaning package: remove #{victim}"
File.unlink(victim) if File.exist?(victim)
meta_victim = victim.sub(/\.tar\.gz\z/, '.json')
if File.exist?(meta_victim)
@logger.info "Cleaning up: remove #{meta_victim}"
File.unlink(meta_victim)
end
package_name = File.basename(victim, '.tar.gz')
agent.trigger('pkg', action: 'remove',
application: app,
package: package_name,
coalesce: false,
)
end
end
|
#clean_prereleases ⇒ Object
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# File 'lib/mamiya/agent/tasks/clean.rb', line 53
def clean_prereleases
prerelease_victims.each do |app, victim|
@logger.info "Cleaning prerelease: remove #{victim}"
package_name = File.basename(victim)
FileUtils.remove_entry_secure victim
agent.trigger('prerelease', action: 'remove',
app: app,
pkg: package_name,
coalesce: false,
)
end
end
|
#clean_releases ⇒ Object
80
81
82
83
84
85
86
87
88
89
90
91
92
|
# File 'lib/mamiya/agent/tasks/clean.rb', line 80
def clean_releases
release_victims.each do |app, victim|
@logger.info "Cleaning release: remove #{victim}"
package_name = File.basename(victim)
FileUtils.remove_entry_secure victim
agent.trigger('release', action: 'remove',
app: app,
pkg: package_name,
coalesce: false,
)
end
end
|
#package_victims ⇒ Object
40
41
42
43
44
45
46
47
48
49
|
# File 'lib/mamiya/agent/tasks/clean.rb', line 40
def package_victims
Dir[File.join(config[:packages_dir], '*')].flat_map do |app|
packages = Dir[File.join(app, "*.tar.gz")].
sort_by { |_| [File.mtime(_), _] }
packages[0...-(config[:keep_packages])].map do |victim|
[File.basename(app), victim]
end
end
end
|
#prerelease_victims ⇒ Object
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/mamiya/agent/tasks/clean.rb', line 67
def prerelease_victims
Dir[File.join(config[:prereleases_dir], '*')].flat_map do |app|
prereleases = Dir[File.join(app, "*")].
sort_by { |_| [File.mtime(_), _] }
prereleases[0...-(config[:keep_prereleases])].map do |victim|
[File.basename(app), victim]
end
end
end
|
#release_victims ⇒ Object
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
# File 'lib/mamiya/agent/tasks/clean.rb', line 94
def release_victims
config.applications.flat_map do |name, app|
next unless app[:deploy_to]
releases = Dir[File.join(app[:deploy_to], 'releases', '*')].sort_by { |_| [File.mtime(_), _] }
current = File.join(app[:deploy_to], 'current')
current_realpath = File.exist?(current) ? File.realpath(current) : nil
releases.reject!{ |rel| File.realpath(rel) == current_realpath }
releases[0...-(config[:keep_releases])].map do |victim|
[name, victim]
end
end
end
|
#run ⇒ Object
8
9
10
11
12
13
|
# File 'lib/mamiya/agent/tasks/clean.rb', line 8
def run
clean_packages
clean_prereleases
clean_releases
end
|