.. _build_process: ************* Build Process ************* Build plugins ````````````` Reckon plugin ------------- We use the ``reckon plugin`` for gradle to control our project version. The three scopes are ``major``, ``minor`` and ``patch``. The three stages are ``beta``, ``rc`` and ``final``. These are configured in the ``build.gradle`` file and in the ``jenkinsfile`` as parameters. If you want to do a manual build and create a git tag, e.g. use the command ``./gradlew reckonTagCreate -Preckon.scope=major -Preckon.stage=final`` to build the next major version and tag. You can find additional information and documentation under `reckon plugin `__ . Docker plugin ------------- To create and push the docker images we use the ``docker gradle plugin``. During the build process we push up to four different tags for an image. These are the following tags: - ``develop``: this tag marks the image associated with the latest develop commit - ``latest``: this tag marks the image associated with the latest released version - ``.-latest``: this tag marks the image associated with the latest released version in its major and minor range - ``..-``: this tag marks the image associated with the latest commit on any branch You can find additional information and documentation under `gradle docker plugin `__ Pipeline behaviour ------------------ To trigger a release build we currently use a parameterized trigger in the jenkins ui. You can manually start it and choose the scope and stage of the build. These parameters will then be used by the jenkins stages to create all steps necessary to create a release version, create a new git tag, push the git tag and push the docker tags accordingly. Build tests ----------- If you want to create more tests for your build logic you can find some example tests in the ``io/ox/proxy/build/test`` directory.