Example of a Kotlin-based Quarkus application containing real world examples (CRUD, auth, advanced patterns, etc) that adheres to the RealWorld API spec.
The project currently runs on Java 11, however the latest LTS is Java 21. Therefore it would be nice to run this realworld example on the latest Java LTS. The requirements are:
Upgrade Kotlin version to latest stable release that supports 21 (1.9.20)
Upgrade Gradle JVM target to 21. (Which means upgrade Gradle to 8.4)
Upgrade Docker files to use Java 21 openjdk.
Upgrade CI pipeline to build and test the project to Java 21.
The CICD pipeline runs whenever any changes are pushed...
It would be desirable to set the CICD pipeline to ignore non-sourcecode changes. This is possible using the excluding path workflow syntax. However, it would a "deny all, permit few" approach would be better/safer, see: Including paths workflow syntax
It would be nice to have a linter to keep the project as consistent as possible. A widely popular Kotlin linter is Pinterest's ktlint. It has a built-in rule sets, formatter tasks, reporters, and allows extension with custom rule sets and reporters.
Requirements
Set CI to run the linter after tests has passed. (must be a Makefile recipe)
Provide an .editorconfig to allow IDE users adhere to the standards for a smoother dev experience.
Prepare your project for contributions by following these best practices:
Add the “hacktoberfest” topic to your repository to OPT-IN TO HACKTOBERFEST and indicate you’re looking for contributions.
Apply the “hacktoberfest” label to issues you want contributors to help with in your GitHub or GitLab project.
Add a CONTRIBUTING.md file with contribution guidelines to your repository.
Choose issues that have a well-defined scope and are self-contained.
Adopt a code of conduct to create a greater sense of inclusion and community for contributors.
Be ready to review pull/merge requests, accepting those that are valid by merging them, leaving an overall approving review, or by adding the “hacktoberfest-accepted” label.
Reject any spammy requests you receive by labeling them as “spam,” and any other invalid contributions by closing them or labeling them as “invalid.”
Instead of manually updating the dependencies and their versions, it would be desirable to integrate the Gradle refreshVersions dependency within the CICD pipeline. For further details, please see: Gradle refreshVersions
Requirements:
Add the refreshVersions dependency to the project.
However, please amend the workflow file to be a manually triggered instead of a weekly dispatch trigger.
Please ensure that the build CI passes if you upgraded any dependencies (i.e. resolve any breaking changes if you want to upgrade any versions as part of this ticket)