CIZE:像 Gulp 一样搭建一个 CI 服务
CIZE 是什么?
CIZE 是一个「持续集成」工具,希望能让开发人员更快捷的搭建一个完整、可靠、便捷的 CI 服务。
甚至可以像 Gulp 或 Grunt 一样,仅仅通过一个 cizefile.js 即可完成几乎所有的工作。
$ [sudo] npm install cize -g编写 Job
新建 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
const demo = cize.project(demo, { //可以在此添加针对项目的配置 });
注意,即便一个项目不需要任何配置,也不能省略第二个参数,
没有第二个参数时 cize.project(name) 为获取指定的项目
假定现在已经有一个定义好的名为 demo 的 project
用 js 编写的 Jobdemo.job(test, function (self) { self.console.log(test); self.done(); });
这是最基础的 Job 类型,是其它 Job 类型或「扩展」的基础。
用 shell 编写的 Jobdemo.job(test, cize.shell(function () { echo "hello world" }));
定义一个用 SHELL 编写的 Job,用到了 cize.shell,这是一个「内置扩展」
定时执行的 Jobdemo.job(test, cize.cron(* */2 * * * *, cize.shell(function () { echo "hello world" })));
如上定义了一个每两分种触发一次的 Job 并且,嵌套使用了 shell.
监听其它 Job 的 Jobdemo.job(test2, cize.by(test1, function(self){ self.console.log(hello); self.done(); });
如下,在 test1 执行成功后,将会触发 test2
串行执行的 Jobdemo.job(test, cize.series([ "test1", function(self){ self.console.log(hello); self.done(); "test3" ]));
series 是一个内置扩展,可以定义一个「串行执行」多个步骤的任务列表,每个步骤可以是一个任意类型的 job,
也可以是指定要调用的其它 Job 的名称。
demo.job(test, cize.parallel([ "test1", function(self){ self.console.log(hello); self.done(); "test3" ]));
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 服务的端口、密钥等,有两种方式,如下
在 cizefile.js 中配置cize.config({ port: 9000, secret: 12345 });通过命令行工具
cize ./ -p=port -s=secret
通过 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
所有 Job 都在单儿独立在一个进程中执行(现在可能会有 n 个 job 共用一个主进程) 集成 DockerTravis CI简介 什么是持续集成? Travis CI 提供的是持续集成服务(Continuous Integration,简称 CI)。它绑定 Github 上面的项目,只要有新的代码,就会自动抓取。然后,提供一个运行环境,执行测试,完成构建,还能部署到服务器。
CI/CD持续集成概念(一) 持续集成 1.集成的概念 1.1.什么是集成 在实际的软件开发中,常常会有如下两种场景: 1.现在有一个电商平台开发,由于平台需要开发的某块较多,此时需要不同的开发人员开发不同的模块,最后将所有人开发好的代码集成到一个系统中,集成完毕后需要对其进行部署上线 2.随着时间的推移,该系统无论是bug修复、还是新功能开发,后续都需要对系统进行不断的更新迭代
7款不错的 CI/CD工具 时至今日,越来越多的工程团队开始实行敏捷开发,借以推动更短、更快的发布周期。而代码库的增长与更高的生产构建频率,也带动持续集成与持续部署/交付工具快速兴起。 什么是CI / CD?其意义何在?
一篇文章带你了解CI/CD的常见问题 DevOps最核心的特点,是持续化。CI/CD时代,提倡持续集成和持续交付;而在DevOps时代,软件生命周期的每个阶段都被持续化,因此有了持续计划,持续开发,持续集成,持续测试,持续部署,持续交付和持续监控。
新一代 CI 持续集成工具 flow.ci 正式开源 很高兴地宣布 flow.ci 在 Apache-2.0 协议下正式开源了。flow.ci 是国内首套开源持续集成(CI) 解决方案,帮助企业团队实现开发流程(build-test-deploy)自动化,快速持续交付高质量软件。
相关文章
- js replace 全局替换 以表单的方式提交参数 判断是否为ie浏览器 将jquery.qqFace.js表情转换成微信的字符码 手机端省市区联动 新字体引用本地运行可以获得,放到服务器上报404 C#提取html中的汉字 MVC几种找不到资源的解决方式 使用Windows服务定时去执行一个方法的三种方式
- Android SQLite服务--创建、增删改查
- FTP&samba 服务简单部署
- 发现Vs2010中对于开发者最实用的一个服务模块(开发任务管理)!
- 快速搭建一个简易的KMS 服务
- consul配置acl:允许注册和访问所有节点,并读取任何服务
- 微服务技术系列教程(28) - SpringCloud- 分布式服务跟踪Sleuth
- 一个简单的HTTP请求和响应服务-httpbin.org
- 搭建Spring Boot+Spring Cloud微服务
- 用户在第二层,而你在第五层,深度玩转华为预测服务
- 移动医疗领域的另一个出口:增值服务的未来
- Android应用开发-广播和服务
- 云服务器的那些坑之 ddos攻击 刚购买的阿里云服务就不能用了
- Linux启动一个服务后,服务的某个文件所在的目录下出现类似:systemd-private.xxxxxx的目录
- 微服务的监控
- linux学习一个服务(未完)
- 快应用接入帐号服务指导
- 企业级SaaS服务领域,会诞生下一个独角兽吗?
- 强制删除一个Windows服务
- CentOS7添加自定义脚本服务
- Cisco Live 2016:CEO罗卓克谈英国脱欧、内部孵化以及向服务转型
- 银联卡代理商开始向日企提供网购结算服务