GithubHelp home page GithubHelp logo

kryndex / rudder-plugins Goto Github PK

View Code? Open in Web Editor NEW

This project forked from normation/rudder-plugins

0.0 2.0 0.0 339 KB

All Rudder public plugins in one repository. Licenses are by-plugin.

Makefile 2.33% Shell 0.14% PLpgSQL 0.90% HTML 11.10% CSS 5.59% JavaScript 3.98% Scala 75.95%

rudder-plugins's Introduction

rudder-plugins

This is the repository for plugins for Rudder: Continuous configuration for effective compliance.

https://www.rudder-project.org/site/documentation/

Repository structure

The repository is organized with one directory for each plugin under repository root directory.

Each plugin's root directory is named with the plugin "shortname identifier", i.e the plugin name minus 'rudder-plugin-" prefix.

Each plugin build information are grouped in file build.conf in plugin root directory.

Branch versionning and compability with Rudder versions

Plugins are linked to Rudder main version, so we retrieve in rudder-plugins the same branch structure than in rudder. Moreover, one needs to always compile and use a plugin for the corresponding Rudder version:

- master (plugin compatible with Rudder next version, i.e developing branch)
- branches/rudder/3.1 (plugins compatible with Rudder 3.1)
- branches/rudder/4.1 (plugins compatible with Rudder 4.1)
- etc

This branch scheme allows to accomodate API changes between main Rudder versions.

Most of the time, there is no need to recompile a plugin for the corresponding Rudder minor version, so that plugins compiled on branch branches/rudder/4.1 should be compatible with all Rudder 4.1.x versions.

It may happens that at some point in the Rudder maintenance cycle, a Rudder minor version introduces a breaking change in a plugin API or a binary incompability in a plugin ABI. In such a case, we will explain which plugin versions are compatible with which Rudder versions in plugin readme file.

Plugin version and Tag convention

Plugin versions are composed in two parts separated by a -:

  • the Rudder corresponding version (without the minor number),
  • the plugin own version in format X.Y(.Z) where the Z part is optionnal.

For example, the datasources plugin, in own version 1.1, for Rudder 4.1 will get version: 4.1-1.1.

This version is used to postfix plugin package name.

Each plugin follow his own development pace, and so there is no release cycle for plugins. Each time a plugin reaches a new step, a version for it is published by changing version information in its build.conf file. The related commit is tagged with the convention: pluginShortName-pluginVersion.

You can get all the versions for a given plugins with the git tag --list command. For example, for the datasources plugin:

$ git tag --list 'datasources-*'

# results
datasources-4.1-0.1
datasources-4.1-0.2
datasources-4.1-1.0
datasources-4.1-1.1
datasources-4.2-1.1

Building

All plugins share the same build infrastructure based on Make. You will also need ar, and for any plugin with scala code (i.e most of them), you will also need maven in version 3.2 or up plus Java 8 JDK tools (javac, jar, etc) and standard make tools. For information, this the list of package that need to be installed on a minimal linux distribution:

openjdk-8-jdk maven binutils make git-core xz-utils

To build a plugin package, go to the plugin directory and type:

git checkout tag-corresponding-to-plugin-vesion
make clean && make

After compilation, you will find in plugin root directory (i.e at the same level than the Makefile file) the plugin package: pluginShortName-pluginVersion.rpkg.

This package can then be transfered to a Rudder server and installed with the command:

/opt/rudder/bin/rudder-pkg install-file /path/to/pluginShortName-pluginVersion.rpkg

Licensing

License are by-plugin and the license for a given plugin is specified in the LICENSE file in its plugin directory.

rudder-plugins's People

Contributors

vincemacbuche avatar fanf avatar peckpeck avatar ncharles avatar amousset avatar raphaelgauthier avatar jooooooon avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.