# Build tools
#
# Targets (see each target for more information):
# image: creates tagged image
# clean: removes build artifacts and images
#
# Can be overriden via make release BUMP=
.PHONY: all image clean image-clean image-name
PROXY_URL ?= "[http://[user]:[pw]@[proxy-host-corporate]:[proxy-port]"
BUMPVERSION ?= BUMPVERSION
DTR ?= registry.gear.dtr.acme
BUILD_ARGS ?= --build-arg http_proxy=$(PROXY_URL) \
--build-arg https_proxy=$(PROXY_URL) \
--build-arg no_proxy="/var/run/docker.sock,localhost,\
127.0.0.1,localaddress,.localdomain.com,\
192.168.*,dtr"
IMAGE ?= rti-dds
REGISTRY ?= $(DTR)/$(SSO)
DOCKER_USER := $(shell if [ "$$OSTYPE" != "darwin"* ]; \
then USER_ARG="--user=`id -u`"; \
fi; \
echo "$$USER_ARG")
ARCH ?= amd64
ALL_ARCH := amd64 arm aarch64 i386
# Set default base image dynamically for each arch
ifeq ($(ARCH),amd64)
BASEIMAGE?=alpine
endif
ifeq ($(ARCH),arm)
BASEIMAGE?=armel/busybox
endif
ifeq ($(ARCH),arm64)
BASEIMAGE?=aarch64/busybox
endif
TAGS=latest
PROJ_ROOT := "$(shell pwd)"
NB_CORES ?= $(shell N=$$(cat /proc/cpuinfo | grep '^processor' | wc -l); \
[ $$N -gt 8 ] && echo 8 || echo $$N)
all: image
image: .image-$(ARCH) .tag.image
.image-$(ARCH):
@echo "Building ${IMAGE} ... "
# docker system prune
docker build --force-rm $(BUILD_ARGS) -t $(REGISTRY)/$(IMAGE) .
.tag.image:
@echo "taging ${IMAGE} ... "
docker tag $(REGISTRY)/$(IMAGE) $(REGISTRY)/$(IMAGE):$(TAGS)
clean: clean-containers clean-images
clean-images:
docker rmi -f $(REGISTRY)/$(IMAGE):$$tag;
clean-containers:
@echo "taging ${IMAGE} ... "
docker ps -a | grep $(IMAGE) | awk '{ print $$1 }' | xargs docker rm -f
run:
@echo "Running ${IMAGE} to DTR "
docker run --rm --tty --interactive --volume "$(PWD):/opt" $(REGISTRY)/$(IMAGE)
publish: image
@echo "Push ${IMAGE} to DTR "
docker push $(REGISTRY)/$(IMAGE):$(TAGS)
docker-clean-unused:
@echo "Clean unused ... "
docker system prune --all --force --volumes
docker-clean-none:
@echo "Clean unused ... "
docker run --rm -ti -v "$PWD:/opt/" $(REGISTRY)/$(IMAGE)
Last active
January 23, 2019 12:25
-
-
Save doevelopper/c741ad4133d7afcc71e46002af5badd7 to your computer and use it in GitHub Desktop.
# HELP
# This will output the help for each task
# thanks to https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html
#https://github.com/cretinon/jinade_sickrage
#https://github.com/altvnv/MakefileLib/blob/master/Makefile.mk
.PHONY: all image clean image-clean image-name
.PHONY: build build-arm push push-arm shell shell-arm run run-arm start start-arm stop stop-arm rm rm-arm release release-arm logs inspect
.DEFAULT_GOAL := help
RED=\033[91m
BLUE=\033[36m
COLOR_RESET=\033[0m
ENVDIR="./envs/"
LOGDIR="./logs/"
GID=$(shell id -g)
UID=$(shell id -u)
USER=$(shell id -u -n)
DOCKER = docker
DOCKERFILE?=Dockerfile
DOCKER_WORK_DIR = /var/wotkspace
BUILDFLAGS := --rm --force-rm --compress -f $(CURDIR)/$(ARCH)/$(DISTRIB)/Dockerfile -t $(IMAGETAG) \
--build-arg ARCH=$(ARCH) \
--build-arg DOCKERSRC=$(DOCKERSRC) \
--build-arg USERNAME=$(DOCKER_USER) \
--build-arg DISTRIB=$(DISTRIB) \
--build-arg PUID=$(PUID) \
--build-arg PGID=$(PGID) \
--label org.label-schema.build-date=$(shell date -u +"%Y-%m-%dT%H:%M:%SZ") \
--label org.label-schema.name=$(OPSYS)_$(SVCNAME) \
--label org.label-schema.schema-version="1.0" \
--label org.label-schema.url="https://github.com/$(GITHUB_USER)/$(OPSYS)_$(SVCNAME)" \
--label org.label-schema.usage="https://github.com/$(GITHUB_USER)/$(OPSYS)_$(SVCNAME)" \
--label org.label-schema.vcs-ref=$(shell git rev-parse --short HEAD) \
--label org.label-schema.vcs-url="https://github.com/$(GITHUB_USER)/$(OPSYS)_$(SVCNAME)" \
--label org.label-schema.vendor=$(DOCKER_USER)
run: $(DOCKERFILE)
@echo "Running ${IMAGE} to DTR "
docker run --rm --tty --interactive --volume "$(PWD):/home/workspace" $(REGISTRY)/$(IMAGE)
build: $(DOCKERFILE)
@echo "Building ${IMAGE}"
.PHONY: help
help: ## Shows make targets.
@echo '------------------------------------------------- Help -------------------------------------------------'
# @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {sub("\\\\n",sprintf("\n%22c"," "), $$2);printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
@echo ""
@echo "<make help> Display this help."
generate:
@echo "Generation make build system..."
cmake -E make_directory build
cmake -E chdir build cmake -DNDDSHOME=/opt/rti_connext_dds-5.3.1
-DCONNEXTDDS_ARCH=x64Linux3gcc5.4.0 -DRTICODEGEN_DIR=$NDDSHOME/bin
-DCMAKE_BUILD_TYPE=DEBUG ..
cmake -DNDDSHOME=/opt/rti_connext_dds-5.3.1 -DCONNEXTDDS_ARCH=x64Linux3gcc5.4.0
-DRTICODEGEN_DIR=$NDDSHOME/bin -DCMAKE_BUILD_TYPE=DEBUG ..
cmake -G"Unix Makefiles" -Bbuild -DNDDSHOME=/opt/rti_connext_dds-5.3.1
-DCONNEXTDDS_ARCH=x64Linux3gcc5.4.0 -DRTICODEGEN_DIR=$NDDSHOME/bin
-DCMAKE_BUILD_TYPE=DEBUG -H.
build:
cmake --build build --target all --config Debug -- -j8
all:
@echo "Silent goal use make generate instead"
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.