本地词,为凡人。
easyci的Python项目详细描述
note:easyci只适用于git存储库。
不要再担心签入损坏的代码。无需维护CI服务器。不必为你的私人项目花那么多钱。easyci让您安心,就像一个好的ci服务,但没有所有额外的费用。
easyci通过gitpre-commit
和pre-push
钩子操作,以确保代码在提交/推送之前通过测试。
$ git commit Running test: flake8 Passed [master b2e6fa1]test commit 1 file changed, 2 insertions(+), 2 deletions(-)
easyci还确保不重复运行测试。如果在使用eci test
之前运行了测试,并且没有文件更改,则它不会再次尝试运行测试。
$ eci test Running test: flake8 Passed $ git commit OK Files not changed [master b2e6fa1]test commit 1 file changed, 2 insertions(+), 2 deletions(-)
这意味着,如果您作为工作流的一部分定期运行测试,那么在使用easyci时实际上没有效率成本,但是您可以放心地知道,如果您忘记运行测试,将不允许提交/推送。
easyci的设计是为了转移你逃避考试的负担。为此,可以让easyci监视项目的更改并自动运行测试,以便在您要提交更改时,您的测试已经运行。在单独的shell会话中执行此操作:
$ # from anywhere in your project $ eci watch Watching directory `/path/to/project`. Use ctrl-c to stop.
安装/设置
首先,使用pip
安装easyci。
pip install easyci
接下来,为您的项目设置easyci。
cd /path/to/project
eci init
这将安装必要的git钩子并放置一个简单的配置文件eci.yaml
。您应该修改配置文件以实际运行测试。
运行测试
测试由git的pre-commit
和pre-push
挂钩自动运行。手动触发测试:
# from anywhere in your project eci test
收集测试结果
easyci通过使用rsync
将项目复制到临时目录来保留项目的状态。在某些情况下,您确实需要测试生成的文件。例如,如果测试生成代码覆盖率数据或其他测试数据,则需要使用选项将这些文件从临时目录复制回项目目录。这可以通过配置collect_results
来完成。
例如,下面的配置将复制子目录htmlcov
下的所有内容,在本例中,它包含代码覆盖率报告。
tests:-coverage run -m py.test && coverage htmlcollect_results:-htmlcov/***
有关collect_results
的模式格式的更多信息,请参阅rsync
的手册页,该手册页用于在内部复制测试结果。
配置
配置位于存储库根目录的文件中,eci.yaml
。
key | type | Description |
---|---|---|
^{ | ^{ | This is a list of commands to run tests. |
^{ | ^{ | The number of passing test runs to remember. |
^{ | ^{ | Copy files matching these patterns back to the project. The patterns must be in an ^{ |
命令
所有命令都应该在目标存储库中运行。
ECI初始
初始化项目以便与easyci一起使用。这将安装必要的Git钩子(预提交+预推),并且如果一个配置文件不存在,则添加配置文件。
eci试验
运行测试。如果在测试运行历史记录中找到通过的测试运行,则这不会运行任何测试。
ECI手表
监视当前存储库的更改并自动运行测试。
eci-gc
运行内务处理任务以释放空间。目前,这只会删除已保存但未使用(无法访问)的测试结果。
ECI清除历史记录
清除测试运行历史记录。历史记录通常用于跟踪测试是否已针对项目的特定状态运行,以避免重复运行测试。此命令清除历史记录,使下一个eci test命令始终运行测试。