开发环境
准备贡献?以下是如何为本地开发设置 ansible_rulebook
在 GitHub 上 fork ansible_rulebook 仓库。
在本地克隆你的 fork
git clone [email protected]:your_name_here/ansible-rulebook.git
我们使用一个名为 Drools 的规则引擎,它用 Java 编写。我们从 Python 代码中直接使用 JPY 调用 Drools Java 类。为了使 JPY 正确工作,必须满足以下条件
已安装 Java 17+
已安装 Maven 3.8.1+,可能包含在一些 Java 安装中
如果要使用与默认版本不同的特定 Java 版本,则相应地设置环境变量 JAVA_HOME
将你的本地副本安装到 virtualenv 中。假设你已安装 virtualenvwrapper,以下是如何为本地开发设置你的 fork
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
npm install commitlint
为本地开发创建一个分支
git checkout -b name-of-your-bugfix-or-feature
现在你可以在本地进行更改。
完成更改后,检查你的更改是否通过 flake8 和测试,包括使用 tox 测试其他 Python 版本
flake8 ansible_rulebook tests
pytest
tox
要获得 flake8 和 tox,只需将它们 pip 安装到你的 virtualenv 中。
提交你的更改并将你的分支推送到 GitHub:我们遵循 conventionalcommit 标准作为提交信息 在提交前阶段,我们将验证提交信息 你必须使用以下命令安装钩子
pre-commit install --hook-type commit-msg
git add .
git commit -m "fix: title about the bug fix"
git push origin name-of-your-bugfix-or-feature
通过 GitHub 网站提交拉取请求。
构建容器镜像
Dockerfile 指向必要的 ansible 集合,该集合提供了源插件。
docker build -t localhost/ansible-rulebook:dev .
Git 提交前钩子
为了自动运行 linter 和代码格式化程序,我们使用 git 提交前钩子。这个项目为 pre-commit 框架提供了一个配置,以便为你自动设置钩子。建议使用 pre-commit 来符合 PR 指南。
当你创建开发环境时(上面第 4 步),会安装 pre-commit 包
然后生成 git 提交前钩子
pre-commit install
你可以通过以下命令在所有跟踪文件中手动运行 pre-commit
pre-commit run --all-files
提示
要运行一部分测试
pytest tests.test_ansible_rulebook
要运行 E2E 测试
pytest -m e2e
要运行 Temporal 测试
pytest -m temporal
要跳过运行 Temporal 测试
pytest -m "not temporal"
构建
python -m build
twine upload dist/*
发布
bump2version patch # possible: major / minor / patch
git push
git push --tags