GEOS-DEV / GEOS

GEOS Simulation Framework
GNU Lesser General Public License v2.1
222 stars 89 forks source link

Ease the process of code versioning #3035

Open untereiner opened 8 months ago

untereiner commented 8 months ago

What is the requested feature? Automate the code versioning process to have effective versioning of the code and maybe releases.

Is your request related to a specific problem? I would like an easy, human readable, comparable way to discriminate versions of the public API (i.e. represented as xsd files https://github.com/GEOS-DEV/GEOS/issues/2971). Not sure a commit hash is the right way.

Describe the solution you'd like I was thinking to something close to semver.

But, doing it manually is painful and time consuming. So what about using a github-action like this one: https://github.com/ietf-tools/semver-action. It will flow seamlessly for those using commit prefixes. For the others, we could simply avoid the patch part and adopt a simple algorithm like this one:

If the PR needs a rebaseline (xsd change)  then bump major part
else bump minor part.

This action will make the next version available as a variable in the pipeline. It should then be easy to patch the CMakeLists, a header file, xsd schemas, or whatever...

What to you think ?

Describe alternatives you've considered n.a.

Additional context n.a.

Work steps:

  1. 3043

  2. 3266

  3. Add semver-action to compute next version based on semver
    1. Add version to code (CMakeLists, GEOS_VERSION in c++, version tag in schema)
    2. stop pushing the schema in PRs / generate it at merge step via the CI
MelReyCG commented 8 months ago

So, if I iterate on my branch, the version number will not change. To improve this version number, I think we should add a build part (As semver seems to allow it).

MelReyCG commented 8 months ago

We should also keep this issue in mind.

TotoGaz commented 8 months ago

@castelletto1 What do we want to do regarding this?

untereiner commented 8 months ago

if #3043 is merged, it will be easy to add versions by following the semantic conventions of the merged commit messsages. The semver-action will roll-out the commit messages between the tip and the previous release and analyse the prefixes to compute a new version number