簡潔的自動化任務構建工具

jopen 9年前發布 | 8K 次閱讀 自動化 項目構建

簡介

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

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!