By Jean-Noël Grad
GitHub continuous integration and continuous delivery (CI/CD) pipelines can leverage EESSI1 to download pre-built scientific software using the EESSI GitHub Action2.
GitHub workflows are routinely used to execute test suites, generate and deploy software documentation, and run executable papers. As a real-world example, we will explore pyMBE3, a molecular builder that simplifies and automates the creation of complex molecular models in the molecular dynamics engine ESPResSo.
As part of pyMBE’s software quality assurance, every code contribution is automatically tested against stable ESPResSo releases. This is achieved by a workflow called testsuite.yml
4, which loads ESPResSo 4.2.1 and installs the subset of Python dependencies not already provided by EESSI. In a subsequent stage, the test suite is executed to check the software behavior meets our specifications and reproduces published results. The software user guide is generated to verify compliance with the Sphinx specifications, and uploaded as an artifact that can be downloaded by human reviewers to confirm that any new feature is properly documented.
After a contribution is merged to the main branch, and upon successful completion of a test suite on the main branch, another workflow called deploy.yml
5 automatically reads and uploads the documentation artifact to the pyMBE online user guide6, which is hosted on GitHub Pages.
References:
- Dröge et al. “EESSI: A cross-platform ready-to-use optimised scientific software stack”. In: Software: Practice and Experience 53(1), 2023, doi:10.1002/spe.3075
- O’Cais et al. “GitHub Action: EESSI”, version 3.1.0, GitHub Marketplace, January 2024. https://github.com/marketplace/actions/eessi
- Beyer et al. “pyMBE: The Python-based molecule builder for ESPResSo”. In: The Journal of Chemical Physics 161(2), 2024, doi:10.1063/5.0216389
- https://github.com/pyMBE-dev/pyMBE/blob/0.8.0/.github/workflows/testsuite.yml
- https://github.com/pyMBE-dev/pyMBE/blob/0.8.0/.github/workflows/deploy.yml
- https://pymbe-dev.github.io/pyMBE