Release Guard is a Spring Boot application that helps validate Jira issue readiness for releases by checking blocking status and providing simplified issue information.
- Retrieve simplified Jira issue information
- Check if an issue is blocked by unresolved dependencies
- REST API for integration with CI/CD pipelines
- Custom exception handling with proper HTTP status codes
- Comprehensive test coverage (unit & integration tests)
- Kotlin 1.9.25
- Spring Boot 3.4.4
- Gradle 8.13
- JUnit 5 & MockK for testing
- Jackson for JSON processing
- Java 21 JDK
- Gradle 8.x
- Valid Jira account with API access
-
Clone the repository:
git clone https://github.com/jhonatademuner/release-guard.git cd release-guard -
Configure Jira credentials in src/main/resources/application.properties:
jira.instance-url=https://your-jira-instance.atlassian.net jira.email=your@email.com jira.api-token=your-api-token
-
Build the application:
./gradlew build
-
Run the application:
./gradlew bootRun
Request:
GET /api/jira/issue/{issueKey}Response:
{
"key": "JIRA-123",
"summary": "Implement security layer",
"status": "IN_PROGRESS",
"linkedIssues": [
{
"key": "JIRA-456",
"type": "BLOCKS",
"status": "TO_DO",
"linkDirection": "INWARD"
}
]
}Request:
GET /api/jira/issue/{issueKey}/block-statusResponse:
true if unblocked, false if blocked
Run all tests:
./gradlew testTest coverage includes:
- Jira client integration tests
- Controller layer tests
- Service logic tests
- Exception handling tests
- Model assembler tests
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (git checkout -b feature/amazing-feature)
- Commit your changes (git commit -m 'Add amazing feature')
- Push to the branch (git push origin feature/amazing-feature)
- Open a Pull Request
💡 Please ensure all tests pass and include new tests for any added functionality.
This project is licensed under the MIT License - see the LICENSE file for details.