From 4fc835ce4395cdaf97c55e4738792fc991c0bd8b Mon Sep 17 00:00:00 2001 From: sabith Date: Sun, 8 Jul 2018 09:10:35 -0700 Subject: [PATCH] Using travis for CI CD Signed-off-by: sabith --- .gitignore | 2 ++ .travis.yml | 15 +++++++++++ Gopkg.lock | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++ Gopkg.toml | 50 ++++++++++++++++++++++++++++++++++ Makefile | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 217 insertions(+) create mode 100644 .gitignore create mode 100644 .travis.yml create mode 100644 Gopkg.lock create mode 100644 Gopkg.toml create mode 100644 Makefile diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fd8ceee --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +vendor/ +build/ diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..c029d14 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,15 @@ +language: go + +go: + - master + +script: make + +deploy: + provider: releases + api_key: $GITHUB_TOKEN + file_glob: true + file: "build/*" + skip_cleanup: true + on: + tags: true diff --git a/Gopkg.lock b/Gopkg.lock new file mode 100644 index 0000000..d374445 --- /dev/null +++ b/Gopkg.lock @@ -0,0 +1,73 @@ +# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. + + +[[projects]] + name = "github.com/Sirupsen/logrus" + packages = ["."] + revision = "c155da19408a8799da419ed3eeb0cb5db0ad5dbc" + version = "v1.0.5" + +[[projects]] + name = "github.com/bitly/go-simplejson" + packages = ["."] + revision = "aabad6e819789e569bd6aabf444c935aa9ba1e44" + version = "v0.5.0" + +[[projects]] + name = "github.com/eclipse/paho.mqtt.golang" + packages = [ + ".", + "packets" + ] + revision = "36d01c2b4cbeb3d2a12063e4880ce30800af9560" + version = "v1.1.1" + +[[projects]] + name = "github.com/mattn/go-colorable" + packages = ["."] + revision = "167de6bfdfba052fa6b2d3664c8f5272e23c9072" + version = "v0.0.9" + +[[projects]] + name = "github.com/mattn/go-isatty" + packages = ["."] + revision = "0360b2af4f38e8d38c7fce2a9f4e702702d73a39" + version = "v0.0.3" + +[[projects]] + name = "github.com/urfave/cli" + packages = ["."] + revision = "cfb38830724cc34fedffe9a2a29fb54fa9169cd1" + version = "v1.20.0" + +[[projects]] + branch = "master" + name = "golang.org/x/crypto" + packages = ["ssh/terminal"] + revision = "a49355c7e3f8fe157a85be2f77e6e269a0f89602" + +[[projects]] + branch = "master" + name = "golang.org/x/net" + packages = [ + "internal/socks", + "proxy", + "websocket" + ] + revision = "32a936f46389aa10549d60bd7833e54b01685d09" + +[[projects]] + branch = "master" + name = "golang.org/x/sys" + packages = [ + "unix", + "windows" + ] + revision = "3c6ecd8f22c6f40fbeec94c000a069d7d87c7624" + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + inputs-digest = "93f25dec6686dd7cc9f3c37e4ba3b599e150e4d41817bc4f6d8a5ef5a450001e" + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/Gopkg.toml b/Gopkg.toml new file mode 100644 index 0000000..6340282 --- /dev/null +++ b/Gopkg.toml @@ -0,0 +1,50 @@ +# Gopkg.toml example +# +# Refer to https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md +# for detailed Gopkg.toml documentation. +# +# required = ["github.com/user/thing/cmd/thing"] +# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"] +# +# [[constraint]] +# name = "github.com/user/project" +# version = "1.0.0" +# +# [[constraint]] +# name = "github.com/user/project2" +# branch = "dev" +# source = "github.com/myfork/project2" +# +# [[override]] +# name = "github.com/x/y" +# version = "2.4.0" +# +# [prune] +# non-go = false +# go-tests = true +# unused-packages = true + + +[[constraint]] + name = "github.com/Sirupsen/logrus" + version = "1.0.5" + +[[constraint]] + name = "github.com/bitly/go-simplejson" + version = "0.5.0" + +[[constraint]] + name = "github.com/eclipse/paho.mqtt.golang" + version = "1.1.1" + +[[constraint]] + name = "github.com/mattn/go-colorable" + version = "0.0.9" + +[[constraint]] + name = "github.com/urfave/cli" + version = "1.20.0" + +[prune] + go-tests = true + unused-packages = true diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..e7044b9 --- /dev/null +++ b/Makefile @@ -0,0 +1,77 @@ +GREEN := $(shell tput -Txterm setaf 2) +YELLOW := $(shell tput -Txterm setaf 3) +WHITE := $(shell tput -Txterm setaf 7) +RESET := $(shell tput -Txterm sgr0) + + +.PHONY: all + +GO_PROJECT = github.com/shirou/mqttcli +BUILD_DEST = build +COMMIT_HASH=`git rev-parse --short HEAD` +GIT_COMMIT = $(shell git rev-parse HEAD) +GIT_SHA = $(shell git rev-parse --short HEAD) +GIT_DIRTY = $(shell test -n "`git status --porcelain`" && echo "dirty" || echo "clean") + +LDFLAGS += -w -s -extldflags -static + +ifndef VERSION + VERSION = DEV +endif + +GOFLAGS := -ldflags "$(LDFLAGS)" + +## Download dependencies and the run unit test and build the binary +all: install clean build + +## Clean the dist directory +clean: + @rm -rf $(BUILD_DEST) + +## download dependencies to run this project +install: + @which gox > /dev/null || go get github.com/mitchellh/gox + @which dep > /dev/null || go get github.com/golang/dep/cmd/dep + dep ensure -vendor-only + +## Run for local development +start: + DATA_DIRECTORY="$$PWD/data" \ + go run *.go + +## Build the linux binary +build: + @rm -rf $(BUILD_DEST) + @mkdir -p $(BUILD_DEST) > /dev/null + @CGO_ENABLED=0 \ + gox \ + -output "$(BUILD_DEST)/{{.Dir}}_{{.OS}}_{{.Arch}}" \ + $(GOFLAGS) \ + . + +## Prints the version info about the project +info: + @echo "Version: ${VERSION}" + @echo "Git Commit: ${GIT_COMMIT}" + @echo "Git Tree State: ${GIT_DIRTY}" + +## Print the dependency graph and open in MAC +dependencygraph: + dep status -dot | dot -T png | open -f -a /Applications/Preview.app + +## Prints this help command +help: + @echo '' + @echo 'Usage:' + @echo ' ${YELLOW}make${RESET} ${GREEN}${RESET}' + @echo '' + @echo 'Targets:' + @awk '/^[a-zA-Z\-\_0-9]+:/ { \ + helpMessage = match(lastLine, /^## (.*)/); \ + if (helpMessage) { \ + helpCommand = substr($$1, 0, index($$1, ":")-1); \ + helpMessage = substr(lastLine, RSTART + 3, RLENGTH); \ + printf " ${YELLOW}%-$(TARGET_MAX_CHAR_NUM)s${RESET}: ${GREEN}%s${RESET}\n", helpCommand, helpMessage; \ + } \ + } \ + { lastLine = $$0 }' $(MAKEFILE_LIST) \ No newline at end of file