Description
Context: See #136, #161, #209 and #214 for initial justifications for the following unified issue.
Specifically from #161: Easily tracked code coverage is an absolute requirement for the new CICD flows
We have the following CICD-related configuration files:
.travis.yml
- does basically everything, build, test, publish conditionally on masterappveyor.yml
- builds + tests on windows machinesmeta.yml
- conda packaging config (is this correct?)requirements.txt
- specifies the python stacksetup.py
- importantly installs JS extensions
Github actions appear to have support for job matrices (multiple python versions), virtual environments (multiple OSes including windows), and can execute scripts from the git repository so that build logic can be put in a script (or scripts) and recycled in local development and in CICD. Instead of scripts, we could opt for a Makefile with commands to be invoked locally or in CICD. This removes the need of .travis.yml
and appveyor.yml
in favor of .github/workflows/branch.yml
and .github/workflows/master.yml
. To further reduce code duplication across workflows, we can leverage action composition as detailed here https://github.blog/changelog/2021-08-25-github-actions-reduce-duplication-with-action-composition/
The meta.yml
file is used by conda packaging mechanics and I believe we want to continue supporting conda packaging as it is the easiest manager of the pydata stack. That leaves requirements.txt
and setup.py
. Though pip has made a lot of progress in the last few years, it is not really the most portable package management solution. I would recommend poetry
but I don't think it plays that nicely with conda so it would be nice to hear other thoughts about the python packaging tools.