Since nobody on our team had excess time to devote to this, we ended up throwing together a quick solution.
The Process
- Install and setup the All Changes plugin for Jenkins.
- When we release, we use "build promotion" system which puts stars next to the previous build, so we can easily see the build# looking at the history.
- Copy and paste the relevant output from All Changes into something like notepad++ (human-diff'ing ftw!)
- Run a regex find/replace. Search on the regex string, replace with an empty string. (below -- there's the big-bang option or its broken up for understandability.)
- Manually organize and release in whatever form is the current agreed up standard.
Everything at once
(\s*\(commit:\s[a-z0-9]{40}.\s..detail)|([\r][\n]#.*\B[\r][\n][\r][\n])|(^[ \t]*)
Remove commit hash\s*\(commit:\s[a-z0-9]{40}.\s..detail
Remove time and surrounding line breaks[\r][\n]#.*\B[\r][\n][\r][\n]
Removing leading whitespace: ^[ \t]*
The Analysis
Pros:
- Effective overall
- Relatively quick to implement
Cons:
- Not fully automated.
- Need to revert to commit id if you release from multiple Jenkins jobs.
- All Changes history only appears to go back as far as the Jenkins job (I could be mistaken about the specifics of this--I just remember minor grievances with something like this at one point.)
As a whole, the cons are somewhat "the nature of the beast." I'd love to read some other solutions. (For when we have that elusive thing called Time, of course!)