cfs-binary-release is how we perform vendoring AND release management.
- Run
make yourbinaryname
to copy the target to the binaries/ directory - Run
make save
to have godep save/vendor the the build env based on YOUR CURRENT go path - Run
make test
to verify things aren't broken and binaries build. - Run
make diff
to see what godep changed - Edit VERSION and increment it
- Git add any new things
- Send Pull request
- go get the dependency to your system like usual (assuming its an external one)
- Run
make update
andmake save
to have godep save/vendor the build env based on YOUR CURRENT go path - Optionally run
make test
andmake diff
- Edit VERSION and increment it
- git add any new things
- Send Pull request
- go get -u the dependency to your system like usual
- run
godep update the/dependency/thing
- Optionally run
make test
andmake diff
- Edit VERSION and increment it
- git add any new things
- Send Pull request
- Edit the Makefile and add a new "yourbinaryname" target to copy the binary to binaries/yourbinaryname
- Edit the Makefile and add a new "yourbinaryname" build target to build the binary in builds/
- Edit the Makefile and add your new target to the
sync-all
targets dependencies - Profit?
- Run
make world
, sync's all existing binaries, and updates ALL dependencies
- Checkout a specific version
- Run
godep restore
which will likely make your existing $GOPATH/src ugly, so you might want tocp -a $GOPATH/src $GOPATH/stashedsrc
so you can flip back later.
Maybe automagically use git submodules to binaries ?
The .gitignore in binaries/ explicitly only allows files of type .go, .conf, and .toml
to make sure the repo stays clean and doesn't accidentally get contaminated with other cruft.