Project goal: Automatically determine the next semantic version for a repository
Skills to study/improve: Java, Semver
As the CI/CD world is moving more towards automation and minimal human interaction, the ability to full automate a release, including the determination of the "next" release version becomes desirable.
Semantic/Conventional commits is one way of programmatically understanding the changes made between releases
For a existing project released at 1.0.0
, the following commit messages would bump the version as follows:
Commit Message | Next Version |
---|---|
|
|
|
|
|
|
|
|
This project idea proposes to implement a Jenkins plugin which will allow the nextVersion
to be determined from the commit log.
The project requires the student to start with plugin development from scratch and then work with understanding how to integrate this plugin into a Jenkins pipeline.
In the beginning, the student can work on understanding the Jenkins plugin development by writing code for creating a simple Build Step which determines the current version from the latest tag.
This can be extended in the future to support other methods of determining the version e.g. Chart.yaml
/ pom.xml
/ build.gradle
or package.json
The project requires the student to start with plugin development from scratch and then work with understanding the conventional commits messages.