<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Feb 19, 2017, at 7:01 PM, Steve Dower <<a href="mailto:steve.dower@python.org" class="">steve.dower@python.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">On 19Feb2017 1554, Donald Stufft wrote:<br class=""><blockquote type="cite" class="">We don’t actually have Windows tests being run at all on pull requests<br class="">(largely because AppVeyor took too long to run), though we obviously<br class="">still have the buildbot fleet running post commit. This is something we<br class="">should ideally rectify though!<br class=""><br class="">On the Travis builders, we skip running the unit tests all together if<br class="">the PR was for something that couldn’t possibly change the outcome. I’m<br class="">not familiar enough with the capabilities of the Python test runner to<br class="">know if it can mark tests somehow to be excluded by default and only run<br class="">if a certain flag is ran, if so it shouldn’t be very hard to make<br class="">something that only runs those tests on changes to PCBuilder/* or<br class="">tools/msi/*. Otherwise it might need a separate set of tests for it that<br class="">can be independently ran.<br class=""></blockquote><br class="">I can easily get some VSTS (*.<a href="http://visualstudio.com" class="">visualstudio.com</a>) test runners going with VMs on Azure. I'm just not quite sure how to feed the results back into the github status checks right now, or how to make them publicly maintainable (that is, they'd be very much owned and only accessible by me, and likely only as long as I'm employed by Microsoft, which isn't great for sustainability - though of course anyone else can also set up the build definition and their own pool of VMs).<br class=""><br class="">No promises on dates, but this is something that I'll likely do regardless. I want the Windows tests as badly as anyone :)<br class=""><br class="">Cheers,<br class="">Steve<br class=""></div></div></blockquote></div><br class=""><div class=""><br class="webkit-block-placeholder"></div><div class="">Getting compute power is part of the problem, the other problem is something to control those compute nodes and interact with GitHub. The main piece of software I know in this space is buildbot and Jenkins. We obviously have a buildbot fleet already (and re-using that would mean less maintenance in general) I don’t know what the pre-merge workflow for buildbot looks like though.</div><div class=""><br class=""></div><div class="">I do know that Jenkins is an option, they have a plugin for handling it (although it’s not as nice as travis). It requires whitelisting people whose PRs are allowed to be tested or for a committer to come along and say that a particular PR is OK to test. It does this because the Jenkins model does not have any isolation in the builders so you have to have someone review the code PR to Jenkins running it or a malicious PR person gets the ability to do some nasty stuff.</div><div class=""><br class=""></div><div class="">Another alternative is <a href="https://concourse.ci/" class="">https://concourse.ci/</a>, which doesn’t have a defined story for isolating pull request builds, but there are some sketches for how it should be done (<a href="https://github.com/concourse/concourse/issues/366" class="">https://github.com/concourse/concourse/issues/366</a>) but I don’t know how well that works on Windows since It uses containers to run builds in (I think it has a no-op-ish thing on Windows, but that might mean that the security properties don’t exist then, I dunno).</div><div class=""><br class=""></div><div class="">Securely running untrusted code is hard :|</div><div class="">
<div style="color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-position: normal; font-variant-caps: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class="">—<br class="">Donald Stufft<br class=""></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-position: normal; font-variant-caps: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""></div><br class="Apple-interchange-newline">
</div>
<br class=""></body></html>