mirror of
https://github.com/empayre/fleet.git
synced 2024-11-06 17:05:18 +00:00
1d23c1452d
Older files building up in the assets directory was causing binary sizes to become larger over time. This change should keep binary sizes consistent.
221 lines
6.9 KiB
Makefile
221 lines
6.9 KiB
Makefile
.PHONY: build clean clean-assets
|
|
|
|
export GO111MODULE=on
|
|
|
|
PATH := $(GOPATH)/bin:$(shell npm bin):$(PATH)
|
|
VERSION = $(shell git describe --tags --always --dirty)
|
|
BRANCH = $(shell git rev-parse --abbrev-ref HEAD)
|
|
REVISION = $(shell git rev-parse HEAD)
|
|
REVSHORT = $(shell git rev-parse --short HEAD)
|
|
USER = $(shell whoami)
|
|
DOCKER_IMAGE_NAME = fleetdm/fleet
|
|
|
|
ifneq ($(OS), Windows_NT)
|
|
# If on macOS, set the shell to bash explicitly
|
|
ifeq ($(shell uname), Darwin)
|
|
SHELL := /bin/bash
|
|
endif
|
|
|
|
# The output binary name is different on Windows, so we're explicit here
|
|
OUTPUT = fleet
|
|
|
|
# To populate version metadata, we use unix tools to get certain data
|
|
GOVERSION = $(shell go version | awk '{print $$3}')
|
|
NOW = $(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
else
|
|
# The output binary name is different on Windows, so we're explicit here
|
|
OUTPUT = fleet.exe
|
|
|
|
# To populate version metadata, we use windows tools to get the certain data
|
|
GOVERSION_CMD = "(go version).Split()[2]"
|
|
GOVERSION = $(shell powershell $(GOVERSION_CMD))
|
|
NOW = $(shell powershell Get-Date -format s)
|
|
endif
|
|
|
|
ifndef CIRCLE_PR_NUMBER
|
|
DOCKER_IMAGE_TAG = ${REVSHORT}
|
|
else
|
|
DOCKER_IMAGE_TAG = dev-${CIRCLE_PR_NUMBER}-${REVSHORT}
|
|
endif
|
|
|
|
ifdef CIRCLE_TAG
|
|
DOCKER_IMAGE_TAG = ${CIRCLE_TAG}
|
|
endif
|
|
|
|
ifndef MYSQL_PORT_3306_TCP_ADDR
|
|
MYSQL_PORT_3306_TCP_ADDR = 127.0.0.1
|
|
endif
|
|
|
|
KIT_VERSION = "\
|
|
-X github.com/kolide/kit/version.appName=${APP_NAME} \
|
|
-X github.com/kolide/kit/version.version=${VERSION} \
|
|
-X github.com/kolide/kit/version.branch=${BRANCH} \
|
|
-X github.com/kolide/kit/version.revision=${REVISION} \
|
|
-X github.com/kolide/kit/version.buildDate=${NOW} \
|
|
-X github.com/kolide/kit/version.buildUser=${USER} \
|
|
-X github.com/kolide/kit/version.goVersion=${GOVERSION}"
|
|
|
|
all: build
|
|
|
|
define HELP_TEXT
|
|
|
|
Makefile commands
|
|
|
|
make deps - Install dependent programs and libraries
|
|
make generate - Generate and bundle required all code
|
|
make generate-go - Generate and bundle required go code
|
|
make generate-js - Generate and bundle required js code
|
|
make generate-dev - Generate and bundle required code in a watch loop
|
|
|
|
make clean - Clean all build artifacts
|
|
make clean-assets - Clean assets only
|
|
|
|
make build - Build the code
|
|
make package - Build rpm and deb packages for linux
|
|
|
|
make test - Run the full test suite
|
|
make test-go - Run the Go tests
|
|
make test-js - Run the JavaScript tests
|
|
|
|
make lint - Run all linters
|
|
make lint-go - Run the Go linters
|
|
make lint-js - Run the JavaScript linters
|
|
make lint-scss - Run the SCSS linters
|
|
make lint-ts - Run the TypeScript linters
|
|
|
|
endef
|
|
|
|
help:
|
|
$(info $(HELP_TEXT))
|
|
|
|
.prefix:
|
|
ifeq ($(OS), Windows_NT)
|
|
if not exist build mkdir build
|
|
else
|
|
mkdir -p build/linux
|
|
mkdir -p build/darwin
|
|
endif
|
|
|
|
.pre-build:
|
|
$(eval GOGC = off)
|
|
$(eval CGO_ENABLED = 0)
|
|
|
|
.pre-fleet:
|
|
$(eval APP_NAME = fleet)
|
|
|
|
.pre-fleetctl:
|
|
$(eval APP_NAME = fleetctl)
|
|
|
|
build: fleet fleetctl
|
|
|
|
fleet: .prefix .pre-build .pre-fleet
|
|
CGO_ENABLED=0 go build -tags full -o build/${OUTPUT} -ldflags ${KIT_VERSION} ./cmd/fleet
|
|
|
|
fleetctl: .prefix .pre-build .pre-fleetctl
|
|
CGO_ENABLED=0 go build -tags full -o build/fleetctl -ldflags ${KIT_VERSION} ./cmd/fleetctl
|
|
|
|
lint-js:
|
|
yarn lint
|
|
|
|
lint-go:
|
|
go vet ./...
|
|
|
|
lint: lint-go lint-js
|
|
|
|
test-go:
|
|
go test -tags full ./...
|
|
|
|
analyze-go:
|
|
go test -tags full -race -cover ./...
|
|
|
|
test-js:
|
|
npm test
|
|
|
|
test: lint test-go test-js
|
|
|
|
generate: clean-assets generate-js generate-go
|
|
|
|
generate-js: clean-assets .prefix
|
|
NODE_ENV=production webpack --progress --colors
|
|
|
|
generate-go: .prefix
|
|
go-bindata -pkg=bindata -tags full \
|
|
-o=server/bindata/generated.go \
|
|
frontend/templates/ assets/... server/mail/templates
|
|
|
|
# we first generate the webpack bundle so that bindata knows to watch the
|
|
# output bundle file. then, generate debug bindata source file. finally, we
|
|
# run webpack in watch mode to continuously re-generate the bundle
|
|
generate-dev: .prefix
|
|
NODE_ENV=development webpack --progress --colors
|
|
go-bindata -debug -pkg=bindata -tags full \
|
|
-o=server/bindata/generated.go \
|
|
frontend/templates/ assets/... server/mail/templates
|
|
NODE_ENV=development webpack --progress --colors --watch
|
|
|
|
deps: deps-js deps-go
|
|
|
|
deps-js:
|
|
yarn
|
|
|
|
deps-go:
|
|
GO111MODULE=off go get -u \
|
|
github.com/kolide/go-bindata/go-bindata
|
|
go mod download
|
|
|
|
migration:
|
|
go run github.com/fleetdm/goose/cmd/goose -dir server/datastore/mysql/migrations/tables create $(name)
|
|
|
|
clean: clean-assets
|
|
ifeq ($(OS), Windows_NT)
|
|
if exist build rmdir /s/q build
|
|
if exist vendor rmdir /s/q vendor
|
|
if exist assets\bundle.js del assets\bundle.js
|
|
else
|
|
rm -rf build vendor
|
|
rm -f assets/bundle.js
|
|
endif
|
|
|
|
clean-assets:
|
|
git clean -fx assets
|
|
|
|
docker-build-release: xp-fleet xp-fleetctl
|
|
docker build -t "${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}" .
|
|
docker tag "${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}" fleetdm/fleet:${VERSION}
|
|
docker tag "${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}" fleetdm/fleet:latest
|
|
|
|
docker-push-release: docker-build-release
|
|
docker push "${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}"
|
|
docker push fleetdm/fleet:${VERSION}
|
|
docker push fleetdm/fleet:latest
|
|
|
|
docker-build-circle:
|
|
@echo ">> building docker image"
|
|
CGO_ENABLED=0 GOOS=linux go build -o build/linux/${OUTPUT} -ldflags ${KIT_VERSION} ./cmd/fleet
|
|
docker build -t "${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}" .
|
|
docker push "${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}"
|
|
|
|
.pre-binary-bundle:
|
|
rm -rf build/binary-bundle
|
|
mkdir -p build/binary-bundle/linux
|
|
mkdir -p build/binary-bundle/darwin
|
|
|
|
xp-fleet: .pre-binary-bundle .pre-fleet generate
|
|
CGO_ENABLED=0 GOOS=linux go build -tags full -o build/binary-bundle/linux/fleet -ldflags ${KIT_VERSION} ./cmd/fleet
|
|
CGO_ENABLED=0 GOOS=darwin go build -tags full -o build/binary-bundle/darwin/fleet -ldflags ${KIT_VERSION} ./cmd/fleet
|
|
CGO_ENABLED=0 GOOS=windows go build -tags full -o build/binary-bundle/windows/fleet.exe -ldflags ${KIT_VERSION} ./cmd/fleet
|
|
|
|
xp-fleetctl: .pre-binary-bundle .pre-fleetctl generate-go
|
|
CGO_ENABLED=0 GOOS=linux go build -tags full -o build/binary-bundle/linux/fleetctl -ldflags ${KIT_VERSION} ./cmd/fleetctl
|
|
CGO_ENABLED=0 GOOS=darwin go build -tags full -o build/binary-bundle/darwin/fleetctl -ldflags ${KIT_VERSION} ./cmd/fleetctl
|
|
CGO_ENABLED=0 GOOS=windows go build -tags full -o build/binary-bundle/windows/fleetctl.exe -ldflags ${KIT_VERSION} ./cmd/fleetctl
|
|
|
|
binary-bundle: xp-fleet xp-fleetctl
|
|
cd build/binary-bundle && zip -r fleet.zip darwin/ linux/ windows/
|
|
cd build/binary-bundle && mkdir fleetctl-macos && cp darwin/fleetctl fleetctl-macos && tar -czf fleetctl-macos.tar.gz fleetctl-macos
|
|
cd build/binary-bundle && mkdir fleetctl-linux && cp linux/fleetctl fleetctl-linux && tar -czf fleetctl-linux.tar.gz fleetctl-linux
|
|
cd build/binary-bundle && mkdir fleetctl-windows && cp windows/fleetctl.exe fleetctl-windows && tar -czf fleetctl-windows.tar.gz fleetctl-windows
|
|
cd build/binary-bundle && cp windows/fleetctl.exe . && zip fleetctl.exe.zip fleetctl.exe
|
|
cd build/binary-bundle && shasum -a 256 fleet.zip fleetctl.exe.zip fleetctl-macos.tar.gz fleetctl-windows.tar.gz fleetctl-linux.tar.gz
|
|
|