理解版本控制的任务运行器
项目描述
Radish是一个理解版本控制的任务运行器。
您定义一个适用于您存储库中多个子项目的命令,然后radish将确定哪些项目已更改,并仅对这些项目运行命令。Radish不是make、gulp、gradle、rake或其他任务运行器的替代品。它是其他运行器和脚本的编排补充,具有来自版本控制存储库的一些智能。
如果您使用的是支持将管道作为一等公民的CI/CD服务器,例如Concourse或GoCD,那么您可能不需要在CI/CD服务器上使用radish。不过,在您的开发机器上它可能仍然很有用。
安装
Radish可在PyPi上作为radish-run找到,并可通过pip在大多数系统上安装
$ pip install radish-run
如何使用
radish的示例调用
$ radish command tests --from 19abc023 --to 2514ecb1
Changed paths:
- extensions/cool-extension/
- frontend/js/
Running tests for extensions/cool-extension/:
...........
OK
Running tests for frontend/js/:
..........................
OK
All commands ended successfully and ran in 9.75s.
配置
radish配置是一个名为Radishfile的yaml文件,因为我可以。
paths:
- extensions/*/ # Mark each subdirectory in extensions as a path
- frontend/js/
commands: # Runs from the directory denoted by paths above
tests:
default: bin/rspec spec
frontend/js/: npm test
一个示例用例
假设您正在构建一个单页Web应用程序,它由两部分组成:- 提供JSON的后端 - 拥有所有用户看到的点击部分的客户端
因为这个跨职能团队的项目在一个存储库中,这对生产力来说是一个巨大的胜利。但是,它也有一个缺点:当只有后端发生变化时,仍然会运行所有前端测试。最后,在运行所有测试后可以部署,但然后两个网站都会部署,尽管前端没有任何变化。
这是一个疯狂的情况。它不应该这样。这就是萝卜发挥作用的地方。你告诉萝卜关于 测试 和 部署 的事情,以及这对后端和前端意味着什么,然后在你的持续集成服务器上运行最后一个绿色提交的命令。然后萝卜会找出从当前提交到最后一个提交之间的变化,并且只为那些项目运行命令。
贡献
路线图
定义一个始终运行的路由/项目,无论是否有更改
如果项目有更改,则运行不同的命令
允许将更改的文件传递给命令。主要是一个本地开发盒子的功能,所以你只需针对更改的文件运行命令。
项目之间的依赖关系。如果 前端支付 项目有更改,那么也在 前端 项目中运行命令。
CI系统中的自定义不同,以便它们可以智能地找出最后一个绿色提交是什么,而不是依赖 HEAD~1 作为“什么是最后一个更改?”的穷人版
本地开发
要开始,请使用当前的Python全局版本执行
$ git clone https://github.com/gaqzi/radish.git
$ cd radish/
$ make develop
$ make test
这将安装所有依赖项,检出测试库,然后运行所有测试。
许可证
啤酒许可协议
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。