Continuous Integration Testing#

Overview#

The OpenMDAO repository is hosted on GitHub.com and makes use of GitHub Actions to perform continuous integration (CI) testing as code is contributed and to monitor the code base for potential problems due to dependencies.

OpenMDAO Tests workflow#

When a pull request is submitted to the main fork of OpenMDAO, GitHub will trigger execution of the OpenMDAO Tests workflow. This script will create several different python environments, on Linux and on Windows, and run the full set of tests via testflo. By testing against different environments and different versions of dependencies, this CI testing can be more thorough and potentially identify bugs that you might miss when testing locally. In addition, this workflow will generate a test coverage report and perform a scan to look for common Python security issues using the bandit static code analyser.

Finally, this workflow includes one job specifically for building the documentation with Jupyter Book. If there are any warnings or errors during the build process, they will be listed in the workflow output under the “Display doc build reports” header.

This workflow can be a handy reference for how to use conda to build an OpenMDAO environment with all the optional dependencies. In particular you can see how to install MPI support with PETSc and how to install pyOptSparse using the build_pyoptsparse utility.

OpenMDAO Audit workflow#

While the bandit scan in the OpenMDAO Tests workflow will scan for potentially vulnerable code in OpenMDAO, there is an additional security scan that runs nightly that uses pip-audit to alert the development team of any vulnerabilities in our upstream dependencies. This is the purpose of the OpenMDAO Audit workflow.

OpenMDAO Latest workflow#

The OpenMDAO Latest workflow runs on a nightly basis to check for any changes or deprecations in the pre-release versions of all of the OpenMDAO dependencies. This allows the development team to get ahead of any upcoming breaking changes before they are actually released.