|
| 1 | +--- |
| 2 | +title: Genesis Core |
| 3 | +--- |
| 4 | + |
| 5 | +Welcome to Genesis Core! |
| 6 | + |
| 7 | +The Genesis Core is an open source software that offers a one turnkey solution to deal with infrastructure at all levels - from bare metal and virtual machines to applications and services. |
| 8 | + |
| 9 | +Refer to the [wiki](https://github.com/infraguys/genesis_core/wiki) for more detailed information. |
| 10 | + |
| 11 | + |
| 12 | +# 📦 Installation |
| 13 | + |
| 14 | +There are several ways to install Genesis Core and depend on your purpose you can choose one of them. |
| 15 | + |
| 16 | +## Try it out |
| 17 | +**NOTE: Under development** |
| 18 | + |
| 19 | +If you want to try Genesis Core in a few minutes, download the `all-in-one` [stand](https://github.com/infraguys/gci_dev_all_in_one). It's a ready-to-go virtual machine image with preinstalled Genesis Core and ability to get full functionality such as creating inner(nested) virtual machines, installation elements and many others. |
| 20 | +This stand may be used for development purposes as well if you are focusing on a new element development. |
| 21 | + |
| 22 | +## Basic usage |
| 23 | + |
| 24 | +In a case you would like to run Genesis Core on your own infrastructure, you can use the [basic guide](https://github.com/infraguys/genesis_core/wiki/BasicUsage) for more details. |
| 25 | + |
| 26 | +# 🚀 Development |
| 27 | + |
| 28 | +**Ubuntu:** |
| 29 | +```bash |
| 30 | +sudo apt-get install build-essential python3.12-dev python3.12-venv \ |
| 31 | + tox libev-dev libvirt-dev |
| 32 | +``` |
| 33 | + |
| 34 | +**Fedora:** |
| 35 | +```bash |
| 36 | +sudo dnf install tox gcc libev-devel libvirt-devel |
| 37 | +``` |
| 38 | + |
| 39 | +Initialize virtual environment: |
| 40 | + |
| 41 | +```bash |
| 42 | +tox -e develop |
| 43 | +source .tox/develop/bin/activate |
| 44 | +``` |
| 45 | + |
| 46 | +Follow the development guide [here](https://github.com/infraguys/genesis_core/wiki/DevelopmentGuide) for more details. |
| 47 | + |
| 48 | +# ⚙️ Tests |
| 49 | +**NOTE:** Python version 3.12 is supposed to be used, but you can use other versions |
| 50 | + |
| 51 | +```bash |
| 52 | +# Unit tests |
| 53 | +tox -e py312 |
| 54 | + |
| 55 | +# Functional tests |
| 56 | +tox -e py312-functional |
| 57 | +``` |
| 58 | + |
| 59 | +## Functional tests environment |
| 60 | + |
| 61 | +To run functional tests, export the following environment variables: |
| 62 | + |
| 63 | +```bash |
| 64 | +export DATABASE_URI="postgresql://genesis_core:genesis_core@127.0.0.1:5432/genesis_core" |
| 65 | +export ADMIN_PASSWORD="admin" |
| 66 | +export DEFAULT_CLIENT_SECRET="GenesisCoreSecret" |
| 67 | +export GLOBAL_SALT="FOy/2kwwdn0ig1QOq7cestqe" |
| 68 | +export HS256_KEY="secret" |
| 69 | +``` |
| 70 | + |
| 71 | +# 🔗 Related projects |
| 72 | + |
| 73 | +- Genesis SDK is a set of tools for developing Genesis elements. You can find it [here](https://github.com/infraguys/gcl_sdk). |
| 74 | +- Genesis DevTools it's a set oftools to manager life cycle of genesis projects. You can find it [here](https://github.com/infraguys/genesis_devtools). |
| 75 | + |
| 76 | + |
| 77 | +# 💡 Contributing |
| 78 | + |
| 79 | +Contributing to the project is highly appreciated! However, some rules should be followed for successful inclusion of new changes in the project: |
| 80 | +- All changes should be done in a separate branch. |
| 81 | +- Changes should include not only new functionality or bug fixes, but also tests for the new code. |
| 82 | +- After the changes are completed and **tested**, a Pull Request should be created with a clear description of the new functionality. And add one of the project maintainers as a reviewer. |
| 83 | +- Changes can be merged only after receiving an approve from one of the project maintainers. |
0 commit comments