fix: Makefile targets
This commit is contained in:
parent
93bbc9d6b9
commit
12f05ec68e
@ -6,7 +6,7 @@ steps:
|
||||
- name: build-linux-amd64
|
||||
image: docker.io/volkerraschek/build-image:latest
|
||||
commands:
|
||||
- make --jobs=$(nproc) bin/linux/amd64/flucky
|
||||
- make
|
||||
when:
|
||||
event:
|
||||
- push
|
||||
|
9
.gitignore
vendored
9
.gitignore
vendored
@ -1,13 +1,6 @@
|
||||
# absolute files
|
||||
bin
|
||||
.env
|
||||
flucky
|
||||
flucky.rpm
|
||||
flucky.tar.bz2
|
||||
flucky.tar.gz
|
||||
flucky.tar.xz
|
||||
|
||||
# relative files
|
||||
**/bindata*.go
|
||||
|
||||
# directories
|
||||
.vscode/
|
||||
|
113
Makefile
113
Makefile
@ -1,16 +1,9 @@
|
||||
# VERSION
|
||||
# If no version is specified as a parameter of make, the last git hash
|
||||
# value is taken.
|
||||
VERSION?=$(shell git describe --abbrev=0)+$(shell date +'%Y%m%d%H%I%S')
|
||||
|
||||
# CONTAINER_RUNTIME
|
||||
# The CONTAINER_RUNTIME variable will be used to specified the path to a
|
||||
# container runtime. This is needed to start and run a container images.
|
||||
CONTAINER_RUNTIME?=$(shell which docker)
|
||||
CONTAINER_IMAGE_VERSION?=latest
|
||||
EXECUTABLE:=flucky
|
||||
|
||||
# EXECUTABLE
|
||||
EXECUTABLE=flucky
|
||||
DESTDIR?=
|
||||
PREFIX?=/usr/local
|
||||
|
||||
# BINARIES
|
||||
# ==============================================================================
|
||||
@ -55,6 +48,28 @@ bin/tmp/${EXECUTABLE}:
|
||||
GOPRIVATE=$(shell go env GOPRIVATE) \
|
||||
go build -ldflags "-X main.version=${VERSION:v%=%}" -o ${@}
|
||||
|
||||
# COMPLETIONS
|
||||
# ==============================================================================
|
||||
bin/tmp/${EXECUTABLE}.sh: bin/tmp/${EXECUTABLE}
|
||||
bin/tmp/${EXECUTABLE} completion bash > ${@}
|
||||
|
||||
bin/tmp/${EXECUTABLE}.fish: bin/tmp/${EXECUTABLE}
|
||||
bin/tmp/${EXECUTABLE} completion fish > ${@}
|
||||
|
||||
bin/tmp/${EXECUTABLE}.zsh: bin/tmp/${EXECUTABLE}
|
||||
bin/tmp/${EXECUTABLE} completion zsh > ${@}
|
||||
|
||||
# INSTALL
|
||||
# ==============================================================================
|
||||
PHONY+=install
|
||||
install: bin/tmp/${EXECUTABLE} bin/tmp/${EXECUTABLE}.sh bin/tmp/${EXECUTABLE}.fish bin/tmp/${EXECUTABLE}.zsh
|
||||
install --directory ${DESTDIR}${PREFIX}/bin
|
||||
install --mode 755 bin/tmp/${EXECUTABLE} ${DESTDIR}${PREFIX}/bin/${EXECUTABLE}
|
||||
install --directory ${DESTDIR}/etc/bash_completion.d/
|
||||
install --mode 755 bin/tmp/${EXECUTABLE}.sh ${DESTDIR}/etc/bash_completion.d/${EXECUTABLE}.sh
|
||||
install --directory ${DESTDIR}/usr/share/fish/vendor_functions.d/
|
||||
install --mode 755 bin/tmp/${EXECUTABLE}.fish ${DESTDIR}/usr/share/fish/vendor_functions.d/${EXECUTABLE}.fish
|
||||
|
||||
# CLEAN
|
||||
# ==============================================================================
|
||||
PHONY+=clean
|
||||
@ -67,86 +82,10 @@ PHONY+=test/unit
|
||||
test/unit:
|
||||
go test -v -race -coverprofile=coverage.txt -covermode=atomic -timeout 600s -count=1 ./pkg/...
|
||||
|
||||
PHONY+=test/coverage
|
||||
test/coverage: test/unit
|
||||
go tool cover -html=coverage.txt
|
||||
|
||||
# CONTAINER IMAGE STEPS
|
||||
# ==============================================================================
|
||||
PHONY+=container-image/build/amd64
|
||||
container-image/build/amd64:
|
||||
${CONTAINER_RUNTIME} build \
|
||||
--build-arg BASE_IMAGE=docker.io/library/alpine:3.11.2 \
|
||||
--build-arg BUILD_IMAGE=docker.io/volkerraschek/build-image:latest \
|
||||
--build-arg EXECUTABLE=${EXECUTABLE} \
|
||||
--build-arg EXECUTABLE_TARGET=bin/linux/amd64/${EXECUTABLE} \
|
||||
--build-arg GOPROXY=$(shell go env GOPROXY) \
|
||||
--build-arg GOPRIVATE=$(shell go env GOPRIVATE) \
|
||||
--build-arg VERSION=${VERSION} \
|
||||
--file Dockerfile \
|
||||
--no-cache \
|
||||
--tag docker.io/volkerraschek/flucky:${CONTAINER_IMAGE_VERSION} \
|
||||
--tag volkerraschek/flucky:${CONTAINER_IMAGE_VERSION} \
|
||||
.
|
||||
|
||||
PHONY+=container-image/push/amd64
|
||||
container-image/push/amd64: container-image/build/amd64
|
||||
${CONTAINER_RUNTIME} login docker.io \
|
||||
--username ${CONTAINER_IMAGE_REGISTRY_USER} \
|
||||
--password ${CONTAINER_IMAGE_REGISTRY_PASSWORD}
|
||||
${CONTAINER_RUNTIME} push docker.io/volkerraschek/flucky:${CONTAINER_IMAGE_VERSION}
|
||||
|
||||
# CONTAINER STEPS - BINARY
|
||||
# ==============================================================================
|
||||
# current os
|
||||
PHONY+=container-run/${EXECUTABLE}
|
||||
container-run/${EXECUTABLE}:
|
||||
$(MAKE) container-run COMMAND=${@:container-run/%=%}
|
||||
|
||||
# build all binaries for any operating system
|
||||
PHONY+=container-run/all
|
||||
container-run/all:
|
||||
$(MAKE) container-run COMMAND=${@:container-run/%=%}
|
||||
|
||||
PHONY+=${EXECUTABLE_TARGETS:%=container-run/%}
|
||||
${EXECUTABLE_TARGETS:%=container-run/%}:
|
||||
$(MAKE) container-run COMMAND=${@:container-run/%=%}
|
||||
|
||||
# CONTAINER STEPS - CLEAN
|
||||
# ==============================================================================
|
||||
PHONY+=container-run/clean
|
||||
container-run/clean:
|
||||
$(MAKE) container-run COMMAND=${@:container-run/%=%}
|
||||
|
||||
# CONTAINER STEPS - TEST
|
||||
# ==============================================================================
|
||||
PHONY+=container-run/test/unit
|
||||
container-run/test/unit:
|
||||
$(MAKE) container-run COMMAND=${@:container-run/%=%}
|
||||
|
||||
# GENERAL CONTAINER COMMAND
|
||||
# ==============================================================================
|
||||
PHONY+=container-run
|
||||
container-run:
|
||||
${CONTAINER_RUNTIME} run \
|
||||
--env GOPROXY=$(shell go env GOPROXY) \
|
||||
--env GOPRIVATE=$(shell go env GOPRIVATE) \
|
||||
--rm \
|
||||
--volume ${PWD}:/workspace \
|
||||
--volume /var/run/docker.sock:/var/run/docker.sock \
|
||||
docker.io/volkerraschek/build-image:latest \
|
||||
make ${COMMAND} \
|
||||
VERSION=${VERSION:v%=%}
|
||||
|
||||
# REMOTE
|
||||
# ==============================================================================
|
||||
PHONY+=${FLUCKY_REMOTE:%=remote/%}
|
||||
remote/${FLUCKY_REMOTE}: bin/linux/arm/7/${EXECUTABLE}
|
||||
scp bin/linux/arm/7/${EXECUTABLE} root@${FLUCKY_REMOTE}:/usr/local/bin/${EXECUTABLE}
|
||||
# ssh root@${FLUCKY_REMOTE} 'mkdir --parent /etc/bash_completion.d || true'
|
||||
# ssh root@${FLUCKY_REMOTE} 'flucky completion bash > /etc/bash_completion.d/flucky.sh && chmod +x /etc/bash_completion.d/flucky.sh'
|
||||
# ssh root@${FLUCKY_REMOTE} 'flucky completion zsh > /etc/bash_completion.d/flucky.zsh && chmod +x /etc/bash_completion.d/flucky.zsh'
|
||||
ssh root@${FLUCKY_REMOTE} 'chmod +x /usr/local/bin/${EXECUTABLE}'
|
||||
|
||||
# PHONY
|
||||
# ==============================================================================
|
||||
# Declare the contents of the PHONY variable as phony. We keep that information
|
||||
|
Loading…
Reference in New Issue
Block a user