This new command replace the old workflow of `pack`, `unpack` and the `install --local`, and wrap all the logic into one uniform way of installing plugins.
The work is based on the flow developed for installing an x-pack inside Logstash, when you call prepare-offline-pack, the specified plugins and their dependencies will be packaged in a zip.
And this zip can be installed with the same flow as the pack.
Definition:
Source Logstash: Where you run the prepare-offline-pack.
Target Logstash: Where you install the offline package.
PROS:
- If you install a .gem in the source logstash, the .gem and his dependencies will be bundled.
- The install flow doesn't need to have access to the internet.
- Nothing special need to be setup in the target logstash environment.
CONS:
- The is one minor drawback, the plugins need to have their JARS bundled with them for this flow to work, this is currently the case for all the official plugins.
- The source Logstash need to have access to the internet when you install plugins before packaging them.
Usage examples:
bin/logstash-plugin prepare-offline-pack logstash-input-beats
bin/logstash-plugin prepare-offline-pack logstash-filter-jdbc logstash-input-beats
bin/logstash-plugin prepare-offline-pack logstash-filter-*
bin/logstash-plugin prepare-offline-pack logstash-filter-* logstash-input-beats
How to install:
bin/logstash-plugin install file:///tmp/logstash-offline-plugins-XXXX.zip
Fixes#6404
**Motivation**: We have decided to rewrite the documentation generator to add more features
to our documentation and to fix some outstanding bugs.
This PR addresses the following problem:
- Hard to add new features to the code base.
- The code was tied with Logstash.
- No easy way to publish the doc for a single plugin
- The plugin author was not able to test their documentation changes
- The reported errors were hard to understand.
- No easy way to automate it.
- the minimal requirement on base classes.
Fixes#5720
* make sure downloaded logstashes use the new (arch independant files name)
* add specific privileged bootstrap script for debian 8 that is able to install java8 for this distro
* wrap the bootstrap scripts within the platform class, like this logic is in one specific place to select platform specific components
* add platform specific bootstrap file for sles-12 and also scripts to download latest logstash rpm version
* add custom bootstrap script for ubuntu-1404 to be sure it loads all ca certificates into the system
* make the necessary changes to compile with the new package system
* correct logstash path usage
* remove unnecessary dependancy to rake inside the acceptance test framework
* fix script execution under ubuntu environments, making sure it runs on bash
Fixes#5350
Also:
* Refactored the specs organization to make the resoning behind simplier,
introducing the idea of an artifact subject that it wraps the
interactions with the platform.
* Add methods to destroy, bootstrap and halt a list of machines either all of them or the ones listed under a given platform name.
* Introduced more clear namespacing in the rakefile.
* Updated the list of available platforms for acceptance testing, including latest ubuntu, oel, fedora, debian and suse versions
Fixes#5350
This change introduce a new command ci/ci_acceptance which is
responsable of building the packages, bootstraping the acceptance test
environment, launching the VMs and running the tests.
You can use the following command to target specific platform.
```
ci/ci_acceptance.sh all
ci/ci_acceptance.sh centos
ci/ci_acceptance.sh debian
```
This PR also add a new rake task to build all the artifacts in a single
run called rake artifact:all it make sure we only install the plugin
only once and make the build process faster.
Fixes#5350
This should fix scenarios where `rake bootstrap` fails due to bundler
failures and then some future command like `rake test:core` fails
because there's missing gems.
Fixes#5162
Logstash uses by default in the shell script 1 gig of memory for the
JVM. but when we use rake it uses the default settings of JRUBY and
start a vm 500megs of memory. The recent changes in JRUBY and
JRuby-OpenSSL have increased the base memory and make the installing of
plugins with a OOM issues. This PR make sure the CI scripts and the rake
jruby launch uses the default of 1gig.
Fixes: #5179Fixes#5198
squashed 113 commits by @ph, @colinsurprenant, @jordansissel, @purbon, @jsvd
cleaning the environment.rb
initial work
remove multiples polyglot
force to load rubygems
notice
point to one config
update lock
bootstrap will package the standard application until we have the plugin manager on top of the gemfile
add the gem path to find bundler
fixing dependencies
add gemfiles and bundle
comment platform requiremments in the gemfile
Set `Gem.paths = ...` to the GEM_HOME
Without this, `bin/logstash` will error:
LoadError: no such file to load -- bundler
require at org/jruby/RubyKernel.java:1071
require at C:/Users/jls/Documents/GitHub/logstash/vendor/jruby/lib/ruby/shared/rubygems/core_ext/kernel_require
.rb:55
set_gem_paths! at C:/Users/jls/Documents/GitHub/logstash/lib/logstash/environment.rb:64
(root) at C:\Users\jls\Documents\GitHub\logstash\lib\logstash\runner.rb:8
Patch JRuby's jar_installer.rb with a newer version
jar-dependencies is shipped by default with JRuby. However, the version
it ships with has a bug, and despite upgrading jar-dependencies to
0.1.7, which has the fix, JRuby continues to load the "shipped" version
which has a bug.
This patch will patch JRuby by copying in our own jar_installer.rb from
jar-dependencies master, This patching occurs while unpacking JRuby just
after `vendor:jruby`.
The jar_installer.rb is MIT-licensed and no changes were made.
Add `test:plugins` to test all installed plugins
Tell rspec to do the wildcards instead of trying to make the shell do it.
This fixes test runs on Windows (which doesn't do wildcards like this).
The solution was to tell RSpec to look for all files matching a certain path pattern
within the GEM_HOME.
do not run bundle install twice for test:plugins
Gemfile manipulation classes
Gemfile now in root
install POC with new Gemfile classes
specs for the Gemfile classes
header, some bug fixes
spec header
WIP pluginmanager refactor
generated format
updated .lock
unused file
removed --proxy option
fail elegantly
initial support for update
refactor invoke_bundler, debug output
removed old .lock file
no plugin Gemfile
use clamp error handling
reenable list, some cleanups
support for more finders
refactored using new finders
refactor using is_installed_plugin? and some cleanups
verify valid plugin and update all now only update plugins not all gems
support multiple plugins argument, --force option to bypass validation
list only explicitly installed plugins by default, --all option to include dependencies
support multiple plugins argument
renamed all_installed_plugins to all_installed_plugins_gem_specs and return specs, added comments
remove then
update_gem bug, comments
moved gems as development dependencies
updated .lock file
support for :without
--development option, better output feedback, cleanups
abort when no plugins
cosmetic
param fix, cleanups
removed deprecated .lock files
remove deprecated bundler_install_command and struggling with set_gem_paths
refactored all bundler stuff into LogStash::Bundler
rakelib refactor
refactored bundler code
Bundler.real_fuckin_reset
real_fuckin_reset is now reset_settings, removed unnecessary resetings, cleanups
duplicate plugins requirements merging
cleanups
added vendor:rake, cleanups
broke test tasks into 2 steps, first invoke install then test
rake task name fix
proper error exit code
Freezing the jar-dependencies, ruby-maven, tools
set gem paths on error
renamed TEST_PLUGINS to CORE_PLUGINS, added comments
replace test by core, cleanups
DRYied test tasks
missing gemspec
fixed output
correct image build for artifacts
removed deprecated Gemfiles
fix update with multiple plugins arguments
fix update with multiple plugins arguments
remove deprecated code
implicit begin, explicit block
spec for LogStash::Bundler
remove explit require of rubygems
renamed Environment.set_gem_paths! to bundler_setup!
rename Dsl to DSL
respect to_s contract and return empty string not nil
rename DSL.parse gemfile argument to gemfile_content
better error message
renamed --force to --[no-]verify
refactored exit error handling
use explicit array items in iterators
fix --development switch validation, cleaned bundler_options hash init
renamed is_xxx? methods to xxx?
use direct method call on collection
removed double negative, typo
move maven tools monkey patch into maven_tools_patch.rb
renamed build-image to prepare
fix forgotten argument name change
namespace cleanups
spec files glob pattern
cleanup
cleanup
cleanup
Fix the file-dependencies version to 0.1.5 to fix path issues on windows
monkeypatch Rubygems to silence ffi warning
list all plugin gems by default, new options
adding rake task to get faster feedback loop on windows
refactor bat scripts
Use an unreleased filedependencies gem and skip installing drupal
bump file-dependencies
use the released gem of file-dependencies
Add a set of scripts that simplify: * The necessary setup for the CI test to be executed. * The actuall CI test execution, having a different scripts for each different workflow. This makes the test execution simpler and standard, so changes in internal task don't need big changes in the CI config. It also documents and makes easy for developers to run the tests.
Fixes#2640
refactored test to not depend on STDOUT
create a .rspec file to pass some options used while the code is in the testing environment
add coveralls and simplecov as a development dependencies so we can run coverage tests
remove unnecessary .bundle directory from the artifact
In a release, the .bundle/config has a BUNDLE_PATH setting that can
interfere by misleading the plugin manager into not seeing the
vendor/bundle path.
Fixes#2647Fixes#2475