Skip to content

Commit

Permalink
Merge pull request #116 from tgross/godeps_again
Browse files Browse the repository at this point in the history
Improvements to dependency management
  • Loading branch information
tgross committed Mar 25, 2016
2 parents 826777b + f947a84 commit 4664155
Show file tree
Hide file tree
Showing 7 changed files with 56 additions and 68 deletions.
10 changes: 6 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,11 @@ _testmain.go
build/
release/
cover/
/vendor/
/Godeps/_workspace/
examples/**/opt/containerbuddy/containerbuddy
vendor/
Godeps/_workspace/
*.tar.gz
.godeps
*.log

# fake paths from overlaying volumes in Docker
/src
containerbuddy/src/
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ RUN go get github.com/golang/lint/golint \

ENV CGO_ENABLED 0
ENV GO15VENDOREXPERIMENT 1
ENTRYPOINT ["make"]
ENV GOPATH /go/cb
35 changes: 0 additions & 35 deletions Makefile.docker

This file was deleted.

2 changes: 1 addition & 1 deletion Godeps/Godeps.json → containerbuddy/Godeps/Godeps.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

File renamed without changes.
2 changes: 1 addition & 1 deletion main.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package main

import "github.com/joyent/containerbuddy/containerbuddy"
import "containerbuddy"

func main() {
containerbuddy.Main()
Expand Down
73 changes: 47 additions & 26 deletions makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,41 +3,33 @@ SHELL := /bin/bash
.SHELLFLAGS := -o pipefail -euc
.DEFAULT_GOAL := build

.PHONY: clean test integration consul etcd run-consul run-etcd example example-consul example-etcd ship dockerfile docker cover lint
.PHONY: clean test integration consul etcd run-consul run-etcd example example-consul example-etcd ship dockerfile docker cover lint vendor

VERSION ?= dev-build-not-for-release
LDFLAGS := '-X github.com/joyent/containerbuddy/containerbuddy.GitHash=$(shell git rev-parse --short HEAD) -X github.com/joyent/containerbuddy/containerbuddy.Version=${VERSION}'
LDFLAGS := -X containerbuddy.GitHash='$(shell git rev-parse --short HEAD)' -X containerbuddy.Version='${VERSION}'

ROOT := $(shell pwd)
PACKAGE := github.com/joyent/containerbuddy
GO15VENDOREXPERIMENT := 1
export GO15VENDOREXPERIMENT

COMPOSE_PREFIX_ETCD := exetcd
COMPOSE_PREFIX_CONSUL := exconsul

DOCKERRUN := docker run --rm \
--link containerbuddy_consul:consul \
--link containerbuddy_etcd:etcd \
-v ${ROOT}/vendor:/go/src \
-v ${ROOT}:/go/src/${PACKAGE} \
-v ${ROOT}/build:/build \
-v ${ROOT}/cover:/cover \
-v ${ROOT}/Makefile.docker:/go/makefile:ro \
-e LDFLAGS=${LDFLAGS} \
-v ${ROOT}:/go/cb \
-v ${ROOT}:/go/cb/src \
-w /go/cb \
containerbuddy_build

DOCKERBUILD := docker run --rm \
-v ${ROOT}/vendor:/go/src \
-v ${ROOT}:/go/src/${PACKAGE} \
-v ${ROOT}/build:/build \
-v ${ROOT}/cover:/cover \
-v ${ROOT}/Makefile.docker:/go/makefile:ro \
-e LDFLAGS=${LDFLAGS} \
-e LDFLAGS="${LDFLAGS}" \
-v ${ROOT}:/go/cb \
-v ${ROOT}:/go/cb/src \
-w /go/cb \
containerbuddy_build

clean:
rm -rf build release cover vendor
rm -rf build release cover containerbuddy/vendor
docker rmi -f containerbuddy_build > /dev/null 2>&1 || true
docker rm -f containerbuddy_consul > /dev/null 2>&1 || true
docker rm -f containerbuddy_etcd > /dev/null 2>&1 || true
Expand All @@ -49,8 +41,9 @@ clean:
# default top-level target
build: build/containerbuddy

build/containerbuddy: build/containerbuddy_build vendor containerbuddy/*.go
${DOCKERBUILD} build
build/containerbuddy: build/containerbuddy_build containerbuddy/*.go containerbuddy/vendor
${DOCKERBUILD} go build -o build/containerbuddy -ldflags "$(LDFLAGS)"
@rmdir src || true

# builds the builder container
build/containerbuddy_build:
Expand All @@ -63,21 +56,49 @@ build/containerbuddy_build:
# working test environment
docker: build/containerbuddy_build consul etcd

vendor: build/containerbuddy_build
${DOCKERBUILD} vendor
# top-level target for vendoring our packages: godep restore requires
# being in the package directory so we have to run this for each package
vendor: containerbuddy/vendor
%/vendor: build/containerbuddy_build
docker run --rm \
-v ${ROOT}:/go/cb \
-v ${ROOT}:/go/cb/src \
-e GOPATH=/go/cb/src/$(*F) \
-w /go/cb/src/$(*F) \
containerbuddy_build godep restore
mv $(*F)/src $(*F)/vendor

# fetch a dependency via go get, vendor it, and then save into the parent
# package's Godeps
# usage DEP=github.com/owner/package PKG=containerbuddy make add-dep
add-dep: build/containerbuddy_build
docker run --rm \
-v ${ROOT}:/go/cb \
-v ${ROOT}:/go/cb/src \
-e GOPATH=/go/cb/src/$(PKG) \
-w /go/cb/src/$(PKG) \
containerbuddy_build go get $(DEP)
docker run --rm \
-v ${ROOT}:/go/cb \
-v ${ROOT}:/go/cb/src \
-e GOPATH=/go/cb/src/$(PKG) \
-w /go/cb/src/$(PKG) \
containerbuddy_build godep save
mv $(PKG)/src $(PKG)/vendor

# ----------------------------------------------
# develop and test

lint: vendor
${DOCKERBUILD} lint
${DOCKERBUILD} golint src/

# run unit tests
test: docker vendor
${DOCKERRUN} test
@mkdir -p cover
${DOCKERRUN} go test -v -coverprofile=cover/coverage.out containerbuddy

cover: docker vendor
${DOCKERRUN} cover
cover: test
${DOCKERRUN} go tool cover -html=cover/coverage.out -o cover/coverage.html

# run integration tests
integration: build
Expand Down

0 comments on commit 4664155

Please sign in to comment.