Ready to contribute? Here’s how to set up ansible_rulebook for local development:
Fork the ansible_rulebook repo on GitHub.
Clone your fork locally
git clone firstname.lastname@example.org:your_name_here/ansible-rulebook.git
We use a rules engine called Drools which is written in Java. From our python code we directly call the Drools Java classes using JPY. The following criteria must be met for JPY to work correctly:
Java 17+ installed
Maven 3.8.1+ installed, might come bundled in some Java installs
Environment variable JAVA_HOME set accordingly if you want to use a specific Java version different from the default one
Install your local copy into a virtualenv. Assuming you have virtualenvwrapper installed, this is how you set up your fork for local development:
cd ansible_rulebook/ python3.9 -m venv venv source venv/bin/activate pip install -e . pip install -r requirements_dev.txt ansible-galaxy collection install ansible.eda
Create a branch for local development:
git checkout -b name-of-your-bugfix-or-feature
Now you can make your changes locally.
When you’re done making changes, check that your changes pass flake8 and the tests, including testing other Python versions with tox:
flake8 ansible_rulebook tests pytest tox
To get flake8 and tox, just pip install them into your virtualenv.
Commit your changes and push your branch to GitHub:
git add . git commit -m "Your detailed description of your changes." git push origin name-of-your-bugfix-or-feature
Submit a pull request through the GitHub website.
Building the container image
The dockerfile points to the required collection of ansible which provides source plugins.
docker build -t localhost/ansible-rulebook:dev .
Git pre-commit hooks (optional)
First install the
Into your virtual environment:pip install pre-commit
Into your user directory:pip install --user pre-commit
pipxtool:pipx install pre-commit
Then generate git pre-commit hooks:
You may run pre-commit manually on all tracked files by calling:
pre-commit run --all-files
To run a subset of tests:
To run E2E tests
pytest -m e2e
To run Temporal tests
pytest -m temporal
To skip running Temporal tests
pytest -m "not temporal"
python -m build twine upload dist/*
bump2version patch # possible: major / minor / patch git push git push --tags