16. Github Actions

This project leverages Github Actions, for continuous integration and deployment, eliminating the need for third-party platforms.

The following procedures are implemented:

16.1. Pull Request

  • Python Code format check: Each pull request is checked for Pep8 standard compliance and isort for import sorting. Non-compliance triggers a warning.

  • Code type check: pytype is used in the Sinergym module to

    control function and method I/O types. import-error types are ignored with pytype -d import-error sinergym/. Type errors halt the workflow until resolved.

  • Documentation checks: Changes in source documentation trigger a Sphinx compilation and spelling check. Errors are raised for compilation issues and unrecognized words. Add unrecognized but correct words to docs/source/spelling_wordlist.txt.

Warning

Sphinx Warning messages are treated as errors.

Note

Sphinx Spelling also checks code docstring.

  • Testing: A remote container is built using Dockerfile and Pytest is executed within it.

  • Repository security: This workflow identifies differences between source and base in workflows and tests for forked repositories to prevent malicious software.

Note

Checks can be skipped with [ci skip] in the commit message. See issue #161.

16.2. Push main (or merge a pull request)

The following workflows are executed sequentially:

  • Apply format: A bot applies necessary format changes (autopep8 level 2 aggressive and/or isort module) in the main branch.

  • Update Documentation build to GitHub pages: A bot updates the documentation build in the main branch when necessary, including spelling checks.

  • Update our Docker Hub repository: A container with all extra requirements is built and pushed to our Docker Hub repository using the latest tag. A minimal container is also included with the lite tag.

  • Testing and CodeCov update: Tests are executed similarly to the pull request event, and the coverage report is uploaded to CodeCov.

16.3. New release created or modified

  • When a release is published or edited, a container is built and updated on Docker Hub with the release tag version.

  • Simultaneously, the PyPi Sinergym repository is updated with the current version tag.

  • For pre-releases, the PyPi version is updated but not the Docker Hub container.

Note

See .github/workflows YML files for the code.

Note

If you forked Sinergym, enable Github Action in your project to utilize these functionalities.