Skip to content

jmigueprieto/ticket-linter

Repository files navigation

STORY LINTER

Build Status

Story Linter is a Jira Cloud application built with Atlassian Connect (checkout this video for a quick intro on Atlassian Connect)

As a linter analyzes source code to identify and report issues, like potential bugs, stylistic errors and suspicious constructs, this Jira add-on will analyze your user stories and show warnings or alerts if any story does not follow a set of rules.

This is a WORK IN PROGRESS. The app is not yet public in the Atlassian Marketplace. But, we are looking for feedback, so if you want to test it and share your experience with us, please email me.

Screenshots

Screenshot

Screenshot

Screenshot

User Story Expected Format

The description of your Jira User Stories should be written following the well-known User Story template (see: User Stories with Examples and Template) and include an Acceptance Criteria which should be a bullet list of items that must be fulfilled to consider the story as done.

“As a [persona], I [want to], [so that].”

AC
- Acceptance Criteria 1
- Acceptance Criteria 2

E.g.

Sample User Story


Stack

Backend

  • Kotlin.
  • Sprint Boot 2.3.0.
  • MySQL 8.0.x or H2.
  • Atlassian Connect for Spring Boot Handles tasks like JWT authentication and signing, persistence of host details, installation and uninstallation callbacks, and serving the app descriptor.

Frontend

  • Gatsby.
  • Spring MVC + Thymeleaf.

MySQL setup

  • Create a MySQL database (or use an existing one, of course)
docker pull mysql:8.0.20
docker run --name mysql-covidio -p 3306:3306 -e MYSQL_ROOT_PASSWORD='pazz' -e MYSQL_ROOT_HOST='%' -v /Users/jmpr/ticket-linter/data/mysql:/var/lib/mysql -d mysql:8.0.20
  • Create a database schema covidio
create schema covidio;
  • Set an app user user
CREATE USER 'linter-app'@'%' IDENTIFIED BY 'T0P_S3CR3T';
GRANT ALL PRIVILEGES ON covidio.* TO 'linter-app'@'%' WITH GRANT OPTION;
  • Datasource configuration e.g. application-local-${profile}.yml:
spring:
  jpa:
    generate-ddl: true
    database-platform: org.hibernate.dialect.MySQL8Dialect
    show-sql: true
    hibernate:
      ddl-auto: update
  datasource:
    url: jdbc:mysql://localhost:3306/covidio
    driverClassName: com.mysql.jdbc.Driver
    username: linter-app
    password: T0P_S3CR3T

Running the backend

SPRING_PROFILES_ACTIVE=local-${profile} ./gradlew backend:bootRun

The database schema will be created/updated once you run the app.

If Liquibase lock remains stuck: https://stackoverflow.com/questions/15528795/liquibase-lock-reasons.

Building a jar

To build a jar with the frontend as a static resource, run:

./gradlew frontend:build copyFrontend backend:build

This is how the jar that's running in Heroku (https://ticket-linter.herokuapp.com/) is built.

About

Jira Cloud application that analyzes stories/issues and reports violations

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published