/lavagna

Lavagna: issue tracker/project management tool

Primary LanguageJavaGNU General Public License v3.0GPL-3.0

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.0.7.3 (2017-03-06)

Latest pre-release is 1.1-M3 (2017-02-20)

About

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

It requires Java 7 or better 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.0.7.3/lavagna-1.0.7.3-distribution.zip
unzip lavagna-1.0.7.3-distribution.zip
./lavagna-1.0.7.3/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/

On openshift

See the guide at http://lavagna.io/help/openshift/

Develop

Java and Kotlin

Lavagna runs on a Java 7 jvm, but requires Java 8 to build. (due to our documentation library). 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"

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