poketrainer icon indicating copy to clipboard operation
poketrainer copied to clipboard

Expand travis to build on windows and mac os

Open rirze opened this issue 8 years ago • 7 comments

I was thinking, we should expand travis ci to test against windows and mac os environments. That way, we can fix any cross-platform issues before they're released.

Any thoughts?

(#517 got me thinking about this, but is an example of an issue that wouldn't have been brought up by travis)

rirze avatar Aug 14 '16 01:08 rirze

I wouldn't worry about Mac OS; that's where I develop and I'm running tox every time before I push. 🎉 Besides, Mac OS is close enough to Linux for all intents and purposes, at least where Python is concerned. I've been developing with Python on my Mac for years, and it's extraordinarily rare that I encounter cross-platform compatibility issues with Linux.

Windows, on the other hand… hrmm…

I have an idea. Hang on while I give it a try…

infinitewarp avatar Aug 14 '16 02:08 infinitewarp

Darn. It looks like Travis-CI's support for specifying OS-specific things is still flaky. They don't have any Windows support, and their Mac support doesn't appears to work with the default Python without some goofy tricks in .travis.yml.

It looks like appveyor supports Windows builds. I'm trying to set that up with my account now…

infinitewarp avatar Aug 14 '16 03:08 infinitewarp

Well, appveyor sort of works…

https://ci.appveyor.com/project/infinitewarp/poketrainer/build/1.0.3

…but it looks like I need to figure out a way to either get a build machine that has both py2 and py3 on it, or I need to figure out how to get tox to only execute one of the two based on the environment they provide.

infinitewarp avatar Aug 14 '16 03:08 infinitewarp

Oh man, this brings back nightmares...

I remember giving up after writing up a config file. Honestly, if travis still hasn't brought around good Windows support, then I prefer not caring about Windows builds. It seems like too much of a hassle.

rirze avatar Aug 14 '16 04:08 rirze

OMG I think it's working…

https://ci.appveyor.com/project/infinitewarp/poketrainer/build/1.0.10

py27-32bit worked. waiting for the others! 🎉

infinitewarp avatar Aug 14 '16 04:08 infinitewarp

Both py27 builds passed, and both py35 builds failed with unexpected isort complaints. I'll give it a few more tries, but yeah, I don't personally need Windows build support either. Would be happy to review an incoming pull request from someone else who has more experience there, though.

infinitewarp avatar Aug 14 '16 04:08 infinitewarp

A few more tweaks later and I think I have it working for py27-32, py27-64, py35-32, and py35-64 on Windows. I'm going to give it a rest for tonight, and I'll review it all once more in the morning before opening a pull request here.

Here's a PR I made against my own fork so you can see the integration: https://github.com/infinitewarp/poketrainer/pull/3

screenshot

It generally works well. It's a tad slower than Travis, and there are twice as many builds. One potential problem I've noticed is that Appveyor doesn't seem to recognize when force pushes happen, but Travis CI does.

Of course, for this to be really effective, we need to build some actual unit tests. I wrote one test a while back to get the ball rolling, but the ball promptly stopped, rolled backwards, and deflated. 😝

infinitewarp avatar Aug 14 '16 07:08 infinitewarp