dashorst opened a new issue, #1749:
URL: https://github.com/apache/wicket/issues/1749

   Restaging the 11.0.0 release candidate turned up three faults in what 
`release.sh` generates: `release-vote.txt`, `release-announce.txt`, 
`promote-$version.sh` and `revert-$version.sh`. All three had to be corrected 
by hand before the vote mail could go out.
   
   **1. The staging repository ID can be the wrong one.**
   `release.sh` (line 505) takes the ID from `rc-list`, keeping every 
`orgapachewicket-*` line that is not `CLOSED`:
   
   ```
   stagingrepoid=$(mvn ...:rc-list ... | grep -v "CLOSED" | grep -Eo 
"orgapachewicket-[0-9]+")
   ```
   
   That isn't necessarily the repository this deploy uploaded to. On the 11.0.0 
restage the generated files named `orgapachewicket-1280`, while the artifacts 
were in `orgapachewicket-1283`. The vote mail would have pointed voters at a 
repository that doesn't exist, `promote-11.0.0.sh` would have tried to release 
it, and `revert-11.0.0.sh` would have tried to drop it. If more than one Wicket 
repository is open (another release line being staged at the same time, or an 
implicitly created one), the variable holds several IDs. If none is open, it is 
empty. The script carries on either way. It should identify the repository that 
this deploy created, and stop if it can't find exactly one.
   
   **2. Rerunning a version duplicates the changelog in the vote and announce 
mails.**
   `generate_signatures_from_release` appends the changelog section to 
`/tmp/release-$version-sigs.txt` with `>>`, and nothing ever empties or removes 
that file. A second run of the same version, after a revert, appends a second 
copy, so `release-vote.txt` and `release-announce.txt` list the whole changelog 
twice. The file should be written fresh on every run (a `mktemp` file, or 
truncated first). The revert shouldn't depend on it being removed.
   
   **3. The generated revert script continues after its local steps fail.**
   `revert-$version.sh` starts with `git checkout $GIT_BRANCH`. When the 
generated files on the build branch have local modifications, the hand fix for 
(1) for example, the checkout refuses to switch. Then `git branch -D` fails 
because the branch is still checked out. The script has no `set -e`, so it goes 
on to delete the remote branch and tag, `svn rm` the dist area and drop the 
Nexus repository, and leaves the local branch and tag behind. The generated 
scripts should stop at the first failing step. `promote-$version.sh` has the 
same structure and should be checked for the same thing.
   
   Follows up on #1721.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to