Class: HerokuRelease::Task
- Inherits:
-
Object
- Object
- HerokuRelease::Task
- Defined in:
- lib/heroku_release.rb
Class Method Summary collapse
Instance Method Summary collapse
- #current_release ⇒ Object
- #log ⇒ Object
- #pending ⇒ Object
- #previous_release ⇒ Object
- #push ⇒ Object
- #rollback ⇒ Object
- #tag ⇒ Object
Class Method Details
.tasks ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/heroku_release.rb', line 18 def self.tasks { :push => nil, :tag => nil, :log => "Produces a changelog from release tags and their comments. Assumes tag comments have no newlines in them.", :current_release => "Show version of current release", :previous_release => "Show version of previous release", :pending => "Show git commits since last released version", :rollback => "Rollback to previous release and remove current release tag" } end |
Instance Method Details
#current_release ⇒ Object
62 63 64 |
# File 'lib/heroku_release.rb', line 62 def current_release output current_release_version end |
#log ⇒ Object
58 59 60 |
# File 'lib/heroku_release.rb', line 58 def log output("\n" + changelog) end |
#pending ⇒ Object
74 75 76 |
# File 'lib/heroku_release.rb', line 74 def pending execute "git log #{current_release_version}..HEAD" end |
#previous_release ⇒ Object
66 67 68 69 70 71 72 |
# File 'lib/heroku_release.rb', line 66 def previous_release if previous_release_version output previous_release_version else output "no previous release found" end end |
#push ⇒ Object
30 31 32 33 |
# File 'lib/heroku_release.rb', line 30 def push output 'Deploying site to Heroku ...' execute "git push #{config.heroku_remote} master" end |
#rollback ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/heroku_release.rb', line 78 def rollback # Store releases in local variables so they don't change during tag deletion current = current_release_version previous = previous_release_version if previous output "Rolling back to '#{previous}' ..." execute "git push -f #{config.heroku_remote} #{previous}:master" output "Removing rolled back release tag '#{current}' ..." remove_tag(current) output 'Rollback completed' else output "No release tags found - cannot do rollback" output releases end end |
#tag ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/heroku_release.rb', line 35 def tag release_name = get_release_name tag_comment = get_tag_comment quoted_tag_comment = single_quote(tag_comment) if config.version_file_path || config.changelog_path if config.version_file_path output "Updating version file at #{config.version_file_path}" update_version_file(release_name) end if config.changelog_path output "Updating #{config.changelog_path}" update_changelog(release_name, tag_comment) end commit(release_name, quoted_tag_comment) end output "Tagging release as '#{release_name}'" execute "git tag -a #{release_name} -m '#{quoted_tag_comment}'" execute "git push --tags origin" execute "git push --tags #{config.heroku_remote}" end |