External dependencies break, network traffic gets dropped, GH outages, etc can cause builds to fail. Some means to manually rerun certain jobs would be nice. My current workaround is to add a trivial commit to cause the rebuild, then rebase the commit off the branch before merging.
Maybe a command line tool to resend the build message to Jenkins? Could be run as a one-off command from leeroy: leeroy rebuild --project=FOO --pull-requst=32
leeroy rebuild --project=FOO --pull-requst=32
Sounds good, and is something I would like myself. I'll probably add an HTTP endpoint for it, and pull in Flask-Script so we can have a cli tool for it like you suggest.
Alternative idea: having it serve a single webpage enumerating repos and PRs with some 'click to rerun' UI would also work. Something like the Janky interface: Probably a bit more work than a cli tool, though.
I've successfully gotten a job to rerun by spoofing the JSON blob sent by github, no additional code in Leeroy necessary.
The following is enough information:
Rather than adding new code to rerun jobs, a dashboard (independent or served from leeroy) could enumerate open PR's and allow sending of spoofed events to rerun jobs.
Initiate build when PR is reopened.
When a PR has been reopened, kick off another build for the commit(s). This
also helps address issue #9 as you can close/reopen a PR to force a rebuild.
@lonnen does #25 help with this?
@davedash #25 addresses the minor case. More often we have jobs that failed for spurious environmental reasons (bad response from pypi mirror, jenkins out of disk, etc) that need a real rerun.
@lonnen Have you tried the Jenkins Rebuild plugin?
IMO, that works better, it just rebuilds whatever build you are looking at with the exact same params.
I have not. Most of use reroy, which has some hardcoded constants specific to my leeroy instance but could easily be forked. That's been a good 80/20 for now.
Yeah, we use the rebuild plugin and it's very helpful when a build fails for some transient reason.
@joeshaw well I just discovered if the parameters were screwed up (my fault) then the retry command isn't that helpful unless you know what to change =) So I wrote this to clean up my mess.
I created a hubot plugin that will rerun jobs as well. It's not flexible as leeroy so you'll need to hack it a little if you use github enterprise. Gists don't have pull requests, but I'll happily update it if anyone wants to jump through that hoop and send me the new version.