Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upServo needs nightly builds #9921
Comments
|
Can we just add a cron job to the Salt states to kick off a build every night, or will this be more involved? Is there a reason to do it on Travis instead? |
|
I was thinking of having a cron job from Salt that creates a tag and would cause a build to kick off every night. We could also do the builds on our buildbot buildslaves, but we would need to have special buildbot steps to package up the outputs and S3 or GitHub release API tokens to push the builds out to the shares. The main reason I like doing some of this stuff on Travis is that other people can make edits to add more resources, platforms, etc. Changes to Buildbot are super fragile, both to get working (and often involve a bit of round-and-back-again on the live servers since it's so hard to set up a full Vagrant farm to test them) and for admins to push out changes. Because if we push out a buildbot update while anything is currently happening on homu, the events get lost and the build has to be manually retried. |
|
Creating a new tag every night doesn't sound scalable, but I understand wanting to use Travis; can we just force-push to a certain branch instead like homu does with I'm +1 on a cron job to kick off these builds. I still think it would be nice to converge the saltfs repo with the nightly builds, so the nightly builds on Travis use a subset of the Salt configurations to get all the pre-requisites installed, and then also run the Servo builds. |
|
Oooh, I like the force-push to a |
|
Does that mean we would not archive nightly builds at all? I'm not at all convinced I'll be able to build today's nightly this time next year, and having the nightlies archived would be very useful for bisecting regressions. |
|
@Ms2ger No, we'd definitely still archive nightlies (unlike what we do for Android, which is just a hack I threw together). I think the big question is:
It's something we are scheduled to solve in Q2, but we could certainly do some of it now :-) CC @edunham |
|
Why do we need to keep every nightly from this stage of development? If we expect to only need a given nightly for weeks or months and nobody else's systems are gating on their availability, I'd be comfortable with publishing them as releases. If we expect to need them years from now, S3 will give us better options for moving old artifacts to cheaper but slower-to-retrieve storage. Also, if we know of plans to use the nightlies in anyone else's CI systems, s3's availability is significantly more reliable than GitHub's. |
|
Somewhat off-topic: how important is being able to checkout any commit and reliably build that version/nightly? Nix is a great build tool that I'm a huge fan of which makes this possible. Its Windows support is a bit spotty due to lack of developers, and it isn't going to supplant Mach/Cargo any time soon for Servo, but if reliable historical builds are important to you it may be valuable to open an issue to discuss it. |
|
If Servo still exists in ten years from now, I definitely expect us to want to bisect years into the past; I believe @bzbarsky ends up doing that somewhat regularly with Gecko. I believe it's important that we can keep building old versions, but it doesn't take much to break that, so I also want the binaries backed up. |
|
I agree with @Ms2ger that the binaries and source code are the more critical bits. There are certain pieces of the dependency chain (e.g., Apple does not provide XCode downloads or versions of their OS for all time) that will make it impossible to exactly reproduce the binary. That said, certainly better logging of the installed versions of libraries (particularly static ones!) that were built against in the nightly build might be helpful. Particularly since much of that is not available in our default build logs, due to Cargo's suppression of native build script outputs. |
|
Related: #9918 |
|
This is something we will need if we ever want to release a developer preview of servo+bhtml. |
|
If we want to use Travis for this, one option is using a service like https://nightli.es/. I'm not sure about how to securely provide S3 upload credentials, though. Buildbot also has a builtin Nightly scheduler that we could use for this, similar to the existing (but currently busted) Not sure if this is affected by integrating with Gecko CI. |
…gstrom Add a script to upload nightly packages to S3 <!-- Please describe your changes on the following line: --> The nightly package name includes the date, and so we use a glob to locate the package file without hard coding a value. However, globbing will not work with our Buildbot steps setup because we perform word splitting ourselves and pass an array to Buildbot, which will directly exec the array instead of passing it to the shell, meaning globbing does not occur. Instead, add a script to the servo repo where we can use globbing, and use `shopt -s failglob` to guard against bad globs. cc @larsbergstrom @edunham --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [ ] These changes are needed for #9921 (github issue number if applicable). <!-- Either: --> - [ ] There are tests for these changes OR - [x] These changes do not require tests because will be tested by buildbot <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/11943) <!-- Reviewable:end -->
|
We've now launched nightly builds! |
We need nightly builds for Servo. Initial work is going on here: https://github.com/servo/servo-nightly/