Work report for the Conventional Commits Plugin for Jenkins
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.