开发环境

准备贡献?以下是如何为本地开发设置 ansible_rulebook

  1. 在 GitHub 上 fork ansible_rulebook 仓库。

  2. 在本地克隆你的 fork

git clone [email protected]:your_name_here/ansible-rulebook.git
  1. 我们使用一个名为 Drools 的规则引擎,它用 Java 编写。我们从 Python 代码中直接使用 JPY 调用 Drools Java 类。为了使 JPY 正确工作,必须满足以下条件

    • 已安装 Java 17+

    • 已安装 Maven 3.8.1+,可能包含在一些 Java 安装中

    • 如果要使用与默认版本不同的特定 Java 版本,则相应地设置环境变量 JAVA_HOME

  2. 将你的本地副本安装到 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
  1. 为本地开发创建一个分支

git checkout -b name-of-your-bugfix-or-feature

现在你可以在本地进行更改。

  1. 完成更改后,检查你的更改是否通过 flake8 和测试,包括使用 tox 测试其他 Python 版本

flake8 ansible_rulebook tests
pytest
tox

要获得 flake8 和 tox,只需将它们 pip 安装到你的 virtualenv 中。

  1. 提交你的更改并将你的分支推送到 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
  1. 通过 GitHub 网站提交拉取请求。

构建容器镜像

Dockerfile 指向必要的 ansible 集合,该集合提供了源插件。

docker build -t localhost/ansible-rulebook:dev .

Git 提交前钩子

为了自动运行 linter 和代码格式化程序,我们使用 git 提交前钩子。这个项目为 pre-commit 框架提供了一个配置,以便为你自动设置钩子。建议使用 pre-commit 来符合 PR 指南。

  1. 当你创建开发环境时(上面第 4 步),会安装 pre-commit 包

  2. 然后生成 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