ComPWA / expertsystem

Rule based particle reaction problem solver on a quantum number level
http://expertsystem.rtfd.io
1 stars 3 forks source link

Standardize and automate release flow #68

Closed redeboer closed 4 years ago

redeboer commented 4 years ago

Problem description

Have had a few times that pushing a tag results in a failed deploy job, e.g. https://travis-ci.com/github/ComPWA/expertsystem/jobs/350476070, because I forgot to bump the version in the setup.py file. There are better tools for that, like bumpversion.

Also, we haven't really thought about how to deal with releases. Linear commit history already provides some sort of clean versioning, now it's just a matter of summarising the most important changes for each release. For now, I follow the release style that tensorflow uses. Although we're unclear about Semantic Versioning.

Summary

This differs from https://github.com/ComPWA/expertsystem/pull/70 in the sense that in this repository we want to try out and illustrate some tools for a nice release flow. In the PWA Pages we describe that release flow after it turns out to work well. The PWA Pages then serve more as a guideline.

Some resources

spflueger commented 4 years ago

Regarding the version of setup.py: The current situation is not ideal, but its fairly ok. Not sure if bumpversion is foolproof. Some kind of hook in github would almost be best, that has access to the tag stage and will deny a tag if the version does not match. Don't know what state of the art is here.

Regarding the versioning: Semantic versioning is nice and I would love to do that (to get some hands on experience with this). But for me that would imply that you keep several major version branches that are maintained simultaneously. So I think that will add to much workload.

spflueger commented 4 years ago

Lets turn this into an ADR, to keep our decision fixed. I think this should almost be ComPWA global, decision...

redeboer commented 4 years ago

If it's global, imho the best place would be https://github.com/ComPWA/PWA-pages For instance, a section with thoughts on linear commit history (particularly its use in a research settings), how that facilitates the release flow (the linear commit messages neatly summarise changes), how to tag and bump a version (as you say, probably best through a git hook), and how to draft a release note.

spflueger commented 4 years ago

Yeah exactly. That was my idea. Do you think this decision should be global or project local?

redeboer commented 4 years ago

So a description of the conventions can best be placed in some global place and I can only think of the PWA Pages (even if they're experimental). Git hooks and all have to be implemented for each repo, ofc, but the expertsystem can serve as a nice try-out (particularly with the upcoming pre-releases).

spflueger commented 4 years ago

I meant if the conventions we decide based on the versioning will apply to all subprojects within ComPWA? Also we should keep in mind that tensorwaves will be closely coupled to AmplitTF and zfit.

redeboer commented 4 years ago

Maybe 'guideline' is a better word than 'convention' here. Anyway, main point is: create an ADR under the expertsystem or under the PWA Pages?

redeboer commented 4 years ago

Now that #102 is through, I think this issue can be fixed by creating something like a __version__ file at the script stage of the Travis deploy job. That file can then be used in the setup.cfg (we have to make sure this doesn't cause errors for users). So the version determination would happen somewhere this stage: https://github.com/ComPWA/expertsystem/blob/a438784a0e65a5e86e62facd05493936892e1fd1/.travis.yml#L56-L65 And we have to make sure this job is only performed when triggered by a tag.

spflueger commented 4 years ago

https://pypi.org/project/setuptools-scm/ this cant help?

redeboer commented 4 years ago

Yes good one, looks promising, I'll check it out later.