diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..19517f1 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,31 @@ +workspace: + base: /srv/app + path: src/git.mowie.cc/konrad/Konfi-Castle-Kasino + +pipeline: + clone: + image: plugins/git + depth: 50 + tags: true + + build: + image: webhippie/golang:edge + pull: true + environment: + TAGS: bindata sqlite + GOPATH: /srv/app + commands: + - make build + when: + event: [ push, tag, pull_request ] + + static: + image: karalabe/xgo-latest:latest + pull: true + environment: + TAGS: bindata sqlite + GOPATH: /srv/app + commands: + - make release + when: + event: [ push, tag ] \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..98e1eb6 --- /dev/null +++ b/Makefile @@ -0,0 +1,125 @@ +DIST := dist +IMPORT := git.mowie.cc/konrad/Konfi-Castle-Kasino + +SED_INPLACE := sed -i + +ifeq ($(OS), Windows_NT) + EXECUTABLE := Konfi-Castle-Kasino.exe +else + EXECUTABLE := Konfi-Castle-Kasino + UNAME_S := $(shell uname -s) + ifeq ($(UNAME_S),Darwin) + SED_INPLACE := sed -i '' + endif +endif + +GOFILES := $(shell find . -name "*.go" -type f ! -path "./vendor/*" ! -path "*/bindata.go") +GOFMT ?= gofmt -s + +GOFLAGS := -i -v +EXTRA_GOFLAGS ?= + +LDFLAGS := -X "main.Version=$(shell git describe --tags --always | sed 's/-/+/' | sed 's/^v//')" -X "main.Tags=$(TAGS)" + +PACKAGES ?= $(filter-out git.mowie.cc/konrad/Konfi-Castle-Kasino/integrations,$(shell go list ./... | grep -v /vendor/)) +SOURCES ?= $(shell find . -name "*.go" -type f) + +TAGS ?= + +TMPDIR := $(shell mktemp -d 2>/dev/null || mktemp -d -t 'kasino-temp') + +ifeq ($(OS), Windows_NT) + EXECUTABLE := Konfi-Castle-Kasino.exe +else + EXECUTABLE := Konfi-Castle-Kasino +endif + +ifneq ($(DRONE_TAG),) + VERSION ?= $(subst v,,$(DRONE_TAG)) +else + ifneq ($(DRONE_BRANCH),) + VERSION ?= $(subst release/v,,$(DRONE_BRANCH)) + else + VERSION ?= master + endif +endif + +.PHONY: all +all: build + +.PHONY: clean +clean: + go clean -i ./... + rm -rf $(EXECUTABLE) $(DIST) $(BINDATA) + +required-gofmt-version: + @go version | grep -q '\(1.7\|1.8\)' || { echo "We require go version 1.7 or 1.8 to format code" >&2 && exit 1; } + +.PHONY: fmt +fmt: required-gofmt-version + $(GOFMT) -w $(GOFILES) + +.PHONY: fmt-check +fmt-check: required-gofmt-version + # get all go files and run go fmt on them + @diff=$$($(GOFMT) -d $(GOFILES)); \ + if [ -n "$$diff" ]; then \ + echo "Please run 'make fmt' and commit the result:"; \ + echo "$${diff}"; \ + exit 1; \ + fi; + +.PHONY: install +install: $(wildcard *.go) + go install -v -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)' + +.PHONY: build +build: $(EXECUTABLE) + +$(EXECUTABLE): $(SOURCES) + go build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)' -o $@ + +.PHONY: release +release: release-dirs release-windows release-linux release-darwin release-copy release-check + +.PHONY: release-dirs +release-dirs: + mkdir -p $(DIST)/binaries $(DIST)/release + +.PHONY: release-windows +release-windows: + @hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \ + go get -u github.com/karalabe/xgo; \ + fi + xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'windows/*' -out Konfi-Castle-Kasino-$(VERSION) . +ifeq ($(CI),drone) + mv /build/* $(DIST)/binaries +endif + +.PHONY: release-linux +release-linux: + @hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \ + go get -u github.com/karalabe/xgo; \ + fi + xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'linux/*' -out Konfi-Castle-Kasino-$(VERSION) . +ifeq ($(CI),drone) + mv /build/* $(DIST)/binaries +endif + +.PHONY: release-darwin +release-darwin: + @hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \ + go get -u github.com/karalabe/xgo; \ + fi + xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '$(LDFLAGS)' -targets 'darwin/*' -out Konfi-Castle-Kasino-$(VERSION) . +ifeq ($(CI),drone) + mv /build/* $(DIST)/binaries +endif + +.PHONY: release-copy +release-copy: + $(foreach file,$(wildcard $(DIST)/binaries/$(EXECUTABLE)-*),cp $(file) $(DIST)/release/$(notdir $(file));) + +.PHONY: release-check +release-check: + cd $(DIST)/release; $(foreach file,$(wildcard $(DIST)/release/$(EXECUTABLE)-*),sha256sum $(notdir $(file)) > $(notdir $(file)).sha256;) \ No newline at end of file diff --git a/README.md b/README.md index 3382636..a26f8e5 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Konfi-Castle-Kasino +[![Build Status](https://drone.mowie.cc/api/badges/konrad/Konfi-Castle-Kasino/status.svg)](https://drone.mowie.cc/konrad/Konfi-Castle-Kasino) + TODO:: * ~~Coins updaten~~