簡潔的自動化任務構建工具
簡介
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}"</pre>
介紹
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}"</pre>
使用命令
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