Class: Statistrano::Deployment::Releaser::Revisions
- Inherits:
-
Object
- Object
- Statistrano::Deployment::Releaser::Revisions
show all
- Includes:
- Strategy::InvokeTasks
- Defined in:
- lib/statistrano/deployment/releaser/revisions.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
#call_or_invoke_task, #invoke_build_task, #invoke_post_deploy_task, #invoke_pre_symlink_task
Constructor Details
Returns a new instance of Revisions.
10
11
12
|
# File 'lib/statistrano/deployment/releaser/revisions.rb', line 10
def initialize
@release_name = Time.now.to_i.to_s
end
|
Instance Attribute Details
#release_name ⇒ Object
Returns the value of attribute release_name.
8
9
10
|
# File 'lib/statistrano/deployment/releaser/revisions.rb', line 8
def release_name
@release_name
end
|
Instance Method Details
#add_release_to_manifest(remote, build_data = {}) ⇒ Object
83
84
85
86
87
|
# File 'lib/statistrano/deployment/releaser/revisions.rb', line 83
def add_release_to_manifest remote, build_data={}
manifest = new_manifest remote
manifest.push build_data.merge(release: release_name)
manifest.save!
end
|
#create_release(remote, build_data = {}) ⇒ Object
14
15
16
17
18
19
20
21
|
# File 'lib/statistrano/deployment/releaser/revisions.rb', line 14
def create_release remote, build_data={}
setup_release_path remote
rsync_to_remote remote
invoke_pre_symlink_task remote
symlink_release remote
add_release_to_manifest remote, build_data
prune_releases remote
end
|
#current_release_data(remote) ⇒ Object
merge of manifest & log data (if a log)
60
61
62
63
64
65
66
67
68
|
# File 'lib/statistrano/deployment/releaser/revisions.rb', line 60
def current_release_data remote
release_data = new_manifest(remote).data.last
if remote.config.log_file_path
release_data.merge! log_file(remote).last_entry
end
release_data
end
|
#list_releases(remote) ⇒ Object
50
51
52
53
54
55
56
57
|
# File 'lib/statistrano/deployment/releaser/revisions.rb', line 50
def list_releases remote
manifest = new_manifest remote
manifest.data.keep_if do |rel|
rel.has_key?(:release)
end.sort_by do |rel|
rel[:release]
end.reverse
end
|
#prune_releases(remote) ⇒ Object
45
46
47
48
|
# File 'lib/statistrano/deployment/releaser/revisions.rb', line 45
def prune_releases remote
remove_untracked_releases remote
remove_releases_beyond_release_count remote
end
|
#rollback_release(remote) ⇒ Object
70
71
72
73
74
75
76
77
78
79
80
81
|
# File 'lib/statistrano/deployment/releaser/revisions.rb', line 70
def rollback_release remote
manifest = new_manifest remote
releases = tracked_releases remote, manifest
unless releases.length > 1
return Log.error "There is only one release, best not to remove it"
end
symlink_release remote, releases[1]
remove_release releases[0], remote, manifest
manifest.save!
end
|
#rsync_to_remote(remote) ⇒ Object
34
35
36
37
38
39
|
# File 'lib/statistrano/deployment/releaser/revisions.rb', line 34
def rsync_to_remote remote
resp = remote.rsync_to_remote local_path(remote), release_path(remote)
unless resp.success?
abort()
end
end
|
#setup_release_path(remote) ⇒ Object
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/statistrano/deployment/releaser/revisions.rb', line 23
def setup_release_path remote
current_release = current_release remote
remote.create_remote_dir releases_path(remote)
if current_release.empty?
remote.create_remote_dir release_path(remote)
else
remote.run "cp -a #{release_path(remote, current_release)} #{release_path(remote)}"
end
end
|
#symlink_release(remote, release = nil) ⇒ Object
41
42
43
|
# File 'lib/statistrano/deployment/releaser/revisions.rb', line 41
def symlink_release remote, release=nil
remote.run "ln -nfs #{release_path(remote, release)} #{public_path(remote)}"
end
|