Skip to content

lavagna - building on maven-java-mysql-nginx-docker for a better world

License

Notifications You must be signed in to change notification settings

Natotela/lavagna-exercise

Repository files navigation

Lavagna

Join the chat at https://gitter.im/digitalfondue/lavagna

Build Status Coverage Status Maven Central Github All Releases Docker Status Docker Layers

Latest stable release is 1.1.2 (2018-07-20)

About

Lavagna is a small and easy to use issue/project tracking software.

It requires Java 8 and optionally a database: MySQL, MariaDB or PostgreSQL. It can be deployed in a Java servlet container or as a self contained war.

See:

Install

Lavagna supports MySQL (at least 5.1), MariaDB (tested on 10.1), PostgreSQL (tested on 9.1) and HSQLDB (for small deploy).

It's distributed in 2 forms:

  • simple war for deploying in your preferred web container
  • self contained war with embedded jetty web server

See the documentation at http://help.lavagna.io

For testing purposes

If you want to test it locally, you can download the self contained war and run:

wget https://repo1.maven.org/maven2/io/lavagna/lavagna/1.1.2/lavagna-1.1.2-distribution.zip
unzip lavagna-1.1.2-distribution.zip
./lavagna-1.1.2/bin/lavagna.sh

Go to http://localhost:8080 and login with "user" (password "user").

See the README in the archive and the documentation at http://help.lavagna.io if you want to customize the scripts and set lavagna in production mode.

Docker

Lavagna is also available as a Docker image so you can try it on the fly:

https://registry.hub.docker.com/u/digitalfondue/lavagna/

Develop

Java and Kotlin

Lavagna runs on a Java 8 jvm. Some parts of Lavagna are made with Kotlin.

IDE Configuration

Use UTF-8 encoding and 120 characters as line width. You will need a Java and Kotlin aware IDE. (Currently tested with intellij and eclipse).

For eclipse: you will need to install the kotlin plugin and add the "Kotlin nature" to the project: Right click on the project -> "Configure Kotlin" -> "Add Kotlin nature"

Javascript

Install npm and run the following script to assure your code follows our guidelines

First ensure that all the dependencies are ok with npm install.

Then, for checking:

npm run-script lint

Fix any error or warning before opening a pull request

Execute

Launch the Web Server:

mvn jetty:run

For launching Web Server + DB manager (HSQLDB only):

mvn jetty:run -DstartDBManager

for launching Web Server with the MySQL database (use the mysql profile):

mvn jetty:run -Pdev-mysql
mvn jetty:run -Pdev-pgsql

For debugging:

mvnDebug jetty:run

For running the test cases:

mvn test

For running the test cases with MySQL or PostgreSQL:

mvn test -Ddatasource.dialect=MYSQL
mvn test -Ddatasource.dialect=PGSQL

For running with jetty-runner:

mvn clean install
java -Ddatasource.dialect=HSQLDB -Ddatasource.url=jdbc:hsqldb:mem:lavagna -Ddatasource.username=sa -Ddatasource.password= -Dspring.profiles.active=dev -jar target/dependency/jetty-runner.jar --port 8080 target/*.war

When adding new file, remember to add the license header with:

mvn com.mycila:license-maven-plugin:format

Angular perfs

Use the following stats for keeping an eye on the performances:

Documentation

The documentation is written using stampo (see https://github.com/digitalfondue/stampo). It currently reside in src/main/stampo .

For building the doc:

mvn clean stampo:build

The output will be present in target/generated-docs

For testing the documentation run

mvn stampo:serve

And go to http://localhost:45001/

Vagrant

In order to make it easier to tests on different databases we included 3 Vagrant VMs. Make sure that you have installed Vagrant and VirtualBox before continuing.

Initialization

Fetch the submodules:

git submodule update --init

If you are under windows you need to ensure that the pgsql submodule is not in a broken state, double check that the file puppet\modules\postgresql\files\validate_postgresql_connection.sh is using the unix end of line (run dos2unix).

To run the tests with Vagrant boot the VMs with:

vagrant up [optionally use pgsql / mysql to boot only one VM]

Once that the VM is up and running run the tests:

mvn test -Ddatasource.dialect=PGSQL / MYSQL

Connecting manually:

PGSQL: localhost:5432/lavagna as postgres / password

MySQL: localhost:3306/lavagna as root

Notes about databases

The application uses UTF-8 at every stage and on MySQL you will need to create a database with the collation set to utf8_bin:

CREATE DATABASE lavagna CHARACTER SET utf8 COLLATE utf8_bin;

Code Coverage

Jacoco plugin is used.

mvn clean test jacoco:report

-> open target/site/jacoco/index.html with your browser

About Database migration

Can be disabled using the following system property: datasource.disable.migration=true

Check for updated dependencies

mvn versions:display-dependency-updates
mvn versions:display-plugin-updates

About

lavagna - building on maven-java-mysql-nginx-docker for a better world

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published