Back to blog

Work report for the Conventional Commits Plugin for Jenkins

Aditya Srivastava
Aditya Srivastava
August 28, 2021

GSoC

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

Resources

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

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 link:https://app.gitter.im/#/room/#jenkinsci_conventional-commits-Gitter channel or start a discussion on community.jenkins.io.

About the author

Aditya Srivastava

Aditya Srivastava

Aditya is a curiosity driven individual striving to find ingenious solutions to real-world problems. He is an open-source enthusiast and a life long learner.

Discuss