CIZE 是一个「持续集成」工具,希望能让开发人员更快捷的搭建一个完整、可靠、便捷的 CI 服务。甚至可以像 Gulp 或 Grunt 一样,仅仅通过一个 cizefile.js 即可完成几乎所有的工作。
新建 cizefile.js
$ mkdir your_path $ cd your_path $ vim cizefile.js输入如下内容
//定义「项目」 const demo = cize.project('demo', {}); //定义一个 Job,这是一个最基础的 Job demo.job('hello', function (self) { self.console.log('hello world'); self.done(); });然后,在「工作目录」中执行 cize 启动服务
$ cize Strarting... The server on "localhost:9000" started默认会启动和 CPU 核数相同的「工作进程」。
接下来,可以在浏览器中访问 http://localhost:9000 , 并可以在 UI 中手动触发这个名为 hello 的 Job
注意,即便一个项目不需要任何配置,也不能省略第二个参数,没有第二个参数时 cize.project(name) 为获取指定的项目
假定现在已经有一个定义好的名为 demo 的 project
这是最基础的 Job 类型,是其它 Job 类型或「扩展」的基础。
定义一个用 SHELL 编写的 Job,用到了 cize.shell,这是一个「内置扩展」
如上定义了一个每两分种触发一次的 Job 并且,嵌套使用了 shell.
如下,在 test1 执行成功后,将会触发 test2
series 是一个内置扩展,可以定义一个「串行执行」多个步骤的任务列表,每个步骤可以是一个任意类型的 job,也可以是指定要调用的其它 Job 的名称。
series 是一个内置扩展,可以定义一个「并行执行」多个步骤的任务列表,每个步骤可以是一个任意类型的 job,也可以是指定要调用的其它 Job 的名称。
CIZE 所有的 Job 可以自由嵌套,例如:
demo.job('test', cize.parallel([ "test1", function(self){ self.console.log('hello'); self.done(); }, "test3", cize.series([ "test4", cize.shell(function(){ /* echo hello */ }) ]) ]));当你使用一个「外部扩展」时,也可以混合使用。
如上用到的 cize.shell、cize.series、cize。parallel、cize.cron、cize.by 是 cize 默契认包含的「内置扩展」。编写一个「外部扩展」和「内置扩展」并无本质区别,如下:
module.exports = function(options...){ return function(self){ //处理逻辑 }; };如查需要在 Job 定义时进行一些处理,可以使用 register ,如下
module.exports = function(options...){ return { register: function(Job){ //Job 是你的「自定义 Job 类型」 //注册时逻辑 }, runable: function(self){ //执行时逻辑 } }; };可以将扩展发布为一个「npm 包」,让更多的人使用。
可以通过一些选择去控制 CI 服务的端口、密钥等,有两种方式,如下
通过 cize -h 可以查看完整的说明
Usage: cize [folder|file] [options] Options: -w set the number of workers -p set the port -s set the secret -h display help information Example: cize ./ -p=9000 -s=12345 -w=4请访问 wiki: https://github.com/Houfeng/cize/wiki