Agenda
-
Introduction to the Project
-
Project implementation
-
Learnings out of the Project
-
Future plan for the project
-
Acknowledgement
-
Q&A
About the project!
-
Re-engineer the CI pipelines for Scipy to be compatible with Meson.
-
Enable local debugging of CI Actions using Act.
-
Implement GitHub Actions for building and testing on macOS.
-
Plan the CI matrix for the upcoming Scipy build setup using Meson.
-
Implement CI benchmarking using GitHub Actions to be compatible with ASV
-
Configured `act` to run the GitHub Action workflows locally.
-
Refactored the `meson.build` to generate `__config__.py` and `version.py` dynamically.
-
Wrote the documentation on usage of `act` with GitHub Actions.
-
Implemented build caching for Meson to restore compiler targets for faster builds.
-
Reduced the build time by 70% on the GitHub Actions CI (takes ~3 minutes for a build)
-
Integrated timestamp-based caching to cache and restore the latest compiler targets.
-
Implemented the Scipy build and test CI action for macOS using GitHub Actions.
-
Reduced the build time by 30% on the GitHub Actions CI using ccache compiler caching.
-
Integrated conda caching and Mamba for faster installs and build time.
-
Implemented the automated benchmarking on GitHub Actions CI using ASV.
-
Automatically builds Scipy and runs a benchmark action to compare the base commit with the PR commit.
-
Uploads the ASV results, generated HTML files and the benchmark logs to be verified on demand.
Miscellaneous
- Enhanced the Scipy Issue templates to utilize GitHub Issue Forms [PR#14493]
- Refactored the Scipy Issue templates to improve the user experience [PR#14669]
- Strategized the CI matrix for Scipy’s Meson build system, available here on the Sheet-3.
Learnings out of the Project
-
Learnt about Meson build system and custom targets.
-
Increased my familiarity with GitHub Actions and CI toolings.
-
Understood caching and benchmarking through working on an actual project.
-
Real-time collaboration and communication with my mentor and stakeholders.
Future plan for the project
-
Start working on the CI matrix and remove CI-deadweight.
-
Build and test the new Meson build on various architectures through GitHub Actions.
-
Implement GHA release action for automating the release of source archives.
Acknowledgement
- Thanks to my mentor, John Lee for providing the necessary guidance and feedback on every step.
- Thanks Ralf Gommers for helping with feedback, suggestions and reviews.
- Thanks Anirudh Dagar for providing necessary motivation and reviews.
- Thanks Jaime RodrÃguez-Guerra for helping with CI benchmarking and other stuff.