From 908232e85fdd8a5c8091cf60770316f6446fbd84 Mon Sep 17 00:00:00 2001 From: "aynic.os" Date: Sat, 22 May 2021 02:34:24 +0200 Subject: [PATCH] wip --- make/apps/def.docker.mk | 12 +++++------- make/apps/infra/infra.mk | 1 - make/def.mk | 25 ++++++++----------------- make/include.mk | 6 ++++++ make/monorepo/def.drone.mk | 2 +- make/monorepo/def.mk | 4 ++-- make/monorepo/update.mk | 4 ++-- stack/node.mk | 2 ++ 8 files changed, 26 insertions(+), 30 deletions(-) diff --git a/make/apps/def.docker.mk b/make/apps/def.docker.mk index 16db100..21f738f 100644 --- a/make/apps/def.docker.mk +++ b/make/apps/def.docker.mk @@ -27,7 +27,7 @@ DOCKER_BUILD_VARS ?= APP BRANCH DOCKER_GID DOCKER_REPOSITORY GID G DOCKER_COMPOSE_DOWN_OPTIONS ?= DOCKER_COMPOSE_UP_OPTIONS ?= -d DOCKER_GID ?= $(call gid,docker) -DOCKER_IMAGE_TAG ?= $(if $(filter-out $(APP),myos),$(if $(filter $(ENV),$(ENV_DEPLOY)),$(VERSION),$(if $(DRONE_BUILD_NUMBER),$(DRONE_BUILD_NUMBER),latest)),latest) +DOCKER_IMAGE_TAG ?= $(if $(filter $(ENV),$(ENV_DEPLOY)),$(VERSION),$(if $(DRONE_BUILD_NUMBER),$(DRONE_BUILD_NUMBER),latest)) DOCKER_IMAGES ?= $(patsubst %/,%,$(patsubst docker/%,%,$(dir $(wildcard docker/*/Dockerfile)))) DOCKER_PLUGIN ?= rexray/s3fs:latest DOCKER_PLUGIN_ARGS ?= $(foreach var,$(DOCKER_PLUGIN_VARS),$(if $(DOCKER_PLUGIN_$(var)),$(var)='$(DOCKER_PLUGIN_$(var))')) @@ -42,7 +42,7 @@ DOCKER_REGISTRY_USERNAME ?= $(USER) DOCKER_REGISTRY_REPOSITORY ?= $(addsuffix /,$(DOCKER_REGISTRY))$(subst $(USER),$(DOCKER_REGISTRY_USERNAME),$(DOCKER_REPOSITORY)) DOCKER_REPOSITORY ?= $(subst _,/,$(COMPOSE_PROJECT_NAME)) DOCKER_SHELL ?= $(SHELL) -ENV_VARS += COMPOSE_PROJECT_NAME COMPOSE_SERVICE_NAME DOCKER_BUILD_TARGET DOCKER_GID DOCKER_HOST_IFACE DOCKER_HOST_INET DOCKER_IMAGE_TAG DOCKER_REGISTRY DOCKER_REPOSITORY DOCKER_SHELL +ENV_VARS += COMPOSE_PROJECT_NAME COMPOSE_SERVICE_NAME DOCKER_BUILD_TARGET DOCKER_GID DOCKER_IMAGE_TAG DOCKER_REGISTRY DOCKER_REPOSITORY DOCKER_SHELL # https://github.com/docker/libnetwork/pull/2348 ifeq ($(HOST_SYSTEM), DARWIN) @@ -59,15 +59,13 @@ endif ifeq ($(DRONE), true) APP_PATH_PREFIX := $(DRONE_BUILD_NUMBER) -DOCKER_COMPOSE_DOWN_OPTIONS := --rmi all -v -DOCKER_COMPOSE_UP_OPTIONS := -d --build -DOCKER_BUILD_CACHE := false -ifneq ($(APP), myos) COMPOSE_PROJECT_NAME := $(USER)_$(ENV)$(APP_PATH_PREFIX)_$(APP) COMPOSE_SERVICE_NAME := $(subst _,-,$(COMPOSE_PROJECT_NAME)) +DOCKER_BUILD_CACHE := false +DOCKER_COMPOSE_DOWN_OPTIONS := --rmi all -v +DOCKER_COMPOSE_UP_OPTIONS := -d --build DOCKER_REPOSITORY := $(USER)/$(ENV)/$(APP) endif -endif ifeq ($(DOCKER), true) diff --git a/make/apps/infra/infra.mk b/make/apps/infra/infra.mk index 38a8146..0ec67f6 100644 --- a/make/apps/infra/infra.mk +++ b/make/apps/infra/infra.mk @@ -4,7 +4,6 @@ .PHONY: setup-sysctl setup-sysctl: ifeq ($(SETUP_SYSCTL),true) - $(call docker-run,--privileged alpine:latest,/bin/sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/enabled ||:' >/dev/null) $(foreach config,$(SETUP_SYSCTL_CONFIG),$(call docker-run,--privileged alpine:latest,sysctl -q -w $(config)) &&) true endif diff --git a/make/def.mk b/make/def.mk index 3f0dba8..772cf8d 100644 --- a/make/def.mk +++ b/make/def.mk @@ -15,6 +15,7 @@ BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD 2>/de CMDS ?= exec exec:% exec@% run run:% run@% COMMIT ?= $(shell git rev-parse $(BRANCH) 2>/dev/null) CONTEXT ?= $(if $(APP),APP BRANCH VERSION) $(shell awk 'BEGIN {FS="="}; $$1 !~ /^(\#|$$)/ {print $$1}' .env.dist 2>/dev/null) UID USER +CONTEXT_DEBUG ?= APP_DIR MAKE_DIR MAKE_SUBDIRS MAKEFILE_LIST MONOREPO_DIR env DEBUG ?= false DOCKER ?= true DOMAIN ?= localhost @@ -36,11 +37,13 @@ GIT_UPSTREAM_USER ?= $(or $(MONOREPO),$(USER)) HOSTNAME ?= $(shell hostname 2>/dev/null |sed 's/\..*//') MAKE_ARGS ?= $(foreach var,$(MAKE_VARS),$(if $($(var)),$(var)='$($(var))')) MAKE_VARS ?= ENV +MAKE_SUBDIRS ?= $(if $(filter myos,$(MYOS)),monorepo,$(if $(SUBREPO),subrepo )$(if $(APP),apps $(foreach type,$(APP_TYPE),$(if $(wildcard $(MAKE_DIR)/apps/$(type)),apps/$(type))))) MAKECMDVARS ?= $(strip $(foreach var, $(filter-out .VARIABLES,$(.VARIABLES)), $(if $(filter command\ line,$(origin $(var))),$(var)))) MAKECMDARGS ?= $(foreach var,$(MAKECMDVARS),$(var)='$($(var))') MAKETARGETS ?= $(filter-out $(.VARIABLES),$(shell $(MAKE) -qp 2>/dev/null |awk -F':' '/^[a-zA-Z0-9][^$$\#\/\t=]*:([^=]|$$)/ {print $$1}' |sort -u)) -MONOREPO ?= $(if $(wildcard .git),$(if $(wildcard */.gitrepo),$(notdir $(CURDIR))),$(if $(SUBREPO),$(notdir $(realpath $(CURDIR)/..)))) -MONOREPO_DIR ?= $(if $(wildcard .git),$(if $(wildcard */.gitrepo),$(CURDIR)),$(if $(SUBREPO),$(realpath $(CURDIR)/..))) +MONOREPO ?= $(if $(filter myos,$(MYOS)),$(notdir $(CURDIR)),$(if $(APP),$(notdir $(realpath $(CURDIR)/..)))) +MONOREPO_DIR ?= $(if $(MONOREPO),$(if $(filter myos,$(MYOS)),$(realpath $(CURDIR)),$(if $(APP),$(realpath $(CURDIR)/..)))) +MYOS ?= $(if $(filter $(MAKE_DIR),$(call pop,$(MAKE_DIR))),,$(call pop,$(MAKE_DIR))) PARAMETERS ?= parameters RECURSIVE ?= true SHARED ?= shared @@ -62,6 +65,8 @@ endif ifneq ($(DEBUG), true) .SILENT: +else +CONTEXT += $(CONTEXT_DEBUG) endif ifeq ($(DRYRUN), true) ECHO = $(if $(filter $(DRYRUN_IGNORE),true),,printf '${COLOR_BROWN}$(APP)${COLOR_RESET}[${COLOR_GREEN}$(MAKELEVEL)${COLOR_RESET}] ${COLOR_BLUE}$@${COLOR_RESET}:${COLOR_RESET} '; echo) @@ -85,23 +90,9 @@ HOST_SYSTEM := DARWIN endif endif -ifneq ($(MONOREPO),) -ifneq ($(wildcard .gitrepo),) -MYOS := ../myos -MAKE_SUBDIRS := subrepo -else -MYOS := myos -MAKE_SUBDIRS := monorepo -endif -endif - -ifneq ($(APP),) -MAKE_SUBDIRS += apps $(foreach type,$(APP_TYPE),$(if $(wildcard $(MAKE_DIR)/apps/$(type)),apps/$(type))) -endif - # include .env files include $(wildcard $(ENV_FILE)) -# include variables definitions +# include *.mk include $(wildcard $(MAKE_DIR)/def.*.mk) include $(foreach subdir,$(MAKE_SUBDIRS),$(wildcard $(MAKE_DIR)/$(subdir)/def.mk $(MAKE_DIR)/$(subdir)/def.*.mk)) diff --git a/make/include.mk b/make/include.mk index 581f0fe..0d409e7 100644 --- a/make/include.mk +++ b/make/include.mk @@ -1,5 +1,11 @@ +# MAKE_DIR: directory path of this file MAKE_DIR := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) +# MAKE_FILES: list of first files to load MAKE_FILES := env.mk def.mk +# include *.mk files +## $(MAKE_DIR)/$(MAKE_FILES) $(MAKE_DIR)/*.mk include $(wildcard $(patsubst %,$(MAKE_DIR)/%,$(MAKE_FILES))) $(filter-out $(wildcard $(patsubst %,$(MAKE_DIR)/%,include.mk def.*.mk $(MAKE_FILES))),$(wildcard $(MAKE_DIR)/*.mk)) +## $(MAKE_DIR)/*/*.mk include $(foreach subdir,$(MAKE_SUBDIRS),$(filter-out $(wildcard $(MAKE_DIR)/$(subdir)/def.mk $(MAKE_DIR)/$(subdir)/def.*.mk),$(wildcard $(MAKE_DIR)/$(subdir)/*.mk))) +## *.mk */*.mk include $(wildcard *.mk) $(filter-out $(wildcard $(MAKE_DIR)/*.mk),$(wildcard */def.mk */def.*.mk) $(filter-out $(wildcard */def.mk */def.*.mk),$(wildcard */*.mk))) diff --git a/make/monorepo/def.drone.mk b/make/monorepo/def.drone.mk index a0dbfd2..5b46b3f 100644 --- a/make/monorepo/def.drone.mk +++ b/make/monorepo/def.drone.mk @@ -6,7 +6,7 @@ COMMIT_BEFORE := $(if $(filter 0000000000000000000000000000000 endif ifneq (,$(filter $(DRONE_BUILD_EVENT),tag)) COMMIT_AFTER := $(DRONE_TAG) -COMMIT_BEFORE := $(shell git describe --abbrev=0 --tags $(DRONE_TAG)^) +COMMIT_BEFORE := $(shell git describe --abbrev=0 --tags $(DRONE_TAG)^ 2>/dev/null) endif APPS_IMPACTED := $(shell git diff --name-only $(COMMIT_BEFORE) $(COMMIT_AFTER) 2>/dev/null |awk -F '/' 'NF>1 && !seen[$$1]++ {print $$1}') # prevent drone to make down myos diff --git a/make/monorepo/def.mk b/make/monorepo/def.mk index 64fc974..9d7a06c 100644 --- a/make/monorepo/def.mk +++ b/make/monorepo/def.mk @@ -3,6 +3,6 @@ APPS_NAME ?= $(foreach app,$(APPS),$(or $(shell awk -F '=' CMDS += copy master-tag release release-check release-create release-finish subrepo-push update-subrepo CONTEXT += APPS APPS_NAME ENV RELEASE_INSTALL DIRS ?= $(MAKE_DIR) $(PARAMETERS) $(SHARED) -RELEASE_UPGRADE ?= $(filter v%, $(shell git tag -l |sort -V |awk '/$(RELEASE_INSTALL)/,0')) +RELEASE_UPGRADE ?= $(filter v%, $(shell git tag -l 2>/dev/null |sort -V |awk '/$(RELEASE_INSTALL)/,0')) RELEASE_VERSION ?= $(firstword $(subst -, ,$(VERSION))) -SUBREPOS ?= $(filter subrepo/%, $(shell git remote)) +SUBREPOS ?= $(filter subrepo/%, $(shell git remote 2>/dev/null)) diff --git a/make/monorepo/update.mk b/make/monorepo/update.mk index 0a86d69..d486f7f 100644 --- a/make/monorepo/update.mk +++ b/make/monorepo/update.mk @@ -14,7 +14,7 @@ update-$(PARAMETERS): $(PARAMETERS) $(PARAMETERS): SSH_PUBLIC_HOST_KEYS := $(PARAMETERS_REMOTE_HOST) $(SSH_BASTION_HOSTNAME) $(SSH_REMOTE_HOSTS) $(PARAMETERS): MAKE_VARS += SSH_BASTION_HOSTNAME SSH_BASTION_USERNAME SSH_PRIVATE_IP_RANGE SSH_PUBLIC_HOST_KEYS $(PARAMETERS): myos-base - $(call exec,[ -d $(PARAMETERS) ] && cd $(PARAMETERS) && git pull --quiet || git clone --quiet $(GIT_PARAMETERS_REPOSITORY)) + $(call exec,[ -d $(PARAMETERS) ] && cd $(PARAMETERS) && git pull --quiet || git clone --quiet $(APP_PARAMETERS_REPOSITORY)) ## Update release version number in .env .PHONY: update-release @@ -44,4 +44,4 @@ update-upstream: myos-base .git/refs/remotes/upstream/master $(call exec,git fetch --tags upstream) .git/refs/remotes/upstream/master: myos-base - $(call exec,git remote add upstream $(GIT_UPSTREAM_REPOSITORY) 2>/dev/null ||:) + $(call exec,git remote add upstream $(APP_UPSTREAM_REPOSITORY) 2>/dev/null ||:) diff --git a/stack/node.mk b/stack/node.mk index c80c6ec..ca0ba5e 100644 --- a/stack/node.mk +++ b/stack/node.mk @@ -1,3 +1,5 @@ +ENV_VARS += DOCKER_HOST_IFACE DOCKER_HOST_INET + .PHONY: node node: docker-network-create-$(DOCKER_NETWORK_PUBLIC) node-openssl stack-node-up