-
Notifications
You must be signed in to change notification settings - Fork 6
Wheels for other OSs #147
Comments
Nice, that looks pretty clean and easy to use. If you deploy on windows/mac, should you run the tests on them too or is it fairly safe to assume that rust/python wheels will behave the same? |
One probably should run the tests on the whole matrix, although I haven't yet for ncollpyde (debugging CI workflows is a pain so I was trying to keep the build time down). PositivesI've found github CI to be a little faster (travis' 4-job restriction feels pretty tight when you've got more than one project on the go). Being able to delegate e.g. rust setup to an external Action saves us some maintenance, and that ecosystem will only get stronger. It's nice to define your own sections too, rather than the prescribed before_install, install, script etc. that travis has. NegativesI'm not sure the matrix builds are fully isolated from each other - they seem to clash/ leave artifacts around, which is why I had to put the wheels in different directories https://github.com/clbarnes/ncollpyde/blob/master/.github/workflows/ci.yml#L60 The logging is... different. Maybe I'm just used to travis. |
"Being able to delegate e.g. rust setup to an external Action" Oh this is cool. I couldn't find the The isolation issue will be annoying though |
Yes, creating a new action is either writing a whole docker container or writing a system tool in node with some extra metadata. It doesn't look like actions can depend on others (e.g. it would be nice to write a maturin action which is a thin wrapper over actions-rs/toolchain and actions/setup-python).
Unsurprisingly trying to get all of the dependencies built and accessible on all 3 systems is a pain... |
Yeah I looked through the logs to see what you meant by them being different. Looks like windows is being annoying |
Yeah. Some of it is issues with the packages themselves - if those packages were PEP517 compliant (i.e. they specified their own build dependencies in a pyproject.toml) then they wouldn't be so dependent on wheels (which exist for some OSs and not others). On the plus side, supporting other OSs if you're using travis means writing a whole separate config file and sending it to a different CI host - with github workflows any single step can be conditional on OS name so you only have to split out the bare minimum. In the case of ncollpyde, the tricky dependencies are optional ones, but choosing to just not install the optional dependencies at all means the tests don't cover everything. |
I was experimenting with github actions today for another maturin-based library and it's not too bad to get wheels for everything built together:
https://github.com/clbarnes/ncollpyde/blob/master/.github/workflows/ci.yml
The text was updated successfully, but these errors were encountered: