Bors try doesn't wait untill last build finishes?

I’m just starting to try-out Bors for our open source project. I’ve read that bors r+ is doing batch jobs in the staging branch, using a queue. But when commenting bors try on several pull requests, it seems that the trying branch gets overwritten by the new test, even when Travis didn’t finish the last one.

This results in some interesting build fails, as Travis was still booting and the commit for which it was booting disappeared. An example from the Travis logs:

$ git checkout -qf 093d7037046359b1d8fe8c7d0ef27f60acc11884
fatal: reference is not a tree: 093d7037046359b1d8fe8c7d0ef27f60acc11884
The command "git checkout -qf 093d7037046359b1d8fe8c7d0ef27f60acc11884" failed and exited with 128 during 

One last note: I’ve configured bors-ng in the dashboard to use a branch called “testing” for the try command. Don’t know if this matters.

This is a problem that a few other users have run into as well. I’ve opened a pull request to fix it; as soon as I’ve tested it, it’ll switch try to queuing the same way regular r+ does.

In your case, though, I have to ask: you’re working on Mailu, which uses Travis, right? Then why are you using bors try, scripted from another bot to run immediately after a pull request is opened, instead of turning on Travis’s built-in support for automatically building pull requests?

Okay, it’s merged.

Thanks for the fix and sorry for the very late reply, but in case you are still curious "why":

Mailu is a mail distribution of many different software. There is a high complexity in testing all possible inputs and outputs. Basically, Travis is just able to send some internal mails around and check obvious crashes of the containers, that's it.

A big part of our review process requires installing a server into (semi-) production and verify its workings. It needs external connectivity, like DNS setup, open relay checking and much more. Some PRs need additional configuration to be verified etc.

In the past reviewers needed to do a git clone to a test server, building Docker images and run them. In an attempt to decrease this effort, I wanted to have the Docker images ready to be pulled by any of our reviewers. This way they can just flip between different PRs without all the hassle.

Travis disables using of secure environment variables in a PR. So it can't push to a Docker registry. So this is where Bors came into the picture :D. By running the test on a dedicated branch we are able to push the images to a registry for easy reviewing.

1 Like