Contribute

Feel free to contribute in any way you like docs, suggestions, features, fixes tests.

Design

To help you better understand how dekorate works under the hood, please check the dekorate design.

Contributor guidelines

To make both your and our life easier here are some tips:

editorconfig

To make sure that regardless of IDE/editor everyone uses the same settings we use editorconfig. Just make sure that you have the editorconfig plugin for your editor installed.

configure IDE

pull request scope

Keep your pull requests as small as possible. Please, avoid combining code with indentation changes.

semantic messages

Please use semantic commit messages.

Tests and documentation are not optional

  1. All pull requests must contain unit tests so don’t forget to include tests in your pull requests. The unit tests should be added in the corresponding src/test folder of the modified module.
  2. When fixing an issue a test case should be added in the tests folder. Navigate to the tests folder and add a new folder named as follows: feat/issue-github_issue_number-issue_description, then add the code inside it.
  3. Check if some of the examples should be modified.
  4. Also don’t forget the documentation (reference documentation, javadoc…).

Versions and Branches

The current version of dekorate is <version>2.0.0</version>.

What’s changed in 2.x

Most of the changes that happend inside 2.x are internal and are related to the maintainance of the project.

New features

Annotation naming

Dropped modules

The following features were dropped:

Dropped dependencies shadowed uber jar

Earlier version of dekorate used a shadowed uberjar containing all dependencies. As of 2.0.0 the dependencies uberjar is no more. Downstream projects using dekorate as a library will need to switch from io.dekorate.deps.xxx to the original packages.

Component naming

Earlier version of dekorate used names for its core components that we too generic. So, in 2.0.0 the name changed so that they are more descriptive. Naming changes:

Branches

All dekorate development takes place on the master branch. From that branch current releases are created. Bug fixes for older releases are done through their correspnding branch.

Pull request guidelines

All pull requests should target the main branch and from there things are backported to where it makes sense.

Frequently Asked Questions

IntelliJ fails to compile dekorate with Cannot resolve method 'withName(java.lang.String)' and this kind of errors.

In order to get Dekorate built on IntelliJ you need to manually add generated sources as module sources.

How do I tell dekorate to use a custom image name?

By default the image name used is ${group}/${name}:${version} as extracted by the project / environment or explicitly configured by the user. If you don’t want to tinker those properties then you can:

Using annotations

Add @DockerBuild(image="foo/bar:baz") to the your main or whatever class you use to configure dekorate. If instead of docker you are using jib or s2i you can use @JibBuild(image="foo/bar:baz") or @S2iBuild(image="foo/bar:baz") respectively.

Using annotations

Add the following to your application.properties

dekorate.docker.image=foo/bar:baz

Using annotations

Add the following to your application.yaml

dekorate:
  docker:
    image: foo/bar:baz

Release Guidelines

Please, check our release guidelines