jekirl / poketrainer

The original Pokemon Go bot
Other
120 stars 56 forks source link

Expand travis to build on windows and mac os #544

Open rirze opened 8 years ago

rirze commented 8 years ago

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)

infinitewarp commented 8 years ago

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 commented 8 years ago

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 commented 8 years ago

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.

rirze commented 8 years ago

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.

infinitewarp commented 8 years ago

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 commented 8 years ago

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 commented 8 years ago

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. 😝