https://github.com/embeddedenterprises/burrow
A go build system that uses glide for dependency management.
https://github.com/embeddedenterprises/burrow
build-system glide go golang reproducible-builds
Last synced: 7 months ago
JSON representation
A go build system that uses glide for dependency management.
- Host: GitHub
- URL: https://github.com/embeddedenterprises/burrow
- Owner: EmbeddedEnterprises
- License: gpl-3.0
- Created: 2017-06-11T16:09:55.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2019-01-11T10:16:26.000Z (over 6 years ago)
- Last Synced: 2025-01-11T04:48:21.767Z (9 months ago)
- Topics: build-system, glide, go, golang, reproducible-builds
- Language: Go
- Size: 108 KB
- Stars: 3
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# burrow [](https://github.com/EmbeddedEnterprises/burrow/releases) [](https://travis-ci.org/EmbeddedEnterprises/burrow) [](https://goreportcard.com/report/github.com/EmbeddedEnterprises/burrow) [](https://godoc.org/github.com/EmbeddedEnterprises/burrow) [](https://hub.docker.com/r/embeddedenterprises/burrow/) [](https://hub.docker.com/r/embeddedenterprises/burrow/builds/)
> WARNING: This project got deprecated in favor of the official `go mod` tool!
Burrow is a go build system that used glide for dependency management, but now wraps the official `go mod` tool. Burrow tries to solve issues for creating reproducible builds with the `go tool`. Burrow is a wrapper around the `go tool` that enables the possibility to define default arguments for e.g. the `go build` command on a project basis. Additionally, burrow introduces a complete project lifecycle containing project creation, dependency management, building, installation, packaging, publication of version tags, documentation hosting, code formatting, and code checking.
However, every burrow project can still be built by issuing `go build` manually! Burrow is not needed to create a build of a burrow project. Burrow only simplifies the use of the `go tool` for easier build reproduction.
## But why another build system/tool for go?

So this is the next go build tool that makes the whole ecosystem even more complicated. But why are there so many go dependency management/build tools in the first place?
The `go tool` makes it really hard to let another developer reproduce your build. Glide helps but does not solve the problem of additional build parameters. A Makefile can be a solution for this but Makefiles are not that easy to update in a centralized manner. Also, the `go tool` does not model a development workflow for a project that integrates in the concept of reproducible builds. Burrow tries to solve this by providing a `publish` and a `package` command and using glide for dependency management.
## How to install burrow?
Do not use burrow for new projects! Every burrow project is buildable with the official go tooling.
## How to create a project?
Please do not use `burrow` for new projects. Instead use the official `go mod` tool for creating a new go project. Please refer to the [official documentation](https://github.com/golang/go/wiki/Modules) on go modules to create a new go project.
### The project layout of a burrow project
```
+-bin/
| +-app
+-example/
| +-api-showcase.go
+-package/
| +-app-0.1.0.tar.gz
+-vendor/
+-burrow.yaml
+-glide.lock
+-glide.yaml
+-LICENSE
+-main.go
+-README.md
```## How to build?
To build a burrow application just run
```
$ burrow build
```However, as `burrow` is now deprecated please use the official go tooling to build your projects now. You can run `burrow build` to see which `go build` commands are executed by `burrow` and integrate this into your own build process. Usually `burrow` runs
```
$ go build -o ./bin/ main.go
```## Other commands
The below text can be shown by running `burrow --help`.
```
Usage: burrow [global options] command [command options] [arguments...]A go build system that used glide for dependency management and is now deprecated in favor of 'go mod'.
Commands:
init, create Initializes a directory as a burrow project (deprecation stub).
new Creates a new folder that contains an empty burrow project (deprecation stub).
clone Clone a git repository into your current directory.
get Add a dependency to the go.mod file.
fetch, ensure, f, e Get all dependencies from the go.sum file to reproduce a build.
update, u, up Update all dependencies from the go.mod file and update the go.sum file.
run, r Run the application.
test, t Run all existing tests of the application.
build, b Build the application.
install, i, in, inst Install the application in the GOPATH.
uninstall, un, uninst Uninstall the application from the GOPATH.
package, pack Create a .tar.gz containing the binary.
publish, pub Publish the current version by building a package and setting a version tag in git.
clean Clean the project from any build artifacts.
doc Host the go documentation on this machine.
format, fmt Format the code of this project with 'go fmt'.
check, vet Check the code with 'go vet'.
major Increment the major part of the version for this project.
minor Increment the minor part of the version for this project.
patch Increment the patch part of the version for this project.
migrate Migrate project to the new 'go mod' project type.
help, h Shows a list of commands or help for one commandGlobal options:
--help, -h show help
--version, -v print the version
Authors:
Fin Christensen
burrow - Copyright (c) 2017-2019 EmbeddedEnterprises
```## License
This project is licensed under GPL-3.