Skip to content

Use version from annotated tag #1

Description

@mockitoguy

There are teams that prefer to cut release "on demand", rather than with every change on master (example: linkedin/li-apache-kafka-clients, mockito-kotlin). Those teams are not supported cleanly by our plugin.

Problem statement: how do we enable teams to release on demand and provide automated changelog?

❓ Options

  • a) keep shipkit-auto-version simple, let other plugins solve this use case. Problem: allegro/axion-release-plugin does not expose previous version information cleanly and it is necessary for automated changelog.
  • b) enhance shipkit-auto-version to support picking the version directly from annotated tag.

💡Solution discussion:

  • a) is preferred to keep shipkit-auto-version laser focused and reduce future maintenance. However, I was not able to cleanly enhance axion plugin to expose previous version information.
  • b) can be designed as a simple enhancement to shipkit-auto-version ⬇️

🌱 Implementation overview:

  • missing version.properties file or missing version property is allowed and signals simplified behavior of our plugin (currently, the file and property are required).
  • our plugin deducts current version this way:
    • if we checked out a tag (git checkout 1.2.3), pick that version: 1.2.3
      • To find out if git repo is checked out to a tag, we can run git describe --tags
    • if we checkout out a branch (git checkout main), pick the highest tag
    • no counting commits logic is necessary in this simplified behavior

🌎 Long term goals:

  • should we deprecate functionality ⬆️ when axion plugin supports previous version information? No. Shipkit-auto-version will continue to support the basic use case described in this ticket. We endorse axion plugin for complex use cases not supported out of the box by shipkit-auto-version. However, we encourage build experts to keep their automation simple (KISS 💋).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions