Skip to content

Switch from CircleCI to GitHub ActionsΒ #1030

@MattiSG

Description

@MattiSG

RFC

This RFC suggests switching the default CI provider for OpenFisca codebases from CircleCI to GitHub Actions, enabling a 5x performance gain.

Context

Currently, OpenFisca tests in continuous integration run with CircleCI’s free plan. This is the case for OpenFisca Core, but also for the Country Template, and for most known country packages (since they derive from the Country Template).

With the main aim to decrease the duration of France's longer test runs (between 10 and 12 minutes per build), an investigation was led to identify ways to speed up test that could benefit the entire community in #1027.

Some minor ways for improvement were identified and implemented (openfisca/openfisca-france#1649, openfisca/openfisca-france#1650) and relevant ones are or soon will be shared back in the Country Template (openfisca/country-template#113).

However, by far the most effective way to speed up the tests that was identified is to parallelise them.

There is some exploratory work to do this for local tests in #1025. In CI, however, parallelisation has been effective for 4 years (since #516).

Current situation

With CircleCI's free plan for open-source, we can run builds with up to 4x parallelism.

Expected situation

With GitHub Action's free plan for opens-source, we would run builds with up to 20x parallelism.

Expected gains

Expected costs

  • Writing a new CI setup for both Core and the Country Template. This has already been covered a lot in Improve tests performanceΒ #1027’s exploration, and has been volunteered by @openfisca/france-contrib-dinsic (in particular @HAEKADI).
  • Setting up the new CI pipeline. This has already been covered a lot in Improve tests performanceΒ #1027’s exploration, and has been volunteered by @openfisca/international-maintainers (in particular @sandcha).

Expected losses

  • Detailed logs from test runs won't be retained after 90 days.

Workarounds

  • Rely on worflow-level metadata (which is kept indefinitely) for performance decisions made on test runs, and learn to copy-paste in the issue body the subset of the logs when we make a decision based on them.

More information

  • A detailed comparison table is available in Improve tests performanceΒ #1027 (comment).
  • The CircleCI account and pipeline will stay active for the foreseeable future, letting each country package migrate on its own schedule.

Decision-making process

  • Please agree with (πŸ‘ reaction) or reject (πŸ‘Ž reaction) this proposal.
  • If rejecting, please add a comment explaining your position.
  • This RFC will stay open for 7 days (7 ⨉ 24 hours) after the last rejection comment (or after this initial post if no rejection comments are added).
  • When the RFC closes, if there is no consensus, votes will be taken as emoji reactions on this first post.
  • If there is a consensus or, if not, the majority votes for this change, a PR will be opened with code enabling the switch.

Metadata

Metadata

Assignees

Labels

policy:rfcRequest For Comments: chime in!

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions