github.com/technosophos/deis@v1.7.1-0.20150915173815-f9005256004b/mesos/Makefile (about)

     1  include ../includes.mk
     2  
     3  REPO = deis
     4  MESOS = 0.22.1-1.0.ubuntu1404
     5  ZOOKEEPER_VERSION = 3.5.0
     6  MARATHON_VERSION = 0.8.2-RC3
     7  
     8  repo_path = github.com/deis/deis/mesos
     9  
    10  GO = godep go
    11  GOFMT = gofmt -l
    12  GOLINT = golint
    13  GOTEST = $(GO) test -cover -race -v
    14  GOVET = $(GO) vet
    15  
    16  COMPONENT = $(notdir $(repo_path))
    17  GO_PACKAGES = pkg/boot pkg/confd pkg/etcd pkg/fleet pkg/log pkg/net pkg/os pkg/types
    18  GO_PACKAGES_REPO_PATH = $(addprefix $(repo_path)/,$(GO_PACKAGES))
    19  
    20  SHELL_SCRIPTS = $(shell find "." -name '*.sh')
    21  
    22  MASTER_IMAGE = $(IMAGE_PREFIX)mesos-master:$(BUILD_TAG)
    23  MASTER_DEV_IMAGE = $(REGISTRY)$(MASTER_IMAGE)
    24  MARATHON_IMAGE = $(IMAGE_PREFIX)mesos-marathon:$(BUILD_TAG)
    25  MARATHON_DEV_IMAGE = $(REGISTRY)$(MARATHON_IMAGE)
    26  SLAVE_IMAGE = $(IMAGE_PREFIX)mesos-slave:$(BUILD_TAG)
    27  SLAVE_DEV_IMAGE = $(REGISTRY)$(SLAVE_IMAGE)
    28  ZOOKEEPER_IMAGE = $(IMAGE_PREFIX)zookeeper:$(BUILD_TAG)
    29  ZOOKEEPER_DEV_IMAGE = $(REGISTRY)$(ZOOKEEPER_IMAGE)
    30  
    31  build: test-style zookeeper-go mesos-template mesos-master mesos-slave mesos-marathon zookeeper
    32  
    33  install: check-deisctl
    34  	deisctl install $(COMPONENT)
    35  
    36  uninstall: check-deisctl
    37  	deisctl uninstall $(COMPONENT)
    38  
    39  start: check-deisctl
    40  	deisctl start $(COMPONENT)
    41  
    42  stop: check-deisctl
    43  	deisctl stop $(COMPONENT)
    44  
    45  restart: stop start
    46  
    47  run: install start
    48  
    49  dev-release: push set-image
    50  
    51  push: check-registry
    52  	docker tag -f $(MASTER_IMAGE) $(MASTER_DEV_IMAGE)
    53  	docker push $(MASTER_DEV_IMAGE)
    54  	docker tag -f $(SLAVE_IMAGE) $(SLAVE_DEV_IMAGE)
    55  	docker push $(SLAVE_DEV_IMAGE)
    56  	docker tag -f $(MARATHON_IMAGE) $(MARATHON_DEV_IMAGE)
    57  	docker push $(MARATHON_DEV_IMAGE)
    58  	docker tag -f $(ZOOKEEPER_IMAGE) $(ZOOKEEPER_DEV_IMAGE)
    59  	docker push $(ZOOKEEPER_DEV_IMAGE)
    60  
    61  set-image: check-deisctl
    62  	deisctl config mesos-master set image=$(MASTER_DEV_IMAGE)
    63  	deisctl config mesos-slave set image=$(SLAVE_DEV_IMAGE)
    64  	deisctl config mesos-marathon set image=$(MARATHON_DEV_IMAGE)
    65  	deisctl config zookeeper set image=$(ZOOKEEPER_DEV_IMAGE)
    66  
    67  release:
    68  	docker push $(MASTER_IMAGE)
    69  	docker push $(SLAVE_IMAGE)
    70  	docker push $(MARATHON_IMAGE)
    71  	docker push $(ZOOKEEPER_IMAGE)
    72  
    73  deploy: build dev-release restart
    74  
    75  setup-gotools:
    76  	go get -u github.com/jteeuwen/go-bindata/...
    77  
    78  mesos-go: setup-gotools
    79  	GOOS=linux GOARCH=amd64 CGO_ENABLED=0 godep go build -a -installsuffix cgo -ldflags '-s' -o bin/master-boot pkg/boot/mesos/master/main.go
    80  	@$(call check-static-binary,bin/master-boot)
    81  	GOOS=linux GOARCH=amd64 CGO_ENABLED=0 godep go build -a -installsuffix cgo -ldflags '-s' -o bin/slave-boot pkg/boot/mesos/slave/main.go
    82  	@$(call check-static-binary,bin/slave-boot)
    83  	go-bindata -pkg bindata -o bindata/marathon/bindata.go pkg/boot/mesos/marathon/bash/; \
    84  	GOOS=linux GOARCH=amd64 CGO_ENABLED=0 godep go build -a -installsuffix cgo -ldflags '-s' -o bin/marathon-boot pkg/boot/mesos/marathon/main.go
    85  	@$(call check-static-binary,bin/marathon-boot)
    86  
    87  mesos-template:
    88  	sed "s/#VERSION#/$(MESOS)/g" template > Dockerfile
    89  	docker build -t $(IMAGE_PREFIX)$@:$(BUILD_TAG) .
    90  	rm -f Dockerfile
    91  
    92  mesos-master: mesos-go mesos-template
    93  	sed "s@#PREFIX#@$(IMAGE_PREFIX)@;s/#VERSION#/$(BUILD_TAG)/g" master > Dockerfile
    94  	docker build -t $(IMAGE_PREFIX)$@:$(BUILD_TAG) .
    95  	rm -f Dockerfile
    96  
    97  mesos-slave: mesos-go mesos-template
    98  	sed "s@#PREFIX#@$(IMAGE_PREFIX)@;s/#VERSION#/$(BUILD_TAG)/g" slave > Dockerfile
    99  	docker build -t $(IMAGE_PREFIX)$@:$(BUILD_TAG) .
   100  	rm -f Dockerfile
   101  
   102  build-mesos-marathon: mesos-template
   103  	sed "s/#MARATHON_VERSION#/$(MARATHON_VERSION)/;s@#PREFIX#@$(IMAGE_PREFIX)@;s/#VERSION#/$(BUILD_TAG)/g" build-marathon > Dockerfile
   104  	docker build -t $(IMAGE_PREFIX)$@:$(BUILD_TAG) .
   105  	rm -f Dockerfile
   106  
   107  mesos-marathon: mesos-go build-mesos-marathon
   108  	cp marathon Dockerfile
   109  	docker cp `docker create $(IMAGE_PREFIX)build-mesos-marathon:$(BUILD_TAG) /bin/bash`:/marathon/target/marathon-assembly-$(MARATHON_VERSION).jar .
   110  	mv marathon-assembly-$(MARATHON_VERSION).jar marathon-assembly.jar
   111  	sed "s/#MARATHON_VERSION#/$(MARATHON_VERSION)/;s@#PREFIX#@$(IMAGE_PREFIX)@;s/#VERSION#/$(BUILD_TAG)/" marathon > Dockerfile
   112  	docker build -t $(IMAGE_PREFIX)$@:$(BUILD_TAG) .
   113  	rm -f Dockerfile
   114  
   115  zookeeper: zookeeper-go
   116  	docker build -t $(IMAGE_PREFIX)$@:$(BUILD_TAG) zookeeper/.
   117  
   118  zookeeper-go:
   119  	echo "Building..."
   120  	go-bindata -pkg bindata -o bindata/zookeeper/bindata.go pkg/boot/zookeeper/bash/; \
   121  	GOOS=linux GOARCH=amd64 CGO_ENABLED=0 godep go build -a -installsuffix cgo -ldflags '-s' -o zookeeper/bin/boot pkg/boot/zookeeper/main/boot.go
   122  	@$(call check-static-binary,zookeeper/bin/boot)
   123  
   124  test: mesos-go zookeeper-go
   125  	@$(GOFMT) -timeout 10s $(GO_PACKAGES)
   126  
   127  test-style:
   128  	@$(GOFMT) $(GO_PACKAGES)
   129  	@$(GOFMT) $(GO_PACKAGES) | read; if [ $$? == 0 ]; then echo "gofmt check failed."; exit 1; fi
   130  	$(GOVET) $(GO_PACKAGES_REPO_PATH)
   131  	@for i in $(addsuffix /...,$(GO_PACKAGES)); do \
   132  		$(GOLINT) $$i; \
   133  	done
   134  	shellcheck $(SHELL_SCRIPTS)