scijava / scijava-scripts

Shell scripts for scientific projects written in Java
The Unlicense
15 stars 16 forks source link

Redesign bump-pom-scijava logic to be foolproof #5

Closed hinerm closed 7 years ago

hinerm commented 10 years ago

The required steps to bump and release new versions of pom-scijava, using the Bump-POM-SciJava script and corresponding bump-pom-scijava.sh, is somewhat convoluted and highly error prone when breaking changes are involved. Basically, we would like to move to a system where we can lean on the tools to help us decide what needs to be done (e.g. when there are breaking changes, what components need to be updated) and avoid ever needing to manually edit pom-scijava (e.g. to preemptively account for what versions of software will be released).

Thus a new overall workflow is proposed:

There will be a single bump-pom-scijava Jenkins job, with no parameters. It will perform the following operations:

This will create a simple workflow where we just run bump-pom-scijava, respond to the feedback it gives us about failing projects, perform the necessary updates, and keep running bump-pom-scijava until everything passes. There is no ambiguity about what flags need to be selected in which circumstances, and no need to ever manually edit pom-scijava, or spend time trying to figure out what components need to be updated.

@dscho @ctrueden : any thoughts on feasibility, concerns, etc?

ctrueden commented 10 years ago

Thanks @hinerm, I think we need a process like this. It will be much less error-prone. It will remove the hardcoded list of SciJava-based projects from the bump-pom-scijava script. We can glean the relevant Git repositories from the SCM entry of each POM. We can also lean on Maven to do the dependency resolution, by synthesizing an aggregator POM at the top level. Then we only need to run mvn once at the very top level to test everything with the correct dependency order—assuming all projects have first been brought into line with the same pom-scijava version of course.

ctrueden commented 10 years ago

I completed an initial version of a script to scan the SciJava software stack: 8507f4b805fc855491d6fe6057426dab3b9ed3e3

ctrueden commented 10 years ago

/cc @joshmoore

dscho commented 10 years ago

How about making this part of a (to-be-created) scijava-maven-plugin?

ctrueden commented 10 years ago

@dscho: Yes, there are various bits of this work that would be perfect as part of such a plugin, as we discussed the other day.

ctrueden commented 7 years ago

The bump-pom-scijava script was retired earlier this year (e694e5eb0d230c973fe3690e9a36e9bf1cbc1fe8). We have the melting-pot to test for component version coherence. We have status.scijava.org to report which components are up to date, which could be incremented, etc. It is not always the case that pom-scijava should reflect the latest releases of things—the central point of a BOM is to list compatible versions, not necessarily latest versions, of components.

Since pom-scijava is the unified BOM these days, we are OK manually updating version properties as needed every so often.