Work report for the Conventional Commits Plugin for Jenkins

    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 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