It is now accepted that having continuous integration is a best practice for almost all non-trivial projects. But configuring CI for Python correctly is still hard. The solution space is big, many common configurations work around the bugs and limitations that existed in past CI systems, and there are few explanations about how to do it well.
A good CI configuration concentrates on giving timely and accurate feedback to the developer. Whether it is using GitHub Actions, GitLab CI/CD, Jenkins, or something else, there are ways to configure the system to be more accurate and faster.