Инструментов мало. Тема сообществом мало проработана. Возможно, makefile всех устраивает.
- makex понимает уже существующие makefiles.
- goxc в своё время популярный сборщик для кроссплатформенной разработки.
С выходом
go 1.6
его популярность спала. Но в этом комбайне есть хороший модуль тасков. Плюс, другие модули, например, автоматическое версионирование. Использует в качестве конфига JSON файл (как gulp, например). - robo для описания тасков использует YAML конфиг. Даже живой.
- gofer уже более интересный вариант. Но запутанный синтаксис создания задач.
Самый интересный вариант. Идея хорошая.
Смысл такой. По принципу создания тестов, создаются файлы *_task.go
Можно все задачи в один файл, можно разбивать на разные и раскладывать по папкам проекта.
Чтобы файлы не компилировались со всем проектом, вставляется директива компилятора go build
(по принципу разделения файлов по платформам):
// +build gotask
Сами задачи описываются в виде:
func TaskXxx(t *tasking.T) {
...
}
Поддерживается передача параметров командной строки внутрь задачи и описание usage
и т.д.
Для детального описания можно ознакомиться с этой короткой статьёй.
Нашёл несколько пакетов, которые её реализуют:
Каждая группа хороша для своих задач.
Если нравится makefiles, но самого make
нет (на винде), можно использовать makex.
Если привыкли к gulp
, то - GOXC. Очень схожая идеалогия.
Robo тоже неплох, но лично мне YAML синтаксис нравится меньше JSON.
Эти два пакета удобны, если в качестве тасков нужно запускать утилиты коммандной строки.
Самый идиоматичный путь, считаю go-task. Единственный минус в том, что даже вызов утилит коммандной строки нужно будет писать на Go (cmd.exec и прочее). В качестве плюса большая гибкость.