This commit is contained in:
Karl Southern 2016-05-17 18:25:35 +01:00
parent 5a1fdb7c7f
commit 5ec985b0df
2 changed files with 19 additions and 5 deletions

View File

@ -73,6 +73,11 @@ If you have vagrant available (this is temporary whilst I'm hacking on v5 suppor
- `bundle exec rspec`
## Releasing
- Update Changelog
- Bump version in gemspec
- Commit
- Create tag `git tag v<version-number-in-gemspec>`
- `bundle exec rake install_jars`
- `bundle exec rake pre_release_checks`
- `gem build logstash-output-jdbc.gemspec`
- `gem push`

View File

@ -1,3 +1,4 @@
# encoding: utf-8
require 'logstash/devutils/rake'
require 'jars/installer'
require 'rubygems'
@ -9,21 +10,29 @@ task :install_jars do
Jars::Installer.new.vendor_jars!(false)
end
def colourize(text, color_code)
"\e[#{color_code}m#{text}\e[0m"
end
desc 'Pre-release checks'
task :pre_release_checks do
if `git status --porcelain`.chomp.length > 0
raise "You have unstaged or uncommitted changes! Please only deploy from a clean working directory!"
warn colourize(' ✘ ', 31) + 'You have unstaged or uncommitted changes! Please only release from a clean working directory!'
else
puts colourize("", 32) + ' No un-staged commits'
end
spec = Gem::Specification::load("logstash-output-jdbc.gemspec")
expected_tag_name = "v#{spec.version}"
current_tag_name = `git describe --exact-match --tags HEAD`.chomp
if $? == 0
raise "Expected git tag to be '#{expected_tag_name}', but got '#{current_tag_name}'." if current_tag_name != expected_tag_name
current_tag_name = `git describe --exact-match --tags HEAD 2>&1`.chomp
if $?.success? and current_tag_name == expected_tag_name
puts colourize(' ✔ ', 32) + 'Tag matches current HEAD'
elsif $?.success? and current_tag_name == expected_tag_name
warn colourize(' ✘ ', 31) + "Expected git tag to be '#{expected_tag_name}', but got '#{current_tag_name}'."
else
raise "Expected git tag to be '#{expected_tag_name}, but got nothing."
warn colourize(' ✘ ', 31) + "Expected git tag to be '#{expected_tag_name}, but got nothing."
end
end