AppVeyor provides continuous testing on Windows. I wanted to try it with Perl 6 since I don’t want to ignore Windows in Learning Perl 6. I found a some configuration examples, but none of them satisfied me. I spent a bit too much time messing around with PowerShell to produce my own AppVeyor configuration.
I had my own simple requirements:
- I want to use the latest Rakudo Star, like most people will for everyday work
- I want the build to be fast.
- Don’t build Rakudo every time
- Cache whatever I can
Along the way I ran into several inadequacies in PowerShell and various other Microsoft tools. These things provide a challenge to the non-interactive programmer.
But, I have something that works. The first time around I install Strawberry Perl and Rakudo Star. If everything in the build goes well, AppVeyor caches these installations so I don’t need to do them again. I’ve also setup the config with a kludey way to invalidate that cache (which AppVeyor still declines to provide as a button on the website).
Rakudo is a bit tougher. There’s an old chocolately package (I’m figuring out how to fix that). I download the latest Rakudo, but I wasting a lot of time wondering if the installer was doing anything. That installer works in the background in another process, so Powershell doesn’t know how to wait for it to finish. All of that research made me miss Perl (of either flavor) where it’s easy to get answers to even difficult questions. Many communities can’t get answers to simple questions. But, that’s life.
After that, everything is easy and looks like the basic continuous integration testing.
I’m done working on it until I have another problem, but there are some other things I’d like my config to do:
- Report code coverage
- Send reports to some sort of CPAN Testers thing
- Allow people to build against different versions of Rakudo (“hey, it worked last month!”)