Skip to content

CICD Config design #231

Open
Open
@tjduigna

Description

@tjduigna

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 master
  • appveyor.yml - builds + tests on windows machines
  • meta.yml - conda packaging config (is this correct?)
  • requirements.txt - specifies the python stack
  • setup.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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    EnhancementExtend an existing featureIn progressCurrently being worked on

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions