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.
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.
- 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.
- Gatsby.
- Spring MVC + Thymeleaf.
- 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
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.
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.