ExaWorks / SDK

ExaWorks SDK
11 stars 12 forks source link

Document CI and Dashboard #205

Closed mturilli closed 8 months ago

mturilli commented 1 year ago

Add suitable sections to the readthedocs.

mtitov commented 1 year ago

The ExaWorks SDK includes testing infrastructure and uses such services and frameworks as GitHub Actions and GitLab instances per computing facility. Testing is focused on SDK components deployment, and on running "vanilla" tests for that components and their integrated solutions within different computing environments. Results regarding tests states (succeed or failed) are collected at the monitoring service namely ExaWorks Dashboard (Dashboard service was built for PSI/J tests at first, and then was extended for the SDK testing).

Every core component (Flux, Parsl, PSI/J, RADICAL tools, Swift/T) is presented within Spack (https://spack.io) and Conda (https://conda.io). Also, Spack contains a virtual package "exaworks" (https://packages.spack.io/package.html?name=exaworks), every core component is part of. PyPI (https://pypi.org) contains only Python-based components such as Parsl, PSI/J and RADICAL tools.

GitHub Actions, as an initial effort to run tests for core components, which were deployed within a docker container, helped to automate the process of creation docker containers with different environments by changing: (1) OS (CentOS 7, CentOS 8, which later was switched to RockyLinux 8, and Ubuntu 20.04); (2) package manager (pip and conda); and/or (3) MPI flavor (OpenMPI, MPICH). The SDK repository presents corresponding code in ".github" and "docker" directories.

GitLab instances per facility are used to setup CI testing infrastructure to run SDK tests on LCF resources. While GitHub Actions tests are more abstractive, GitLab CI tests helps to stress test our solutions on actual HPC platforms. We have been using (or about to use) GitLab services on such facilities as LLNL, OLCF/ORNL, ALCF/ANL, and NERSC. Each GitLab CI includes (or will include) pipelines based on a certain package manager: pip-, conda-, and spack-pipelines. Besides core components, pip-pipeline includes MaestroWF and SmartSim software tools. The SDK repository presents corresponding code in ".gitlab" and "ci" directories.