Spaces:
Runtime error
Runtime error
| CI, Docker Images, Docs & Tests | |
| ====================== | |
| This section contains an overview of the steps run on CI, as well as the tools used to simplify the testing (such as running on CPU). | |
| We use Github Actions to run the tests, which simplifies the workflows significantly for contributors. | |
| The tests run on CPU, and can be triggered using the ACT command line interface (https://github.com/nektos/act) - once you install the command line (And start the Docker daemon) you just have to type: | |
| .. code-block:: | |
| $ act | |
| [Python Tests/python-tests] π Start image=axsauze/kompute-builder:0.2 | |
| [C++ Tests/cpp-tests ] π Start image=axsauze/kompute-builder:0.2 | |
| [C++ Tests/cpp-tests ] π³ docker run image=axsauze/kompute-builder:0.2 entrypoint=["/usr/bin/tail" "-f" "/dev/null"] cmd=[] | |
| [Python Tests/python-tests] π³ docker run image=axsauze/kompute-builder:0.2 entrypoint=["/usr/bin/tail" "-f" "/dev/null"] cmd=[] | |
| ... | |
| CI Commands Triggered | |
| ~~~~~~~~~~~~~ | |
| The simplest way to see how this works is by looking at the github actions commands that are run. | |
| These can be found through the following files: | |
| * `CPP Tests <https://github.com/KomputeProject/kompute/blob/master/.github/workflows/cpp_tests.yml>`_ | |
| * `Python Tests <https://github.com/KomputeProject/kompute/blob/master/.github/workflows/python_tests.yml>`_ | |
| When submitting a PR or merging a PR into master, both of these will run - you can see the logs through the github interface. | |
| Running on the CPU | |
| ~~~~~~~~~~~~~ | |
| We use `Swiftshader <https://github.com/google/swiftshader>`_ to enable us to run the Kompute framework directly on the CPU for the CI tests. | |
| Even though Swiftshader is optimized to function as a high-performance CPU backend for the Vulkan SDK, there are several limitations, the most notable are limitations in extensions. | |
| This is one of the main reason why only a subset of the tests are run in the CI. | |
| Dockerfiles | |
| ~~~~~~~~~~~~~ | |
| The dockerfiles created provide functionality to simplify the interaction with the system. | |
| .. list-table:: | |
| :header-rows: 1 | |
| * - Image | |
| - Description | |
| * - axsauze/kompute-builder:0.2 | |
| - Main CI builder image with all required dependencies to build and run C++ & Python tests. | |
| * - axsauze/swiftshader:0.1 | |
| - Image building Swiftshader libraries only to reduce time via multi-staged builds | |
| * - axsauze/vulkan-sdk:0.1 | |
| - Image contained a linux build of the full Vulkan SDK to reduce time via multi-staged builds | |
| Running / Building Documentation | |
| ~~~~~~~~~~~~~ | |
| In order to build the documentation you will need the following dependencies: | |
| * Install CI dependencies under `scripts/requirements.txt` | |
| Once this installed: | |
| * You can build the documentation using the `gendocsall` cmake target | |
| * You can serve the documentation locally using the `mk_run_docs` command in the Makefile | |
| Performing Release | |
| ~~~~~~~~~~~~ | |
| In order to perform the release the following steps need to be carried out: | |
| * Build changelog | |
| * Create branch called `v<VERSION>-release` | |
| * Generate latest changelog `make build_changelog` | |
| * Update latest tag in new CHANGELOG.md to be the vesion to release | |
| * Python Release | |
| * Build dependency: | |
| * Intsall dependency: `pip install .` | |
| * Ensure all tests pass in GPU and CPU: `python -m pytest` | |
| * Build distribution `python setup.py sdist bdist_wheel` | |
| * Test repo: | |
| * Push to test repo `python -m twine upload --repository testpypi dist/*` | |
| * Install python dependency: `python -m pip install --index-url https://test.pypi.org/simple/ --no-deps kp` | |
| * Ensure all tests pass in GPU and CPU: `python -m pytest` | |
| * Prod repo: | |
| * Push to test repo `python -m twine upload dist/*` | |
| * Install package from prod pypi `pip install kp` | |
| * Ensure all tests pass in GPU and CPU: `python -m pytest` | |