This blog post is part 2 of the Introducing the Conventional Commits Plugin blog.
The goal of this blog is to showcase the work done during the Google Summer of Code 2021 coding phases.
Please refer the part 1 of the blog for a detailed description of the plugin.
Abstract
The project/plugin aims to fully automate a release process.
The plugin tries to achieve this goal by automatically determining the next semantic version based on commit messages.
There were 2 coding phases in the GSoC 2021. I call the first phase - "Read" and the 2nd phase - "Write", let’s see why.
Phase 1: Read
In this phase, the "read" aspect of the plugin was enhanced. The plugin supported multiple project types (Maven, Gradle, NPM, Helm, Python, Make) and was able to read current version information from the configuration files of the supported project types.
Deliverables
Support multiline comments
Support reading the current version from a maven pom.xml
Support reading the current version from a build.gradle
Support reading the current version from a Makefile
Support reading the current version from a package.json
Support reading the current version from a helm Chart.yaml
Phase 2: Write
In this phase, some work was done in extending the "write" aspect of the plugin. A provision (optional parameter) to write back the calculated next semantic version to the configuration files of projects was added to the plugin. Along with that, the plugin now can append "Pre-Release" and "Build Metadata" information to the calculated semantic version.
Deliverables
Add prerelease information to the calculated/new version
Add build metadata to the calculated/new version
Write next version in pom.xml
Write next version in package.json
Handle version mismatch between config file and latest tag
Resources
Using optional parameters in the Conventional Commits Plugin
Next Steps
Write back version for Python project.
Write back version for Gradle project.
Handle remote workspaces
Feedback
We would love to hear your feedback & suggestions for the plugin.
Please reach out on the plugin’s GitHub repository, the Gitter channel or start a discussion on community.jenkins.io.