<html><head><style>body{font-family:Helvetica,Arial;font-size:13px}</style></head><body style="word-wrap:break-word"><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">Hi Augustina,</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">cryptography's needs are a bit unusual. Since we depend on the underlying OS/distribution to provide us with OpenSSL (or commoncrypto on the macOS side) and we compile against a library that has a somewhat checkered past with versioning we have to test against numerous configurations. To achieve the coverage we want we currently use two different CI systems and aggregate coverage across them.</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">== Travis CI ==</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">Recent CI build: <a href="https://travis-ci.org/pyca/cryptography/builds/181337155">https://travis-ci.org/pyca/cryptography/builds/181337155</a></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">Travis CI gives us configuration-as-code, reasonable concurrency (we have 10 simultaneous builders, which is a godsend with the number of jobs we run), and support for both linux and macOS (multiple versions).</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">== Jenkins ==</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">Recent CI build: <a href="https://jenkins.cryptography.io/job/cryptography-master/1879/">https://jenkins.cryptography.io/job/cryptography-master/1879/</a></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">Jenkins (using github pull request builder and multiconfiguration jobs) allows us to test unusual configs (like random test order) as well as against the set of configurations not supported by Travis. This includes Windows, FreeBSD, various linux distributions, and additional versions of macOS.</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">Jenkins also lets us build wheels for distribution during releases using the same infrastructure. We currently ship 21 wheels, but that number will grow shortly with Python 3.6.</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">Our current config is not using jenkinsfile (which has proven challenging to implement due to a variety of bugs) so the configs are not checked into CI and we commonly have to spend time working on the cluster since it's managed by us. However, an advantage this does offer is that our concurrency scales with our willingness to boot more VMs...</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">So, in an ideal world what we want out of CI is:</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">* Many OSes/distributions</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">* configuration as code</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">* high concurrency to minimize total CI time</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">* integration with github for status reporting</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">* fast and reliable booting of test instances (whether they're full VMs or containers)</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">As part of the "we want it to be fast" requirement being able to cache artifacts we may re-use repeatedly (like Python runtimes) can be extremely valuable in lowering total CI runtime.</div> <div><br></div>If BonnyCI can offer this to us in the future then we'll be happy to take a close look!<div><br></div><div>-Paul Kehrer (reaperhulk)<br> <div id="bloop_sign_1481311076304479232" class="bloop_sign"></div> <br><p class="airmail_on">On December 9, 2016 at 12:28:52 PM, Augustina Ragwitz (<a href="mailto:aragwitz.lists@pobox.com">aragwitz.lists@pobox.com</a>) wrote:</p> <blockquote type="cite" class="clean_bq"><span><div><div></div><div>I'm working on a project with a group of folks from the Openstack<br>community called BonnyCI. In a nutshell, we're making the Openstack<br>Infra CI environment work with Github and making it available for<br>non-Openstack projects. I've spoken with Donald Stufft privately to see<br>if you all might want to chat further about your current CI workflow and<br>he suggested I reach out to the mailing list.  Our big challenge with<br>BonnyCI is while we know the Openstack needs and use cases, we have<br>little knowledge outside of that, and we want to make sure what we're<br>building is actually going to help address any issues folks might be<br>having wih their current setup. As BonnyCI gets more stable, we'll also<br>be looking for projects who would be willing to try it out!<br><br>If anyone would be interested in talking to me further, I'm happy to<br>talk on this list, via direct email, IRC, hangouts/skype/etc. I've been<br>lurking in your IRC channel, so feel free to ping me or message me<br>directly there (nick: auggy). I don't want this to take too much of your<br>time (or energy) so I'm open to whatever works for anyone who is<br>interested in talking to me further.<br><br>-- <br>Augustina Ragwitz<br>Señora Software Engineer<br>---<br>irc: auggy<br>_______________________________________________<br>Cryptography-dev mailing list<br><a href="mailto:Cryptography-dev@python.org">Cryptography-dev@python.org</a><br><a href="https://mail.python.org/mailman/listinfo/cryptography-dev">https://mail.python.org/mailman/listinfo/cryptography-dev</a><br></div></div></span></blockquote></div></body></html>