简洁的自动化任务构建工具
简介
Build是一个使用GO语言编写的自动化任务构建工具,可根据描述配置执行任务。类似于JavaScript中的Grunt与Gulp工具,但更加简单,不需要编写复杂的逻辑代码。
简单示例
以下例子描述了当web目录(/path/web)下任意.go文件发生变化时,自动执行名为build的任务,即切换到web目录下执行”go build”命令。
variable: web: "/path/web" task: build: - "cd ${web} && go build" watch: ${web}/*.go: "${build}"
介绍
Build使用YAML格式的配置文件来描述任务,分为变量(variable),任务(task),监控(watch)三个字段。
变量(variable)
变量定义了需要在任务或监控字段中可替换的字符串,变量中也可引用其他变量。
任务(task)
任务是按顺序执行的Shell命令,或引用的其他任务。若在引用的任务名前加#,表示该任务是非阻塞的,Build不会等待该任务完成,而是继续执行后面的任务。
监控(watch)
当任意文件发生变化时,执行任务中定义的任务,其中可以引用变量。
复杂示例
定义了两个变量,其中path1是/a/b,path2则是/a/b/c
定义了三个任务,其中default是默认任务,build命令会执行该任务,而build develop与build commit命令则分别执行develop与commit任务。default任务中,会并发执行develop与commit任务
定义了一个监控,当/a/b/c/*.go文件发生变化时,执行develop任务
variable: path1: "/a/b" path2: "${path1}/c" task: default: - "${#develop}" - "${commit}" develop: - "cd ${path1} && go build" - "${path1}/program" commit: - "cd ${path1} && git push origin" watch: ${path1}/*.go: "${develop}"
使用命令
build [-c build.yml] [-s] [-k] [task name]
-c指定配置文件目录,若不指定,则使用当前目录的build.yml
-s指定在执行任务时,不输出日志
-k指定在监控到文件变化后,不清空输出的日志
最后指定任务名称,若不指定将执行default任务
源码
https://github.com/InkProject/build.go
Clone代码后,使用go build build.go命令编译,获得名为build的可执行文件
来自:http://www.inkpaper.io/blog/post/2015/05/17/golang-build-tool.html