add single command release task and other release support tooling

Purpose:

* manage releases through a minimum number of rake tasks
* simplify building of snapshot builds
* create staged artifacts, candidates for releases, that required no changes to become releases
* this means the snapshot release process will not involve publishing gems, therefore:
* the gem artifacts should only be published to rubygems as a final artifact, at the time of GA

Changes:

* release artifacts no longer depend on gems of core components
* all core components are used locally AS-IS to minimize code changes between snapshot, RC and GA
* `versions.yml` describes the versions of all logstash parts and package
  * `rake version:set[version]` manage the yaml file and push the changes to the gemspecs/version.rb files
  * `rake version:set_plugin_api[version]` manage the yaml file and push the changes to the gemspecs/version.rb files
  * `rake artifact:all` generates SNAPSHOT artifacts: tar.gz, zip, rpm, deb
  * `RELEASE=1 rake artifact:all` creates release candidate artifacts + 4 gems: logstash-core, logstash-core-event, logstash-core-event-java and logstash-core-plugin-api

implements #5416 and #5414

Fixes #5460
This commit is contained in:
Joao Duarte 2016-06-01 17:46:11 +01:00 committed by João Duarte
parent d48896a0b1
commit a859bd4a3f
18 changed files with 316 additions and 426 deletions

View file

@ -1,2 +1,2 @@
# encoding: utf-8
LOGSTASH_CORE_PLUGIN_API = "2.0.0"
LOGSTASH_CORE_PLUGIN_API = "2.1.7"

View file

@ -11,13 +11,13 @@ Gem::Specification.new do |gem|
gem.homepage = "http://www.elastic.co/guide/en/logstash/current/index.html"
gem.license = "Apache License (2.0)"
gem.files = Dir.glob(["logstash-core-event.gemspec", "lib/**/*.rb", "spec/**/*.rb"])
gem.files = Dir.glob(["logstash-core-plugin-api.gemspec", "lib/**/*.rb", "spec/**/*.rb"])
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
gem.name = "logstash-core-plugin-api"
gem.require_paths = ["lib"]
gem.version = LOGSTASH_CORE_PLUGIN_API
gem.add_runtime_dependency "logstash-core", "5.0.0.dev"
gem.add_runtime_dependency "logstash-core", "5.0.0"
# Make sure we dont build this gem from a non jruby
# environment.